16

我正在开发一个操作系统可移植程序,该程序将受益于检测物理存储设备是 SSD 还是普通的旧旋转磁盘。

在 Linux 上有:

/sys/block/sdX/queue/rotational

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

在 Windows 和 UNIX 上,我还没有找到任何检测方法,也许我应该使用ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR并检查搜索速度(在 SSD 存储设备上应该非常低),或者可能用于DeviceIoControl检查标称媒体旋转速率(这也应该在 SSD 存储设备上非常低)。

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

4

2 回答 2

2

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

海事组织虽然。您可以使用 POSIX 方法来确定操作系统,并且有多种方法来检测 SSD,当无法确定时,只需询问最终用户,如果他们不知道,请设置一个安全的默认值。我想如果没有符合 POSIX 的方法,我会这样做(但我可能也会先检查 POSIX 邮件列表)。我希望这有帮助。

于 2014-05-08T13:10:39.793 回答
2

我将回应 Lorenzo Gatti 的上述评论,即执行此操作的最佳方法几乎可以肯定是向用户公开的选项。没有可移植的方式来做到这一点,如果其他操作系统(尤其是较旧的操作系统,这是一个问题,除非您有一些保证您的用户正在使用某种最新的操作系统)无法做到这一点,我不会感到惊讶。

确实,“我正在使用固态驱动器”的复选框,默认为关闭,可能是最好的选择,特别是因为那些可能拥有 SSD 的人(至少目前)精通技术足以知道他们拥有什么。

于 2014-05-08T15:48:23.510 回答