
可能的重複:
Udev 規則不起作用
我已將 CFQ 設定為預設 I/O 調度程序。當我將資料寫入閃存裝置時,我經常遇到效能不佳的情況。如果我使用截止時間作為 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"