Prüfen der udev-Regeln in /etc/udev/rules.d
In den vorherigen Schritten haben wir gelernt, wie man den aktiven E/A-Scheduler (I/O Scheduler) mithilfe von /sys
und dmesg
prüft. Jetzt schauen wir uns an, wie das System möglicherweise so konfiguriert ist, dass der Scheduler automatisch festgelegt wird, wenn Geräte erkannt werden. Dies wird oft von udev
übernommen.
udev
ist ein Gerätemanager für den Linux-Kernel. Es verwaltet Gerätenodes in /dev
und behandelt alle Benutzerraumereignisse (User Space Events), wenn Hardwaregeräte dem System hinzugefügt oder daraus entfernt werden. udev
verwendet Regeln, um Geräte zu identifizieren und Aktionen auszuführen, wie z. B. die Festlegung von Berechtigungen oder die Konfiguration von Geräteparametern wie dem E/A-Scheduler.
udev
-Regeln werden normalerweise im Verzeichnis /etc/udev/rules.d/
gespeichert. Diese Dateien haben die Dateierweiterung .rules
. Wir können diese Dateien prüfen, um festzustellen, ob es Regeln gibt, die speziell den E/A-Scheduler für bestimmte Geräte festlegen.
Zuerst listen wir die Dateien im Verzeichnis /etc/udev/rules.d/
mit dem Befehl ls
auf:
ls /etc/udev/rules.d/
Sie werden eine Liste von Dateien sehen, die möglicherweise einige in Bezug auf Blockgeräte oder Speicher enthalten. Die Ausgabe könnte etwa so aussehen:
10-snapd.rules 50-cloudimg-settings.rules 70-snap.core.rules 70-snap.lxd.rules 70-snap.microk8s.rules 70-snap.snapd.rules 70-snap.snapd-desktop-integration.rules 99-vmware-scsi-udev.rules
Jetzt schauen wir uns eine dieser Dateien an, um zu sehen, ob wir Regeln in Bezug auf Scheduler finden können. Wir verwenden den Befehl cat
, um den Inhalt einer Datei anzuzeigen. Beispielsweise schauen wir uns die Datei 99-vmware-scsi-udev.rules
an (der genaue Dateiname kann je nach Umgebung etwas variieren, aber suchen Sie nach einer, die mit Speicher oder Geräten in Verbindung steht):
cat /etc/udev/rules.d/99-vmware-scsi-udev.rules
Sie könnten Regeln sehen, die bestimmte Geräteattribute abgleichen und dann Eigenschaften festlegen. Suchen Sie nach Zeilen, die das Schlüsselwort ATTR
verwenden, um Geräteattribute abzugleichen, und die Eigenschaft ATTR{queue/scheduler}
, um den Scheduler festzulegen.
Beispielsweise könnte eine Regel zur Festlegung des deadline
-Schedulers so aussehen:
## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"
Diese Regel passt auf Blockgeräte (SUBSYSTEM=="block"
) mit bestimmten Hersteller- und Modellattributen und legt ihren Scheduler auf deadline
fest, wenn sie hinzugefügt oder geändert werden.
Durch die Prüfung dieser Regeln können Sie verstehen, wie der Standard-E/A-Scheduler auf Ihrem System konfiguriert sein könnte.