
重複の可能性あり:
Udevルールが機能していません
デフォルトの I/O スケジューラとして CFQ を設定しました。フラッシュ デバイスにデータを書き込むときにパフォーマンスが悪くなることがよくあります。この問題は、USB フラッシュ デバイスの I/O スケジューラとして Deadline を使用すると解決します。スケジューラを常に手動で変更できるわけではありませんよね? udev ルールを記述するのは良い考えだと思います。
誰か私のためにルールを書いてくれませんか?私が欲しいのは:
- USB デバイスを接続すると、デバイスの種類を検出します。
- ポータブル USB ハードディスクの場合は何もしないでください (デバイスに複数のパーティションがある場合は、常にポータブル ハードディスクであると考えられます)。
- USB フラッシュ デバイスの場合は、スケジューラとして期限を設定します。
答え1
まず、シェル スクリプトを(例: )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"