最可靠方法是读取 /sys/block/*/queue/rotational:值为0表示SSD/NVMe,1表示HDD;需注意RAID虚拟盘该值恒为1,此时须用厂商工具如perccli64或storcli64验证。

直接看 /sys/block/*/queue/rotational 最可靠
内核通过 rotational 文件暴露设备物理特性:值为 0 表示非旋转设备(SSD/NVMe),1 表示旋转设备(HDD)。这是最底层、无需额外工具、且被所有主流发行版支持的方式。
操作很简单:
- 查单个盘:
cat /sys/block/sda/queue/rotational - 批量查所有 SATA/SAS 盘:
for dev in /sys/block/sd*; do echo "${dev##*/}: $(cat $dev/queue/rotational 2>/dev/null)"; done - 注意跳过 ramdisk、loop、zram 等伪设备——它们的
rotational可能为1,但不是 HDD
lsblk -d -o name,rota,model 适合快速扫视
lsblk 的 rota 列本质就是读取上面那个 rotational 文件,但封装得更友好,还能顺带看到型号(model),一眼识别常见 SSD 品牌(如 Samsung SSD 860、INTEL SSDSC2BB)。
常用组合命令:
-
lsblk -d -o name,rota,size,model—— 同时看设备名、类型、容量、型号 -
lsblk -d -o name,rota | awk '$2==0 {print $1}'—— 只列出 SSD 设备名 - 对 NVMe 盘也有效:
nvme0n1的rota恒为0,符合预期
smartctl -i /dev/sdX | grep "Rotation Rate" 用于交叉验证
当 rotational 返回异常(比如 RAID 卡虚拟盘下恒为 1),或你想确认硬件真实型号时,smartctl 是第二道防线。它读取的是硬盘固件上报的 SMART 信息。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
关键输出判断:
-
Rotation Rate: Solid State Device→ 确认为 SSD -
Rotation Rate: 7200 rpm或类似数值 → HDD - 注意:部分老旧 SATA SSD 固件不填该字段,此时会无输出,不能反推为 HDD
- 需先安装:
yum install smartmontools(RHEL/CentOS)或apt install smartmontools(Debian/Ubuntu)
RAID 卡环境(如 PERC、MegaRAID)下 rotational 不可信
在 Dell PERC、HP Smart Array、LSI MegaRAID 等硬件 RAID 场景中,Linux 看到的是逻辑卷(如 /dev/sda),不是物理盘。此时 /sys/block/sda/queue/rotational 几乎总是 1,lsblk 和 smartctl 也仅反映虚拟层信息,无法穿透到底层。
必须用厂商专用工具:
- DELL PERC:用
perccli64 /c0 /eall /sall show查物理盘,输出含Media Type: SSD或HDD - LSI/Broadcom MegaRAID:用
storcli64 /c0 /eall /sall show - HP Smart Array:用
ssacli ctrl all show config - 这些工具不依赖内核
rotational,直接与 RAID 卡通信,是唯一可信来源
真正容易被忽略的点是:没有一种方法在所有场景下都 100% 有效。直连盘看 rotational 最快最准;RAID 环境必须切到厂商 CLI;而 smartctl 虽权威,但对某些 OEM 白牌盘或断电异常的 SSD 可能读不到 SMART 数据。实际排查时,建议按「rotational → lsblk → smartctl」顺序试,若前三者矛盾,立刻怀疑是否在 RAID 虚拟层之下。

















