最も単純なudevルールは機能しません

最も単純なudevルールは機能しません

外部ドライブがコンピュータに接続されるとすぐに、LVM論理ボリュームを自動的にマウントしたいと思います。

ここで選択したソリューションは、udevプラグインイベント検出を使用してudisks2パーティションをマウントすることです。その他の選択肢については、次をご覧ください。論理ボリュームを自動的にマウントするより一般的な方法

udev私のアプローチが不運なのかudisks2、それとも私の達成が失敗したのか疑問に思います。以下は私のすべての試みの簡単な要約です。

最も単純なudevルールは機能しません

udev私が見ると、このルールはドライブが存在し、UDISKS_AUTO特定のパーティションに対して設定され、udisks2パーティションが自動的にマウントできると主張するのに適しているようです。だから私のファイルに次のルールを作成しました。/etc/udev/rules.d/61-lvm-automount-lv.rules

SUBSYSTEM=="block"\
, ENV{ID_FS_UUID}=="<UUID of my LV>"\
, ENV{UDISKS_AUTO}="1"

次に、ルールを再ロードしてsudo udevadm control --reload(またはコンピュータを再起動することをお勧めします)、ルールを読み取ったことを確認し、指定されたパーティションに対してUDISKS_AUTOが1に設定されていることを確認し、出力の最後に表示できることを確認sudo udevadm test /sys/devices/virtual/block/dm-1します。UDISKS_AUTO=1

ただし、外部ディスクを取り外す/接続すると、パーティションは自動的にマウントされません。

journactlfindを使って問題が何であるかに関する最大の情報を見つけようとしましたが、udisksctl monitor役に立つメッセージはudevadm monitor --environment --udev次のとおりです。

UDEV  [3897.839040] change   /devices/virtual/block/dm-1 (block)
.ID_FS_TYPE_NEW=ext4
ACTION=change
DEVLINKS=/dev/mapper/wdhdd0-wd0 /dev/disk/by-uuid/b32cefaa-041e-4ef7-8c82-fe53739aefff /dev/disk/by-label/wd /dev/disk/by-id/dm-name-wdhdd0-wd0 /dev/wdhdd0/wd0 /dev/disk/by-id/dm-uuid-LVM-hwQrCjWSOCCGpJqcdPv3NHaP3OOK6kFQj2Y6j3X51A69FEYNQeHtt8wVnVnlb93N
DEVNAME=/dev/dm-1
DEVPATH=/devices/virtual/block/dm-1
DEVTYPE=disk
DM_ACTIVATION=1
DM_COOKIE=6324838
DM_LV_LAYER=
DM_LV_NAME=wd0
DM_NAME=wdhdd0-wd0
DM_SUSPENDED=0
DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG=1
DM_UDEV_PRIMARY_SOURCE_FLAG=1
DM_UDEV_RULES=1
DM_UDEV_RULES_VSN=2
DM_UUID=LVM-hwQrCjWSOCCGpJqcdPv3NHaP3OOK6kFQj2Y6j3X51A69FEYNQeHtt8wVnVnlb93N
DM_VG_NAME=wdhdd0
ID_FS_LABEL=wd
ID_FS_LABEL_ENC=wd
ID_FS_TYPE=ext4
ID_FS_USAGE=filesystem
ID_FS_UUID=b32cefaa-041e-4ef7-8c82-fe53739aefff
ID_FS_UUID_ENC=b32cefaa-041e-4ef7-8c82-fe53739aefff
ID_FS_VERSION=1.0
MAJOR=253
MINOR=1
SEQNUM=6641
SUBSYSTEM=block
TAGS=:systemd:
UDISKS_AUTO=1
USEC_INITIALIZED=5756122

したがって、udisks2はこのパーティションを自動的にマウントする必要があるように見えますが、そうでUDISKS_AUTO=1はありません。ただし、まだ実行でき、udisksctl mount -b /dev/wdhdd0/wd0パーティションは手動でマウントされます。

動作しない他のルール

UDISKS_SYSTEM論理ボリュームはシステムボリュームとして解釈される可能性があるため、デフォルトでは非表示にする必要があるため、値が変更されました。

SUBSYSTEM=="block", ENV{ID_FS_UUID}=="b32cefaa-041e-4ef7-8c82-fe53739aefff", ENV{UDISKS_SYSTEM}="0", ENV{UDISKS_AUTO}="1"

ENV{UDISKS_IGNORE}="0"ファイルシステムにマウントせずに物理ボリュームを隠す必要がある理由を完全に理解していますが、論理ボリュームが一部の属性を継承する可能性があると思いました。

