方式1–/sys/block/

判断cat /sys/block//queue/rotational的返回值(其中为你的硬盘设备名称,例如sda等等),如果返回1则表示磁盘可旋转,那么就是HDD了;反之,如果返回0,则表示磁盘不可以旋转,那么就有可能是SSD了。

[root@dm2 /root]
#grep ^ /sys/block/*/queue/rotational
/sys/block/dm-0/queue/rotational:1
/sys/block/dm-1/queue/rotational:1
/sys/block/dm-2/queue/rotational:1
/sys/block/dm-3/queue/rotational:1
/sys/block/dm-4/queue/rotational:1
/sys/block/dm-5/queue/rotational:1
/sys/block/dm-6/queue/rotational:1
/sys/block/sda/queue/rotational:1
/sys/block/sdb/queue/rotational:1
/sys/block/sdc/queue/rotational:1
/sys/block/sdd/queue/rotational:1
/sys/block/sde/queue/rotational:1
/sys/block/sr0/queue/rotational:1

[root@dm2 /root]
#cat /sys/block/sda/queue/rotational
1

这种方法有个问题,那就是/sys/block/下面不只有硬盘,还可能有别的块设备,它们都在干扰你的判断。

方式2–lsblk

使用lsblk命令进行判断,参数-d表示显示设备名称,参数-o表示仅显示特定的列。

[root@dm2 /root]
#lsblk -o name,rota | grep sda
sda                    1
├─sda1                 1
├─sda2                 1
└─sda3                 1
方式3–fdisk

可以通过fdisk命令查看,参数-l表示列出磁盘详情。在输出结果中,以Disk开头的行表示磁盘简介,下面是一些详细参数,我们可以试着在这些参数中寻找一些HDD特有的关键字,比如:”heads”(磁头),”track”(磁道)和”cylinders”(柱面)。

下面分别是HDD和SSD的输出结果,HDD拷贝自网络

  • HDD磁盘
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d
  • nvme磁盘
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xad91c214
方法4–smartctl

可以使用第三方工具判断,比如smartctl,这些工具的结果展示比较直观,但是需要单独安装smarttools。

smartctl  -a /dev/sdf | grep Rotation
  • ssd 会输出如下结果
Rotation Rate:    Solid State Device
  • hdd 会输出如下结果
Rotation Rate:    7200 rpm
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