我写了以下javascript代码。我需要确定机器是否正在使用SSD驱动器以及它是否是启动驱动器。该解决方案使用MSFT_PhysicalDisk WMI接口。
function main() { var retval= false; // MediaType - 0 Unknown, 3 HDD, 4 SSD // SpindleSpeed - -1 has rotational speed, 0 has no rotational speed (SSD) // DeviceID - 0 boot device var objWMIService = GetObject("winmgmts:\\\\.\\root\\Microsoft\\Windows\\Storage"); var colItems = objWMIService.ExecQuery("select * from MSFT_PhysicalDisk"); var enumItems = new Enumerator(colItems); for (; !enumItems.atEnd(); enumItems.moveNext()) { var objItem = enumItems.item(); if (objItem.MediaType == 4 && objItem.SpindleSpeed == 0) { if (objItem.DeviceID ==0) { retval=true; } } } if (retval) { WScript.Echo("You have SSD Drive and it is your boot drive."); } else { WScript.Echo("You do not have SSD Drive"); } return retval; } main();
写文本文件 读取文本文件
重复10000次......
10000/elapsed
对于ssd会更高,python3:
def ssd_test(): doc = 'ssd_test.txt' start = time.time() for i in range(10000): with open(doc, 'w+') as f: f.write('ssd test') f.close() with open(doc, 'r') as f: ret = f.read() f.close() stop = time.time() elapsed = stop - start ios = int(10000/elapsed) hd = 'HDD' if ios > 6000: # ssd>8000; hdd <4000 hd = 'SSD' print('detecting hard drive type by read/write speed') print('ios', ios, 'hard drive type', hd) return hd
我要回答这个古老而又非常重要的问题的两分钱......如果通过SCSI访问磁盘,那么您(可能)将能够使用SCSI INQUIRY命令来请求其转速。调用VPD(重要产品数据)页面 Block Device Characteristics 并有一个数字 0xB1 。此页面的第4和第5行包含一个含有以下含义的数字:
Block Device Characteristics
0xB1
所以,SSD必须具备 0001h 在这个领域里。该 T10.org 有关此页面的文档可以找到 这里 。
0001h
T10.org
但是,这个标准的实施状况对我来说并不清楚。
这个命令 lsblk -d -o name,rota 列出你的驱动器,如果它是一个旋转磁盘,则ROTA为1,如果是SSD,则为0。 示例输出:
lsblk -d -o name,rota
NAME ROTA sda 1 sdb 0
的 终于可靠的解决方案! 强> 其中两个,其实!
检查/ sys / block / sdX / queue / rotation,其中 sdX的 是驱动器名称。如果它是0,那么你正在处理SSD,1表示普通的硬盘。
我不能把它放在引入它的Linux版本上,但是它存在于Ubuntu的Linux 3.2和vanilla Linux 3.6中,并且不存在于vanilla 2.6.38中。甲骨文也 回迁 它是基于2.6.32的Unbreakable Enterprise内核5.5。
还有一个ioctl来检查驱动器是否是自Linux 3.3引入的 这个提交 。但是,使用sysfs通常更方便。
你可以通过跑步获得幸运
smartctl -i sda
从 了smartmontools 。几乎所有SSD都在Model字段中都有SSD。不过不保证。