ルールがロードされる順序を変更するには、61ファイル名の先頭の数字を変更する必要があります61-lvm-automount-lv.rules。 udevファイルを最初にロードする順序で簡単なルールを事前設定するには、試してみIMPORT{builtin}="blkid"たい人のためにルールの先頭に追加する必要があります。代わりに、単純なルールは最後に残そうとします。

しかし、これらの試みは何の改善ももたらしませんでした。

udevについての私の最後の考え

最後に考えたのは、PVを正常にインストールした後、適切な時間に手動でudevLVをインストールするために使用したシェルコマンドを実行することでした。/usr/bin/udisksctl mount -b /dev/wdhdd0/wd0だから私は無実に次の規則を試み、991-mountthatstupidcomputer.rules最終的に名前を評価するようになりました。

ACTION=="add"\
, SUBSYSTEM=="block"\
, ENV{ID_FS_UUID}=="<UUID of my PV>"\
, RUN{program}+="/usr/bin/udisksctl mount -b /dev/wdhdd0/wd0"

udevのマニュアルページによるとRUN

特定のイベントのすべてのルールが処理された後に実行されるプログラムのリストにプログラムを追加します。

だからそれを行う必要があります!ただし、自動マウントが再び失敗し、ログで理由を確認できます。実際、このスクリプトは、udevがそのPVへのイベントの追加が完了したと見なすとすぐに実行されます。しかし、それはdmsetup私が知らない不快なことを考慮しません。すべてのLVM設定が遅れているようで、udevが私のスクリプトを実行したときにPVがまだマウントされていないようです。 Ubuntuでは、ルールでdmsetupの使用法を見つけることができます。

  • 55-dm。ルール: 52
  • 95-dm-通知: 12

これが私が今立ち往生しているところです。 dm_setupが使用しているように見えるDM_COOKIEベースの解決策があるかもしれませんが、dm_setupのマニュアルをより放棄しました。私が見るには、パーティションをマウントするなどの単純な問題を深く掘り下げているようです。おそらくどこかにもっと簡単なものがありました。さらに、私は標準的なツールに固執し、遅かれ早かれクラッシュするシステムにあまりにも多くのスクリプトを書かないようにしたいと思います。

ターゲット

最終的には、標準(非lvm)パーティションが通常マウントされているかのように、システムは自動的に特定の論理ボリュームをマウントしたいと思います。最善のアプローチの提案を歓迎します。この問題を解決するために、udevとudisks2を使用しました。 Ubuntuの標準パーティションで完璧に動作するようだったので、LVMでも同じ効果を得たいと思いました。

編集する

/var/log/syslogディスクを挿入した直後、最も簡単なルールから始めました。

[12766.403419] usb 1-1: new high-speed USB device number 9 using xhci_hcd
[12766.553014] usb 1-1: New USB device found, idVendor=1058, idProduct=1003
[12766.553020] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[12766.553024] usb 1-1: Product: External HDD    
[12766.553029] usb 1-1: Manufacturer: Western Digital 
[12766.553032] usb 1-1: SerialNumber: 57442D574D41565531333130343938
[12766.553817] usb-storage 1-1:1.0: USB Mass Storage device detected
[12766.554314] scsi host5: usb-storage 1-1:1.0
mtp-probe: checking bus 1, device 9: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1"
mtp-probe: bus: 1, device: 9 was not an MTP device
upowerd[2160]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
upowerd[2160]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1
kernel: [12767.564246] scsi 5:0:0:0: Direct-Access  WD 15EARS External  1.75 PQ: 0 ANSI: 4
kernel: [12767.565075] sd 5:0:0:0: Attached scsi generic sg1 type 0
kernel: [12767.565196] sd 5:0:0:0: [sdc] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB)
kernel: [12767.565482] sd 5:0:0:0: [sdc] Write Protect is off
kernel: [12767.565487] sd 5:0:0:0: [sdc] Mode Sense: 23 00 00 00
kernel: [12767.565740] sd 5:0:0:0: [sdc] No Caching mode page found
kernel: [12767.565749] sd 5:0:0:0: [sdc] Assuming drive cache: write through
kernel: [12767.620230]  sdc: sdc1
kernel: [12767.621669] sd 5:0:0:0: [sdc] Attached SCSI disk
systemd[1]: Starting LVM2 PV scan on device 8:33...
lvm[31988]:   1 logical volume(s) in volume group "wdhdd0" now active
systemd[1]: Started LVM2 PV scan on device 8:33.

ベストアンサー1

おすすめ記事