在POSIX OS上检测SSD存储设备

时间:2014-05-05 11:52:45

标签: c++ hard-drive ssd

我正在开发一个OS便携式程序,该程序可以从检测物理存储设备是SSD还是普通旧的旋转磁盘中受益。

在Linux上有:

/sys/block/sdX/queue/rotational

如果是SSD,则返回0或1,但我不确定这是否是最佳方式。

在Windows和UNIX上我还没有找到任何方法来检测它,也许我应该使用ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR并检查搜索功能(在SSD存储设备上应该非常低),或者使用{{1检查标称介质旋转速率(在SSD存储设备上也应该非常低)。

有关如何在POSIX兼容操作系统上检测SSD磁盘的任何建议吗?

2 个答案:

答案 0 :(得分:2)

相关:https://unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is-an-ssd-or-an-hdd

IMO虽然。您可以使用POSIX方法来确定操作系统,并使用各种方法来检测SSD,当无法确定时,只需询问最终用户,如果他们不知道,则具有安全默认值。我想如果没有符合POSIX标准的方法,那就是我会做的事情(但我可能会首先查看POSIX邮件列表)。我希望这会有所帮助。

答案 1 :(得分:2)

我将回应Lorenzo Gatti上面的评论,他说,做到这一点的最佳方式几乎肯定是向用户公开的选项。没有可移植的方法这样做,如果其他操作系统(特别是较旧的操作系统,除非你能保证用户使用的是当前的操作系统,这是一个问题),我也不会感到惊讶此

真的,一个复选框沿着"我正在使用固态驱动器",默认为关闭,可能是最好的选择,特别是因为可能有SSD的那些(用于现在,至少)技术娴熟,足以知道他们拥有什么。