systemd mount volume usando o link simbólico do dispositivo

1

Estou tentando fazer o systemd montar um volume por symlink. Infelizmente, quando eu tento, ele expira esperando o dispositivo systemd aparecer.

# 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.

A mensagem diz que está aguardando dev-block-ec2-ephemeral0.device . Meu arquivo de unidade especifica What=/dev/block/ec2/ephemeral0 , que é um link simbólico para /dev/xvdb .

man 5 systemd.device diz:

systemd will dynamically create device units for all kernel devices that are marked with the "systemd" udev tag

No entanto, parece criar apenas a unidade do dispositivo para o caminho /sys .

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

O ephemeral0 é um link simbólico do udev devidamente reconhecido:

# 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

Aqui está o arquivo de unidade atual:

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

Existe alguma maneira de montá-lo através de uma unidade systemd.mount?
Eu poderia criar uma unidade falsa como systemd fez para esse sys-devices-vbd... one?

    
por Patrick 04.08.2014 / 19:22

1 resposta

0

Acontece que o problema é que o systemd ignora tudo dentro de /dev/block .

O /dev/block/ec2/ephemeral0 foi um link simbólico criado por uma regra do udev, então a solução é simplesmente ajustar a regra do udev e colocar o link simbólico em outro lugar. Eu escolhi colocá-lo em /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

Fonte: link

    
por 17.08.2014 / 08:23