Eu tenho uma montagem CIFS de um único volume que tem 2 subdiretórios montados. Na inicialização, o systemd reclama de um "ciclo de pedido" e falha ao montar 1 dos vínculos, mas o outro funciona bem. Se eu executar mount -a
, o vínculo ausente será montado. 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. Não sei como, mas, acho que pode ser significativo, talvez devido à ordem de classificação, porque quando altero a ordem em fstab
apenas a public
montagem do bind falha. 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 não fez nenhuma alteração. Estou sem saber para onde ir a seguir com esse problema.
Não sei por que mesmo uma das montagens de ligação é capaz de funcionar. Aqui está minha sugestão de por que ambos podem falhar juntos e como corrigi-lo:
Seu
networking.service
é ordenado após 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 este tipo de caso. Basta adicionar a opção de montagem_netdev
às montagens de ligação. Para maiores informações, esta opção está definida emman systemd.mount
.