Um colega meu montou um volume incorreto no diretório e, em seguida, montou o volume correto no mesmo diretório. Existe uma maneira de desmontar esse volume "incorreto" sem tocar no volume "correto"?
Aqui está um exemplo reproduzível dessa situação:
$ dd if=/dev/zero of=file-a bs=1M count=1
$ mkfs.ext4 file-a
$ dd if=/dev/zero of=file-b bs=1M count=1
$ mkfs.ext4 file-b
$ mkdir target
$ sudo mount -o loop file-a target
$ sudo mount -o loop file-b target
Aqui está a situação após esses comandos:
$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/xxx ext4
└─/home/user/test-umount/target /dev/loop1 ext4 rw,relatime
└─/home/user/test-umount/target /dev/loop2 ext4 rw,relatime
Então, queremos desmontar o /dev/loop1
dispositivo aqui, mas mantenha o /dev/loop2
montado no target
.
Fazer umount target
irá desmontar o segundo volume, o que não é o efeito pretendido. Tentar desmontar o próprio dispositivo de loop fornece:
$ sudo umount /dev/loop1
$ umount: /dev/loop1: umount failed: Invalid argument.
Existe alguma maneira de resolver este enigma?
Sim existe.
Mova essa
target
montagem para outro lugar, desmonte o original e mova-o de volta:Se a raiz ou qualquer outra montagem pai de
target
tiver sua propagação definida como compartilhada (o padrão ao usar o systemd), uma montagem de movimentação não funcionará. Nesse caso, você pode colocar entre parêntesesmount --move
de um par demount --make-rprivate /; ...; make --rshared /
comandos:É uma boa ideia verificar isso, no entanto. Antes e depois: