Linux中识别SSD/HDD应以/sys/block/*/queue/rotational值为准(0为SSD,1为HDD),据此选择I/O调度器(SSD用none/noop,HDD用deadline/bfq),并启用TRIM、1MiB对齐及noatime等挂载优化,最后通过iostat、fio验证效果。
Linux系统中区分SSD和HDD,关键看内核识别的底层特性,而非设备名称或型号。性能优化必须基于准确识别,否则调度器、挂载参数等调整可能适得其反。
一、准确识别SSD还是HDD
最可靠的方式是检查
文件内容:
值为
0
→ 内核认定为SSD(非旋转介质)
值为
1
→ 内核认定为HDD(旋转介质)
例如查看sda:
注意:NVMe设备(如nvme0n1)默认为0,但部分老旧驱动或
虚拟环境
可能误报,建议结合
综合判断。
二、I/O调度器选择原则
调度器需匹配物理介质特性:
SSD(含NVMe)
:优先用
(5.0+内核)或
;较新内核支持多队列,
或
也可作为备选,但避免使用
或
HDD
:推荐
或
(尤其在多任务混合负载下),
已弃用
临时切换(以sda为例):
永久生效需写入
中的
,添加
(HDD)或
(SSD)。
三、SSD专用优化项
识别为SSD后,应启用以下关键配置:
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
启用TRIM
:确保
定期运行(systemd有
,默认启用);挂载时加
参数(仅适用于轻负载,生产环境建议用定时fstrim)
分区对齐
:创建分区时使用
并指定
,起始扇区设为2048(即1MiB对齐),避免跨页写入损耗
挂载参数优化
:ext4推荐
;XFS推荐
四、验证与持续观察
优化不是一次设置就结束,需结合实际负载验证效果:
用
观察
、
、
、
,SSD的
通常远低于10ms
对比不同调度器下
随机读写QD32延迟分布(如p99
检查
确认内核识别无误
不复杂但容易忽略。识别准、调度对、TRIM开、对齐好——这四步到位,SSD才能真正释放低延迟高IOPS的潜力。
/sys/block/*/queue/rotationalcat /sys/block/sda/queue/rotationallsblk -d -o NAME,ROTA,TYPEnonenoopmq-deadlinekybercfqbfqdeadlinebfqcfqecho deadline > /sys/block/sda/queue/scheduler/etc/default/grubGRUB_CMDLINE_LINUXelevator=deadlineelevator=noopfstrimfstrim.timerdiscardpartedunit MiBnoatime,discard,commit=60noatime,logbufs=8,logbsize=256kiostat -x 1%utilawaitr/sw/sawaitfiodmesg | grep -i "ssd\|nvme\|rotational"