我准备发布一个只对普通硬盘有效的工具,而不是SSD (固态硬盘)。事实上,它不应该与SSD一起使用,因为它会导致大量的读/写,而没有真正的有效性。
有谁知道一种检测给定驱动器是否为固态硬盘的方法?
发布于 2009-05-25 22:23:17
检测SSD并不像dseifert所说的那样不可能。linux的libata (http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-04/msg03625.html)已经有了一些进展,尽管它似乎还没有准备好供用户使用。
我绝对理解为什么需要这样做。这基本上就是链表和数组之间的区别。在SSD上进行碎片整理通常会适得其反。
发布于 2012-10-20 02:04:58
终于是一个可靠的解决方案了!实际上,其中的两个!
检查/sys/block/ sdX /queue/rotational,其中sdX是驱动器名称。如果它是0,你处理的是SSD,1表示普通的老式硬盘。
我不能确定它是在哪里引入的Linux版本,但它存在于Ubuntu的Linux3.2和vanilla Linux3.6中,而不存在于vanilla 2.6.38中。甲骨文也将其backported到他们基于2.6.32的牢不可破的企业内核5.5。
还有一个ioctl来检查驱动器是否可以从Linux3.3开始旋转,这是由this commit引入的。不过,使用sysfs通常更方便。
发布于 2009-05-25 22:22:15
你可以通过运行
smartctl -i sda
来自Smartmontools。几乎所有SSD的型号字段中都有SSD。但不能保证。
https://stackoverflow.com/questions/908188
复制相似问题