可能重复:
Udev 规则不起作用
我已将 CFQ 设置为默认 I/O 调度程序。当我将数据写入闪存设备时,我经常会遇到性能不佳的情况。如果我使用 deadline 作为 USB 闪存设备的 I/O 调度程序,这个问题就会得到解决。我不能总是手动更改调度程序,对吧?我认为编写 udev 规则是个好主意。
有人能帮我写规则吗?我想要:
- 当我插入 USB 设备时,检测该设备的类型。
- 如果它是便携式 USB 硬盘,则不执行任何操作(我认为如果设备有多个分区,它始终是便携式硬盘。
- 如果它是 USB 闪存设备,则将截止期限设置为它的调度程序。
答案1
首先,将 shell 脚本scheduler4usb
放入$PATH
(例如/usr/bin
:):
#!/bin/bash
# Usage: ./script device scheduler
# If your are using util-linux 2.22, you must change this line to:
# fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "doesn't contain a valid partition table"
#
fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "This doesn't look like a partition table"
# If this device has a partition table.
if (($?==0)); then
echo $2 > /sys/block/$1/queue/scheduler
fi
exit
不要忘记chmod +x scheduler4usb
你的脚本!
然后,将规则写入/etc/udev/rules.d/91-change-schduler.rules
:
SUBSYSTEMS=="usb", ACTION=="add", KERNEL=="sd?", RUN+="/usr/local/bin/scheduler4usb %k deadline"