在 USB 驱动器上设置调度程序的 UDEV 规则失败

在 USB 驱动器上设置调度程序的 UDEV 规则失败

我正在尝试在 UDEV 中设置不同的规则,以根据插入的 USB 介质类型更改调度程序。对于常规闪存驱动器,调度程序应该是 NOOP,但对于内部有实际旋转硬盘的 USB HDD,它应该设置为 BFQ。

然而这总是会失败,因为每个 USB 存储设备在 UDEV 中都具有 ROTATIONAL=1 属性,因此无法在此基础上进行选择。

因此,这是行不通的:

# set scheduler for USB flash disks
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{removable}=="1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

有什么建议么?

我正在使用 Ubuntu 19.10

答案1

通过将 BFQ 设为默认调度程序并为非默认媒体定义规则来修复此问题,因此现在只有旋转媒体使用默认设置。

# set scheduler for NVMe
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
# set scheduler for SSD and eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{removable}=="0", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
# set scheduler for USB flash disks
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{removable}=="1", ATTR{queue/scheduler}="none"

相关内容