银河麒麟服务器磁盘IO调度优化需五步:一、查看设备支持的调度器;二、临时修改指定设备算法;三、永久修改GRUB默认elevator;四、用udev按设备类型差异化配置;五、通过tuned服务动态调优。

如果您在银河麒麟操作系统中运行服务器工作负载,但遭遇磁盘I/O延迟升高、吞吐下降或响应不稳等问题,则可能是由于内核I/O调度器未针对实际存储介质与业务类型进行适配。不同调度算法对HDD、SATA SSD、NVMe SSD等设备的性能表现差异显著,配置不当会直接加剧IO瓶颈。以下是开启磁盘IO调度优化的多种可行方法:
一、查看当前支持的I/O调度算法及各设备状态
该步骤用于确认系统可用的调度器列表与各块设备当前启用的算法,是后续所有优化操作的前提。Linux内核通过/sys/block/接口暴露调度器信息,不同设备可能呈现不同默认值,需逐个验证。
1、执行命令列出所有块设备名称:ls /sys/block/
2、针对目标设备(例如sda或nvme0n1),查看其支持的调度器及当前激活项:cat /sys/block/sda/queue/scheduler
3、输出示例为:[mq-deadline] kyber bfq none,其中方括号内为当前生效算法。
二、临时修改指定设备的I/O调度算法
该方法通过向sysfs写入参数实现运行时切换,无需重启,但重启后失效。适用于测试验证或紧急调优场景,特别适合SSD设备启用none或kyber,或HDD启用mq-deadline。
1、确认目标设备名(如sda)并检查当前状态:cat /sys/block/sda/queue/scheduler
2、将调度器临时设为none(适用于NVMe SSD):echo none > /sys/block/sda/queue/scheduler
3、将调度器临时设为kyber(适用于低延迟敏感型SSD):echo kyber > /sys/block/sda/queue/scheduler
4、验证是否生效:cat /sys/block/sda/queue/scheduler
三、永久修改系统级默认I/O调度算法
该方法通过修改内核启动参数,在GRUB引导阶段注入elevator选项,使所有兼容块设备在系统启动时统一采用指定调度器。适用于生产环境标准化部署,尤其适合全闪存服务器或数据库专用节点。
1、编辑GRUB配置文件:sudo vim /etc/default/grub
2、定位到GRUB_CMDLINE_LINUX行,在引号内添加参数:elevator=kyber(可选值:none、mq-deadline、bfq、kyber)
3、更新GRUB配置:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
4、重启系统使更改生效:sudo reboot
四、按设备类型差异化配置多调度器策略
当系统存在异构存储(如同时挂载SATA SSD和NVMe盘)时,单一全局调度器无法兼顾性能。可通过udev规则为不同设备匹配专属调度器,实现精细化控制,确保每类介质使用最优算法。
1、创建udev规则文件:sudo vim /etc/udev/rules.d/60-io-scheduler.rules
2、为NVMe设备设置none调度器,添加规则:ACTION=="add|change", KERNEL=="nvme[0-9]n[0-9]", ATTR{queue/scheduler}="none"
3、为SATA HDD设备设置mq-deadline调度器,添加规则:ACTION=="add|change", KERNEL=="sd[a-z]", SUBSYSTEM=="block", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline"
4、重新加载udev规则并触发应用:sudo udevadm control --reload-rules && sudo udevadm trigger
五、结合tuned服务实现动态I/O调度调优
tuned守护进程可基于工作负载类型自动调整内核参数,包括I/O调度器策略。它支持静态预设与动态监控双模式,适用于数据库、虚拟化、高并发Web等典型服务器场景。
1、确认tuned服务已启用:systemctl is-active tuned
2、查看可用调优配置集:tuned-adm list
3、为数据库负载启用througput-performance配置集(含优化IO调度):sudo tuned-adm profile throughput-performance
4、验证当前活动配置集及调度器影响:tuned-adm active && cat /sys/block/sda/queue/scheduler


















