systemd ciclo de montagem para montagem de montagem cifs

2

Eu tenho uma montagem CIFS de um único volume que então tem dois subdiretórios ligados. Na inicialização, o systemd reclama de um "ciclo de pedidos" e falha ao montar 1 dos binds, mas o outro funciona bem. Se eu executar mount -a , a ligação ausente será montada. Eu consegui recriar esse comportamento em uma nova VM.

/ etc / fstab

//server.example.com    /mnt/media             cifs    [snip]  0  0
/mnt/media/secure       /var/www/media/secure  none    bind    0  0
/mnt/media/public       /var/www/media/public  none    bind    0  0

As montagens de ligação não são alteradas, esses são os nomes reais. Eu não sei como, mas, eu acho que pode ser significativo, talvez devido à ordem de classificação, porque quando eu mudar a ordem em fstab apenas a montagem de ligação public falhará. secure sempre funciona.

registros do diário

Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on var-www-media-public.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on mnt-media.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on network-online.target/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on networking.service/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on local-fs.target/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Breaking ordering cycle by deleting job var-www-media-public.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: var-www-media-public.mount: Job var-www-media-public.mount/start deleted to break ordering cycle starting with local-fs.target/start

Eu tentei especificar x-systemd.requires=/mnt/media na montagem de ligação, mas ela não alterou. Eu estou em uma perda para onde ir a seguir com esta questão.

    
por mjb2kmn 19.03.2018 / 20:27

1 resposta

3

Não sei por que uma das montagens de bind é capaz de funcionar. Esta é a minha sugestão de por que ambos podem falhar juntos e como corrigi-lo:

Seu networking.service é ordenado após os sistemas de arquivos locais. As montagens de ligação estão sendo tratadas como sistemas de arquivos locais. Mas, as montagens de ligação também são ordenadas após uma montagem de rede - o systemd adiciona essas dependências lógicas automaticamente para montagens de ligação.

Nesse caso, você precisa informar systemd que a montagem de ligação é, na verdade, uma montagem de rede. Existe uma opção deliberadamente para esse tipo de caso. Basta adicionar a opção de montagem _netdev às montagens de ligação. Para mais informações, esta opção está definida em man systemd.mount .

    
por 19.03.2018 / 20:57