Obviamente você não encontrou nenhuma abordagem em man umount
.
Desde que os dispositivos sejam acessados por meio do mapeador de dispositivos ( /dev/mapper/
/ /dev/dm-*
), você pode implementar re-mapeamentos surpreendentes com dmsetup
. Convenientemente isso inclui
remove [-f|--force] device_name
Removes a device. It will no longer be visible to dmsetup.
Open devices cannot be removed except with older kernels that
contain a version of device-mapper prior to 4.8.0. In this case
the device will be deleted when its open_count drops to zero.
From version 4.8.0 onwards, if a device can't be removed because
an uninterruptible process is waiting for I/O to return from it,
adding --force will replace the table with one that fails all
I/O, which might allow the process to be killed.
Eu pensei que você poderia ter um comportamento mais confiável se pudesse fazer o equivalente no nível do sistema de arquivos, mas as opções para isso parecem ser ainda mais obscuras. Por exemplo. você quer alguma construção como um sistema de arquivos de rede FUSE, o sshfs ... como um sistema de arquivos de rede ele deve suportar o cache de leitura ... e da página man ele se parece com os tempos limite do cache, por exemplo. para dirs pode ser definido alto como você precisaria ... sshfs suporta novas tentativas, então você deve ser capaz de matar o ouvinte SSH ... Neste exemplo, as leituras não satisfeitas pelo cache seria hard-block indefinidamente.
Por isso, sugiro gastar algum tempo com o mapeador de dispositivos e dmsetup
.
Em ambos os casos, você não está desmontando o sistema de arquivos usado pelo aplicativo. A entrada de montagem ainda estará visível em /proc/mounts
etc. Isso será absolutamente necessário; um arquivo aberto deve apontar para algum sistema de arquivos. Em vez disso, você está desanexando esse sistema de arquivos do armazenamento de backup original.