A montagem do Systemd falha. Onde = a configuração não corresponde ao nome da unidade

17

Se eu usar este comando:

mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1

tudo funciona corretamente. Mas se eu tentar montar através da systemd mount ele falhará.

Eu criei um arquivo /etc/systemd/system/mnt-d1.mount com o seguinte conteúdo:

[Unit]
Description = Disk 1

[Mount]
What = LABEL=d1
Where = /srv/node/d1
Type = xfs
Options = noatime,nodiratime,logbufs=8

[Install]
WantedBy = multi-user.target

Depois disso, executo estes comandos:

systemctl daemon-reload
systemctl start mnt-d1.mount

O último me mostrou:

Failed to start mnt-d1.mount: Unit mnt-d1.mount failed to load: Invalid argument.  
See system logs and 'systemctl status mnt-d1.mount' for details.

systemctl status mnt-d1.mount me mostrou:

May 16 18:13:52 object1 systemd[1]: Cannot add dependency job for unit mnt-d1.mount, ignoring: Unit mnt-d1.mount failed to ...ectory.
May 16 18:24:05 object1 systemd[1]: mnt-d1.mount's Where= setting doesn't match unit name. Refusing.

Por favor, ajude-me a montar um disco através de uma unidade de systemd mount.

    
por Alexandr 16.05.2016 / 14:39

1 resposta

20

A mensagem de erro explica a causa:

Where= setting doesn't match unit name. Refusing.

embora entender essa mensagem requer a leitura de várias páginas do manual.
Por systemd.mount man page (enfatize o meu):

Where=

Takes an absolute path of a directory of the mount point. If the mount point does not exist at the time of mounting, it is created. This string must be reflected in the unit filename. (See above.) This option is mandatory.

A parte "ver acima" é:

Mount units must be named after the mount point directories they control. Example: the mount point /home/lennart must be configured in a unit file home-lennart.mount. For details about the escaping logic used to convert a file system path to a unit name, see systemd.unit(5).

OK, a página systemd.unit man afirma que:

Properly escaped paths can be generated using the systemd-escape(1) command.

apontando para systemd-escape man page que explica como fazer isso:

To generate the mount unit for a path:

$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount

Então, no seu caso, /srv/node/d1 traduz a srv-node-d1.mount

    
por 16.02.2017 / 17:50

Tags