/etc/udev/rules.d の udev ルールを調べる
前のステップでは、/sys
と dmesg
を使用してアクティブな I/O スケジューラを確認する方法を学びました。次に、デバイスが検出されたときにシステムが自動的にスケジューラを設定するようにどのように構成されているかを見てみましょう。これは通常、udev
によって処理されます。
udev
は Linux カーネルのデバイスマネージャです。/dev
内のデバイスノードを管理し、システムにハードウェアデバイスが追加または削除されたときのすべてのユーザー空間イベントを処理します。udev
はルールを使用してデバイスを一致させ、パーミッションの設定や I/O スケジューラなどのデバイスパラメータの構成などのアクションを実行します。
udev
ルールは通常、/etc/udev/rules.d/
ディレクトリに保存されます。これらのファイルは .rules
拡張子を持っています。これらのファイルを調べることで、特定のデバイスに対して I/O スケジューラを設定するルールがあるかどうかを確認できます。
まず、ls
コマンドを使用して /etc/udev/rules.d/
ディレクトリ内のファイルをリストアップしましょう。
ls /etc/udev/rules.d/
ブロックデバイスやストレージに関連するものを含むファイルのリストが表示されます。出力は次のようになるかもしれません。
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
次に、これらのファイルの中の 1 つを開いて、スケジューラに関連するルールがあるかどうかを確認しましょう。cat
コマンドを使用してファイルの内容を表示します。たとえば、99-vmware-scsi-udev.rules
を見てみましょう(正確なファイル名は環境によって多少異なる場合がありますが、ストレージまたはデバイスに関連するものを探してください)。
cat /etc/udev/rules.d/99-vmware-scsi-udev.rules
特定のデバイス属性に一致し、その後にプロパティを設定するルールが表示されるかもしれません。ATTR
キーワードを使用してデバイス属性を一致させ、ATTR{queue/scheduler}
プロパティを使用してスケジューラを設定する行を探してください。
たとえば、deadline
スケジューラを設定するルールは次のようになるかもしれません。
## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"
このルールは、特定のベンダーとモデル属性を持つブロックデバイス (SUBSYSTEM=="block"
) に一致し、それらが追加または変更されたときにそれらのスケジューラを deadline
に設定します。
これらのルールを調べることで、システムでデフォルトの I/O スケジューラがどのように構成されているかを理解できます。