Bem, finalmente resolvi o problema.
Neste caso, tive dois problemas:
-
Por padrão, o remote-fs.target NÃO depende de network-online.target. Este é um bug conhecido? relatado pela comunidade. Então, isso faz o que às vezes funciona e às vezes não (depende se o ethernet tem link ou não quando o nfs está montado).
-
Segundo problema, no meu caso, montei rbinds após montar o NFS. A origem dos rbinds é uma pasta do ponto de montagem do NFS (portanto, é claro que é necessário montá-lo mais tarde). Quando o systemd gera os arquivos unitários ".mount" para cada ponto de montagem do fstab, todos os rbinds dependem do local-fs.target. Claro, isso é um problema neste caso porque ele poderia montar o rbinds (local-fs.target) antes do nfs mountpoint (remote-fs.target).
Então, para resolver essa situação, o que eu fiz é:
-
Primeiro, editei o arquivo /lib/systemd/system/remote-fs-pre.target e adicionei:
Quer = network-online.target
Depois de = network-online.target
-
Então, no / etc / fstab eu indiquei ao ponto de montagem do NFS as próximas opções:
X.X.X.X: / nfs_share / mnt / nas nfs _netdev, noauto, x-systemd.automount , nolock, suave, intr, nfsvers = 3, tcp, bg, rw 0 0
E, finalmente, indicamos ao systemd que rbinds são dispositivos de rede (assim, systemd os colocará em remote-fs.target) e também indiquei que / mnt / nas precisa ser montado estritamente.
/ mnt / nas / config / php / etc / php nenhum noauto, _netdev, x-systemd.automount, x-systemd.requires = / mnt / nas , rbind, padrões 0 0
Com essa mudança, eu corrijo a ordem de lançar as montagens de forma adequada no systemd