![在 USB 驱动器上设置调度程序的 UDEV 规则失败](https://linux22.com/image/1172003/%E5%9C%A8%20USB%20%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E8%AE%BE%E7%BD%AE%E8%B0%83%E5%BA%A6%E7%A8%8B%E5%BA%8F%E7%9A%84%20UDEV%20%E8%A7%84%E5%88%99%E5%A4%B1%E8%B4%A5.png)
我正在尝试在 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"