Eu tenho o dispositivo antigo montado em /mnt com:
$ mount olddevice /mnt
Gostaria de alterar o dispositivo no ponto de montagem /mnt . Para isso, simplesmente montei newdevice em cima dele:
$ mount newdevice /mnt
Com isso, processos que ainda possuem descritores de arquivo no dispositivo antigo podem continuar funcionando no dispositivo antigo, mas novos processos usando /mnt usarão newdevice .
Eu posso detectar quando o dispositivo antigo não é mais usado e decidir desmontá-lo. Meu problema é como desmontá-lo:
$ umount olddevice
umount: olddevice: umount failed: Invalid argument.
É possível desmontá-lo diretamente? Ou é obrigatório desmontar newdevice primeiro (eu não quero isso)?
Se você ainda não estiver executando com a propagação de montagem habilitada, por exemplo, conforme os padrões do systemd, execute isto primeiro:
Então:
Em seguida, desmonte a mágica com segurança - tomando cuidado para não desmontar todo o sistema:
Normalmente, gosto de usar as variantes recursivas dos comandos
mount
/ .umount
Você diz que começou com apenas um sistema de arquivos montado por baixo/mnt
. Na sequência acima, useiumount -R /root.orig/mnt
. Se também houver um sistema de arquivos montado em um subdiretório de/mnt
, esseumount -R
comando poderá falhar no meio do caminho. Ou seja, porque não há arquivos abertos na submontagem, mas ainda existem alguns arquivos abertos na montagem principal. IMO isso parece semelhante a comoumount -l
funciona.umount -l /path
desmonta e desconecta uma árvore de montagem, e cada sistema de arquivos independente é encerrado assim que não tiver arquivos abertos.