转载 Linux下判断磁盘是SSD还是HDD的3种方法

判断 linux 磁盘是固态硬盘还是机械硬盘的方法

方法一

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

如果返回 0,则表示磁盘不可以旋转,那么就是 SSD 了。

  1. [pythontab@pythontab.com ~]$ cat /sys/block/sda/queue/rotational
  2. 0
  3. [pythontab@pythontab.com ~]$ grep ^ /sys/block/*/queue/rotational
  4. /sys/block/ram0/queue/rotational:1
  5. /sys/block/sda/queue/rotational:0
  6. /sys/block/sdb/queue/rotational:0
  7. /sys/block/sdc/queue/rotational:0
  8. /sys/block/sdd/queue/rotational:0

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

方法二

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

  1. [pythontab@pyhontab.com ~]$ lsblk -d -o name,rota
  2. NAME ROTA
  3. sda 0
  4. sdb 0
  5. sdc 0
  6. sdd 0

这种方法的优势在于它只列出了你要看的内容,结果比较简洁明了。还是那个规则,ROTA 是 1 的表示可以旋转,反之则不能旋转。

方法三

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

下面分别是 HDD 和 SSD 的输出结果

  1. Disk /dev/sda: 120.0 GB, 120034123776 bytes
  2. 255 heads, 63 sectors/track, 14593 cylinders
  3. Units = cylinders of 16065 * 512 = 8225280 bytes
  4. Sector size (logical/physical): 512 bytes / 512 bytes
  5. I/O size (minimum/optimal): 512 bytes / 512 bytes
  6. Disk identifier: 0x00074f7d
  7. [pythontab@pyhontab.com ~]$ sudo fdisk -l
  8. Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
  9. Units: sectors of 1 * 512 = 512 bytes
  10. Sector size (logical/physical): 512 bytes / 512 bytes
  11. I/O size (minimum/optimal): 512 bytes / 512 bytes
  12. Disklabel type: dos
  13. Disk identifier: 0xad91c214
  14. ......

其他方法

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