Linux 基础教程

Linux 参考手册

Linux 笔记

如何查看或判断磁盘/硬盘是固态硬盘(SSD)还是机械硬盘(HDD)

Linux lsblk 命令 Linux lsblk 命令


想要判断 Linux 下磁盘是固态硬盘(solid-state drive)还是机械硬盘(hard disk),有多种方法。

方法一,cat /sys/block/{fs_name}/queue/rotational

Linux 可以自动判定硬盘是否是 SSD,从 2.6.29 的内核版本之后,可以通过如下命令查看硬盘是不是 ssd:

cat /sys/block/{fs_name}/queue/rotational

其中,{fs_name} 是你的硬盘设备名称,例如 vda、vdb、sda 等等。

若上述命令返回 1 表示机械硬盘(hard disk),若返回 0,则表示固态硬盘(ssd)。

需要注意的是,如果设备是例如 RAID 这样的逻辑设备,上述命令可能不可用。

示例如下:

[deme@Linux ~]$ cat /sys/block/vdb/queue/rotational
1
[deme@Linux ~]$ grep ^ /sys/block/*/queue/rotational
/sys/block/vda/queue/rotational:1
/sys/block/vdb/queue/rotational:1

方法二,利用 lsblk 命令

使用 lsblk 命令进行判断,该命令属于 util-linux(一个 Linux 标准软件包)的一部分,参数 -d 表示显示设备名称,参数 -o 表示仅显示特定的列。

[deme@Linux ~]$ lsblk -d -o name,rota
NAME ROTA
vda     1
vdb     1

其中 ROTA 表示 rotational device,1 代表是机械硬盘,0 则就是 ssd 了。

方法三,使用 fdisk 命令

使用 fdisk 命令,后面加 -l 选项表示查看磁盘详细信息,如果输出的详细信息中包含机械硬盘中有的 heads(磁头)、track(磁道)、cylinders(柱面)等概念,那表示是该磁盘是 HDD,否则很有可能是 SSD。

下面分别列出了 HDD 和 SSD 的示例:

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
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

方法四,使用第三方工具 smartctl

smartctl 是管理和监控存储硬件工具 smartmontools 的两个程序工具之一,另一个是 smartd 程序工具,可以通过如下命令查看磁盘信息:

smartctl -a /dev/{fs_name}

示例如下:

[deme@Linux ~]$ smartctl -a /dev/disk1s1

如果看到如下一行信息,表示是固态硬盘(SSD)。

......
Rotation Rate:    Solid State Device
......