跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

LinuxSSD与HDD如何区分_性能与调度优化说明【教学】

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 最可靠的方式是检查
/sys/block/*/queue/rotational
文件内容: 值为 0 → 内核认定为SSD(非旋转介质) 值为 1 → 内核认定为HDD(旋转介质) 例如查看sda:
cat /sys/block/sda/queue/rotational
注意:NVMe设备(如nvme0n1)默认为0,但部分老旧驱动或 虚拟环境 可能误报,建议结合
lsblk -d -o NAME,ROTA,TYPE
综合判断。 二、I/O调度器选择原则 调度器需匹配物理介质特性: SSD(含NVMe) :优先用
none
(5.0+内核)或
noop
;较新内核支持多队列,
mq-deadline
或
kyber
也可作为备选,但避免使用
cfq
或
bfq
HDD :推荐
deadline
或
bfq
(尤其在多任务混合负载下),
cfq
已弃用 临时切换(以sda为例):
echo deadline > /sys/block/sda/queue/scheduler
永久生效需写入
/etc/default/grub
中的
GRUB_CMDLINE_LINUX
,添加
elevator=deadline
(HDD)或
elevator=noop
(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 :确保
fstrim
定期运行(systemd有
fstrim.timer
,默认启用);挂载时加
discard
参数(仅适用于轻负载,生产环境建议用定时fstrim) 分区对齐 :创建分区时使用
parted
并指定
unit MiB
,起始扇区设为2048(即1MiB对齐),避免跨页写入损耗 挂载参数优化 :ext4推荐
noatime,discard,commit=60
;XFS推荐
noatime,logbufs=8,logbsize=256k
四、验证与持续观察 优化不是一次设置就结束,需结合实际负载验证效果: 用
iostat -x 1
观察
%util
、
await
、
r/s
、
w/s
,SSD的
await
通常远低于10ms 对比不同调度器下
fio
随机读写QD32延迟分布(如p99 检查
dmesg | grep -i "ssd\|nvme\|rotational"
确认内核识别无误 不复杂但容易忽略。识别准、调度对、TRIM开、对齐好——这四步到位,SSD才能真正释放低延迟高IOPS的潜力。

相关文章