systemd はデバイスシンボリックリンクを使用してボリュームをマウントします。

systemd はデバイスシンボリックリンクを使用してボリュームをマウントします。

シンボリックリンクを介してボリュームをマウントするためにシステムを構築しようとしています。残念ながら、システムデバイスが表示されるまで待機しようとするとタイムアウトします。

# systemctl start mnt-ephemeral0.mount
A dependency job for mnt-ephemeral0.mount failed. See 'journalctl -xn' for details.

# journalctl -xn
Aug 04 17:02:09 i-c7a88499 systemd[1]: Expecting device dev-block-ec2-ephemeral0.device...
Aug 04 17:03:39 i-c7a88499 systemd[1]: Job dev-block-ec2-ephemeral0.device/start timed out.
Aug 04 17:03:39 i-c7a88499 systemd[1]: Timed out waiting for device dev-block-ec2-ephemeral0.device.
Aug 04 17:03:39 i-c7a88499 systemd[1]: Dependency failed for /mnt/ephemeral0.

メッセージには待っていることがわかりますdev-block-ec2-ephemeral0.device。私のユニットファイルはWhat=/dev/block/ec2/ephemeral0それがシンボリックリンクであることを指定します/dev/xvdb

man 5 systemd.device説明する:

systemdは、「systemd」udevラベル付きのすべてのカーネルデバイスに対してデバイスユニットを動的に生成します。

ただし、/sysパスのデバイス単位のみを生成するようです。

# systemctl list-units | grep 'xvdb\|ephemeral0'
sys-devices-vbd\x2d2064-block-xvdb.device                  loaded active plugged   /sys/devices/vbd-2064/block/xvdb

以下はephemeral0正しく認識されたudevシンボリックリンクです:

# udevadm info -q symlink -n /dev/xvdb 
block/ec2/ephemeral0 disk/by-uuid/d57e2dd9-0062-448c-a914-0b6df045dafb

# ls -l /dev/block/ec2/ephemeral0 
lrwxrwxrwx 1 root root 10 Aug  4 16:59 /dev/block/ec2/ephemeral0 -> ../../xvdb

 

これは現在のユニットファイルです:

[Unit]
After=ephemeral0-format.service
[Mount]
What=/dev/block/ec2/ephemeral0
Where=/mnt/ephemeral0

 

systemd.mountデバイスを介してマウントする方法はありますか?
systemdのように偽のユニットを作成できますかsys-devices-vbd...

答え1

問題は、systemdが内部のすべてを無視することです/dev/block

これは/dev/block/ec2/ephemeral0udevルールによって生成されたシンボリックリンクであるため、解決策は単にudevルールを調整し、シンボリックリンクを別の場所に配置することです。に配置することにしました/dev/disk/ec2/ephemeral0

$ udevadm info -q symlink -n /dev/xvdb                                                                                                                  
disk/by-uuid/ae145d53-9501-419f-b9b1-7416e5c4fec9 disk/ec2/ephemeral0

$ systemctl list-units -a | grep 'xvdb\|ephemeral0'                                                                                                     
  dev-disk-ec2-ephemeral0.device                                                  loaded    active   plugged   /dev/disk/ec2/ephemeral0
  dev-xvdb.device                                                                 loaded    active   plugged   /dev/xvdb
  sys-devices-vbd\x2d2064-block-xvdb.device                                       loaded    active   plugged   /sys/devices/vbd-2064/block/xvdb

源泉:http://lists.freedesktop.org/archives/systemd-devel/2014-August/021919.html

関連情報