Eu tenho um problema ao remover montagens criadas com mount -o bind
de uma pasta NFS montada localmente. Assuma a seguinte estrutura de montagem:
Diretório montado do NFS:
$ mount -o rw,soft,tcp,intr,timeo=10,retrans=2,retry=1 \
10.20.0.1:/srv/source /srv/nfs-source
Diretório vinculado:
$ mount -o bind /srv/nfs-source/sub1 /srv/bind-target/sub1
Quais os resultados neste mapa de montagem
$ mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
# ...
10.20.0.1:/srv/source on /srv/nfs-source type nfs (rw,soft,tcp,intr,timeo=10,retrans=2,retry=1,addr=10.20.0.100)
/srv/nfs-source/sub1 on /srv/bind-target/sub1 type none (rw,bind)
Se o servidor ( 10.20.0.1
) ficar inativo (por exemplo, ifdown eth0
), as alças ficarão obsoletas, o que é esperado.
Agora posso desmontar a montagem do NFS com força
$ umount -f /srv/nfs-source
Isso leva alguns segundos, mas funciona sem problemas. No entanto, não consigo desmontar o diretório ligado em /srv/bind-target/sub1
. O umount
forçado resulta em:
$ umount -f /srv/bind-target/sub1
umount2: Stale NFS file handle
umount: /srv/bind-target/sub1: Stale NFS file handle
umount2: Stale NFS file handle
Aqui está um link
Eu tentei desmontar os subdiretórios de antemão, encontrar qualquer processo que acesse qualquer coisa dentro do NFS ou ligar montagens (não há nenhuma).
lsof
também reclama:
$ lsof -n
lsof: WARNING: can't stat() nfs file system /srv/nfs-source
Output information may be incomplete.
lsof: WARNING: can't stat() nfs file system /srv/bind-target/sub1 (deleted)
Output information may be incomplete.
lsof: WARNING: can't stat() nfs file system /srv/bind-target/
Output information may be incomplete.
Eu tentei com os recentes kernels Linux estáveis 3.2.17, 3.2.19 e 3.3.8 (não posso usar o 3.4.x, porque preciso do patch do grsecurity, que ainda não é suportado - o grsecurity não é corrigido no os testes acima!).
Meus nfs-utils são da versão 1.2.2 (debian stable).
Alguém tem uma ideia de como eu posso:
- forçar o desmontar de alguma outra maneira? (qualquer truque sujo é bem-vindo, perda de dados ou dano neglible neste momento)
- usa outra coisa em vez de
mount -o bind
? (não pode usar links suaves, pois diretórios montados serão usados no chroot; bindfs
via FUSE está longe de ser lento para ser uma opção)
Obrigado
Paul
Atualização 1
- Com o 2.6.32.59, o montante das submontagens (antigas) funcionam bem. Parece ser um erro de regressão do kernel.
- Os testes acima, onde com o NFSv3. Testes adicionais com o NFSv4 não mostraram alterações.
Atualização 2
- Testamos agora vários kernels 2.6 e 3.x e agora temos certeza de que isso foi introduzido no 3.0.x. Vamos filmar um relatório de bug, esperamos que eles resolvam isso.