银河麒麟V10磁盘I/O调度算法修改指南

作者:技术拾光

时间:2026-07-05

浏览:611

确认当前设备类型与调度器状态 此步骤不可跳过,否则后续修改可能无效,甚至引发IO阻塞。银河麒麟V10对不同设备默认启用的调度器可能不同,需先锁定目标盘并验证其物理属性。 执行命令列出所有块设备:ls /sys/block/ 查看目标设备(例如sda)是否为旋转介质:cat /sys/block/sd

文章目录

确认当前设备类型与调度器状态

此步骤不可跳过,否则后续修改可能无效,甚至引发IO阻塞。银河麒麟V10对不同设备默认启用的调度器可能不同,需先锁定目标盘并验证其物理属性。

执行命令列出所有块设备:ls /sys/block/

查看目标设备(例如sda)是否为旋转介质:cat /sys/block/sda/queue/rotational。返回【1】表示HDD,【0】表示SSD或NVMe。

读取当前调度器:cat /sys/block/sda/queue/scheduler。输出通常类似[bfq] mq-deadline kyber none——方括号内为当前生效的调度器。若显示【[none]】且设备为NVMe,说明内核已绕过调度层,此时强行改写会失败。

临时切换调度器(立即生效,重启失效)

此方法适合快速验证效果或紧急调优,无需重启,改动仅对当前运行环境生效。

方法一:针对SATA SSD或数据库盘,设为mq-deadline

sudo sh -c 'echo mq-deadline > /sys/block/sda/queue/scheduler'

方法二:针对NVMe盘,设为none(注意:部分NVMe驱动不接受写入,若cat后仍显示[none],说明系统已默认none,属正常情况)

sudo sh -c 'echo none > /sys/block/nvme0n1/queue/scheduler'

方法三:针对老旧HDD服务器,设为bfq(需先确认内核支持:cat /sys/block/sda/queue/scheduler中必须包含bfq才可使用)

sudo sh -c 'echo bfq > /sys/block/sdb/queue/scheduler'

验证是否成功:cat /sys/block/sda/queue/scheduler,确保新调度器出现在方括号内。若报错【Invalid argument】,说明该设备不支持所选算法,或当前设备处于只读状态。

永久修改为全局默认调度器

此方法适合硬件环境统一的生产服务器,例如全闪存数据库节点,可使所有兼容块设备采用同一调度器。

第一步:编辑GRUB配置文件
sudo vim /etc/default/grub

第二步:找到GRUB_CMDLINE_LINUX所在行,在引号内末尾添加空格分隔的参数,例如:
GRUB_CMDLINE_LINUX="... elevator=mq-deadline"

第三步:更新引导配置
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

第四步:重启系统
sudo reboot

注意:此方式无法区分HDD与SSD。若系统混用多种介质,全局设置会强制NVMe也使用mq-deadline,反而降低性能。混合存储场景下,请跳过本节,直接使用更精细的udev规则。

按设备类型差异化设置(推荐用于混合存储)

当一台麒麟V10服务器同时挂载SATA SSD(如sdb)和NVMe盘(如nvme0n1)时,必须用udev规则分别指定调度器,否则全局设置必然会牺牲某类设备性能。

创建规则文件:sudo tee /etc/udev/rules.d/60-io-scheduler.rules

写入以下内容(根据实际设备名调整):

ACTION=="add|change", KERNEL=="sdb", ATTR{queue/scheduler}="mq-deadline"
ACTION=="add|change", KERNEL=="nvme0n1", ATTR{queue/scheduler}="none"

重载规则并触发应用:sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=block

验证:拔插对应磁盘或重启后,执行cat /sys/block/sdb/queue/scheduler和cat /sys/block/nvme0n1/queue/scheduler,应分别看到【[mq-deadline]】和【[none]】。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›