HDD应使用deadline调度器,通过udev规则永久配置并用iostat验证w_await

机械硬盘(HDD)性能瓶颈主要在磁头寻道和盘片旋转延迟,调度算法的核心目标是减少无序寻道、压缩平均响应时间。对 HDD 来说,deadline 或 mq-deadline 是最稳妥且效果明确的选择,远优于 cfq(已废弃)、bfq(桌面友好但 HDD 场景增益有限)或 noop(会引发严重寻道风暴)。
确认你的盘确实是机械硬盘
别凭设备名(如 sda)猜测,用硬件信息验证:
sudo smartctl -i /dev/sda | grep "Rotation Rate"
- 输出
Rotation Rate: 7200 rpm或5400 rpm→ 是 HDD - 输出
Rotation Rate: None→ 是 SSD/NVMe,别配 deadline
临时切换到 deadline(立即生效,重启失效)
echo deadline | sudo tee /sys/block/sda/queue/scheduler
执行后检查是否生效:
cat /sys/block/sda/queue/scheduler # 应显示 [deadline] mq-deadline kyber none
⚠️ 注意:sda 要替换成你的真实设备名(如 sdb、sdc),多个 HDD 需逐个设置。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
永久生效(推荐用 udev 规则,精准可控)
直接改 GRUB 全局参数容易误伤 SSD,对 HDD 单独配置更安全:
- 创建规则文件:
sudo nano /etc/udev/rules.d/60-hdd-scheduler.rules
- 写入内容(以 sda 为例,按需增删):
SUBSYSTEM=="block", KERNEL=="sda", ATTR{queue/scheduler}="deadline" SUBSYSTEM=="block", KERNEL=="sdb", ATTR{queue/scheduler}="deadline" - 重载规则并触发:
sudo udevadm control --reload-rules sudo udevadm trigger --subsystem-match=block
下次启动自动生效,不影响其他设备。
验证优化是否起效
用 iostat 观察关键指标(运行 iostat -xdz 2 5):
- w_await(写请求平均等待时间):HDD 应稳定在 20–30 ms 以内;若长期 >50 ms,说明调度未起作用或存在其他瓶颈(如过载、RAID卡缓存关闭)。
- aqu-sz(平均队列深度):合理值为 1.5–3.0;过高(>5)表示请求堆积,可能需结合应用层批量写或调整脏页参数。
- %util 接近 100% 且 w_await 同步飙升 → 真实 I/O 密集,调度只是缓解,不是根治。
补充建议(不改调度器也能帮 HDD)
- 挂载时加
noatime,nodiratime,减少元数据写入; - 数据库日志盘单独挂载,避免与数据文件混争;
- 若用 RAID,优先选 RAID 10(非 RAID 5),降低小写惩罚;
- 确保
vm.dirty_ratio不设过高(建议 ≤30),防止脏页回写阻塞前台 IO。
不复杂但容易忽略。


















