在 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)。

​步骤​​:

  1. ​安装工具​​:

    yum install smartmontools -y  # CentOS/RHEL
    
  2. ​查询磁盘类型​​(替换 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 盘

⚠️ ​​注意事项​

  1. ​权限要求​​:除 lsblk 外,其他命令需 sudoroot 权限。

  2. ​设备名规范​​:

    • SATA/SAS 磁盘:/dev/sdX(如 sda
    • NVMe 磁盘:/dev/nvme0n1
  3. ​混合硬盘(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 验证。

posted on 2025-08-08 10:19  LeeHang  阅读(737)  评论(0)    收藏  举报