udev
これまでに、私が作成したルールは、次のように追加または削除されたデバイスのみを処理します。
ACTION=="add"...
またはACTION=="remove"...
私が出会った一例デバイスに関するルールのようです。状態の変化さらに:
ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"
一致するデバイスがある限り、上記の規則が適用されると思います。次へ追加またはその状態多様性。
質問:どのような状態の変化が起こりますか(通常、特にUSBハードドライブの場合)。
私が見つけることができるすべてのudev文書を確認しましたが、デバイスの状態の変更や具体的に関連する言及や使用ガイドはほとんどありませんACTION="change"
。
答え1
たとえば、「変更」とは、SDカードリーダーからSDカードを取り外したり挿入したり、USBエンクロージャ内のハードドライブをSATAエンクロージャに変更したりすることに相当します。デバイス自体は追加または削除されませんが、メディアはもはや同じではありません。
答え2
udev変更イベントは、メディアチェンジャー(テープ - Netbackupなどの環境)またはSDカードリーダーが他のメディアまたはSDカードを連続して使用するときにトリガーされます。同じデバイスを再度追加する場合(Sanディスクを再追加するか、スイッチ側でスイッチを無効にする/有効にするか、ターゲット側でターゲットポートを無効にする/有効にします)
以下は、既存のsan lun(Vexata VX100アレイの)udevイベントでターゲットポートを無効にしたときにホスト側に表示されるいくつかの変更点です。
KERNEL[34942.047543] change /devices/virtual/block/dm-0 (block)
KERNEL[34942.047596] change /devices/virtual/block/dm-1 (block)
KERNEL[34942.047613] change /devices/virtual/block/dm-2 (block)
KERNEL[34942.047631] change /devices/virtual/block/dm-3 (block)
KERNEL[34942.047678] change /devices/virtual/block/dm-4 (block)
UDEV [34942.053448] change /devices/virtual/block/dm-3 (block)
UDEV [34942.053486] change /devices/virtual/block/dm-4 (block)
UDEV [34942.053507] change /devices/virtual/block/dm-0 (block)
UDEV [34942.053536] change /devices/virtual/block/dm-2 (block)
答え3
ENV
これは、カーネルが特定のコンテンツを記述するイベント属性()とENV
コンテキストを提供するデバイス属性()と一緒にデバイスへの変更を報告するためにueventを発行したことを意味します。これはデバイス属性(sysfsのファイル構造に相当)とは異なり、を実行するとATTR
これらの属性が何であるかを確認できますsudo udevadm monitor --kernel --udev -p --subsystem-match=usb
。
これらのイベントはデバイスを管理する特定のカーネルモジュールによって引き起こされるため、イベントリスト全体や保証されたイベントセットはありません。イベントの原因を呼び出すかkobject_uevent
理解するには、文書を確認するか、関連モジュールのソースコードを確認する必要があります。kobject_uevent_env