在 CentOS 系统中,确认硬盘是 SSD 还是 HDD 可通过多种方法实现,以下汇总五种常用且可靠的方式,按操作复杂度从简到繁排列,并附详细操作命令及注意事项:
🔧 1. 使用 lsblk 命令(推荐,无需安装工具)
原理:通过内核标识 ROTA(Rotational Device)判断,0 表示非旋转设备(SSD),1 表示旋转设备(HDD)。
命令:
lsblk -d -o NAME,ROTA,SIZE,MODEL,TYPE
输出示例:
NAME ROTA SIZE MODEL TYPE
sda 1 3.7T ST4000NM000A-2HZ disk # HDD(ROTA=1)
nvme0n1 0 894G MZILT960HBHQ/007 disk # SSD(ROTA=0)
优点:结果直观,支持批量查看所有磁盘。
📂 2. 检查 /sys 文件系统(内核级确认)
原理:直接读取内核参数 /sys/block/<device>/queue/rotational,返回值 0 为 SSD,1 为 HDD。
命令(替换 sda 为实际设备名):
cat /sys/block/sda/queue/rotational
批量检查脚本:
for dev in /sys/block/sd*; do
echo "${dev##*/}: $(cat $dev/queue/rotational)";
done
输出示例:
sda: 1 # HDD
sdb: 0 # SSD
适用场景:脚本自动化检测或内核级验证。
🛠️ 3. 使用 smartctl 工具(详细硬件信息)
原理:通过 SMART 数据中的 Rotation Rate 字段判断,SSD 显示 Solid State Device,HDD 显示转速(如 7200 rpm)。
步骤:
-
安装工具:
yum install smartmontools -y # CentOS/RHEL -
查询磁盘类型(替换
sda为设备名):smartctl -i /dev/sda | grep "Rotation Rate"
输出示例:
Rotation Rate: Solid State Device # SSD
Rotation Rate: 7200 rpm # HDD
优势:支持 NVMe 和 SATA 设备,信息权威。
⚙️ 4. 使用 hdparm 命令(辅助验证)
原理:通过 Nominal Media Rotation Rate 字段判断,SSD 显示 Solid State Device。
命令:
hdparm -I /dev/sda | grep "Nominal Media Rotation Rate"
输出示例:
Nominal Media Rotation Rate: Solid State Device # SSD
注意:部分老旧 SSD 可能不返回此字段,需结合其他方法验证。
⚡ 5. NVMe 专用命令(仅限 NVMe 硬盘)
原理:NVMe 协议设备均为 SSD。
命令:
nvme list # 列出所有 NVMe 设备
输出示例:
Node Model Namespace
/dev/nvme0n1 Samsung SSD 970 PRO 1 # 确认是 SSD
适用性:快速识别 NVMe SSD。
📊 方法对比与选型建议
| 方法 | 优势 | 限制 | 推荐场景 |
|---|---|---|---|
lsblk |
无需安装,结果直观 | 不显示未挂载磁盘详情 | 快速批量检查 |
/sys 文件 |
内核级数据,脚本友好 | 需手动指定设备名 | 自动化运维 |
smartctl |
支持所有接口类型,信息全面 | 需安装软件包 | 精准识别混合硬盘(SSHD) |
hdparm |
轻量级验证 | 对部分 SSD 兼容性差 | 辅助交叉验证 |
nvme list |
专用于 NVMe SSD | 仅限 NVMe 设备 | 确认 NVMe 盘 |
⚠️ 注意事项
-
权限要求:除
lsblk外,其他命令需sudo或root权限。 -
设备名规范:
- SATA/SAS 磁盘:
/dev/sdX(如sda) - NVMe 磁盘:
/dev/nvme0n1
- SATA/SAS 磁盘:
-
混合硬盘(SSHD):可能被识别为 HDD(
ROTA=1),需结合型号或smartctl进一步判断。
🔍 扩展场景:性能测试验证(非直接方法)
若上述方法存疑,可通过 I/O 性能测试辅助判断:
# 测试随机读写 IOPS(SSD 通常 > 1万,HDD < 300)
fio --filename=/dev/sda --rw=randread --bs=4k --direct=1 --ioengine=libaio --iodepth=64 --runtime=10 --numjobs=1 --name=test | grep iops
典型结果:
read: IOPS=35k # SSD(高性能)
read: IOPS=180 # HDD(低性能)
💡 此方法适用于硬件信息缺失时的间接验证。
按需选择上述方法,可快速准确区分 CentOS 系统中的 SSD 与 HDD。日常运维推荐首选 lsblk 或 /sys 文件检查,复杂场景结合 smartctl 验证。
浙公网安备 33010602011771号