
Mögliches Duplikat:
Die Udev-Regel funktioniert nicht
Ich habe CFQ als Standard-E/A-Scheduler festgelegt. Wenn ich Daten auf ein Flash-Gerät schreibe, ist die Leistung häufig schlecht. Dies wird behoben, wenn ich Deadline als E/A-Scheduler für USB-Flash-Geräte verwende. Ich kann den Scheduler nicht immer manuell ändern, oder? Ich denke, das Schreiben von Udev-Regeln ist eine gute Idee.
Kann mir bitte jemand Regeln schreiben? Ich möchte:
- Wenn ich ein USB-Gerät anschließe, wird der Gerätetyp erkannt.
- Wenn es sich um eine tragbare USB-Festplatte handelt, tun Sie nichts (ich denke, wenn ein Gerät mehr als eine Partition hat, ist es immer eine tragbare Festplatte).
- Wenn es sich um ein USB-Flash-Gerät handelt, legen Sie die Frist als Planer fest.
Antwort1
Fügen Sie zunächst das Shell-Skript scheduler4usb
ein $PATH
(z. B.: /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
Vergessen Sie nicht, chmod +x scheduler4usb
Ihr Skript zu aktualisieren!
Schreiben Sie die Regel dann in /etc/udev/rules.d/91-change-schduler.rules
:
SUBSYSTEMS=="usb", ACTION=="add", KERNEL=="sd?", RUN+="/usr/local/bin/scheduler4usb %k deadline"