Remontar um disco ocupado para o modo somente leitura

16

Eu quero forçar uma partição de disco para o modo somente leitura e mantê-la como somente leitura por mais de 30 minutos.

O que tentei:

  1. mount -o remount,ro (partition-identifier) (mount-point) -t (filesystem)

    Problema : isso deu um erro de dispositivo ocupado, já que alguns processos estavam usando a partição. Eu não quero matar os processos usando o disco. Eu quero simular o disco de repente indo somente leitura quando os processos ainda estão usando.

  2. Usado chave mágica do sysrq, como abaixo

    echo u > /proc/sysrq-trigger
    

    Problema : Isso fará com que todas as partições do disco sejam somente leitura (embora o dispositivo esteja ocupado). Mas depois de 20 a 30 minutos, a máquina está se reiniciando. Algumas máquinas estão reiniciando imediatamente quando este comando é executado. Não tenho certeza do que está causando essa reinicialização ainda. Não quero que a máquina seja reiniciada e precise manter o disco em modo somente leitura por mais de 30 minutos.

Pergunta :     Existe alguma maneira melhor que eu possa forçar uma única partição de disco para somente leitura e sustentá-la nesse estado por meia hora e trazê-la de volta ao modo de leitura-gravação sem causar qualquer reinicialização no processo?

    
por AdithyaCS 08.04.2015 / 11:21

2 respostas

12

Você normalmente não pode remontar um sistema de arquivos como somente leitura se os processos tiverem um arquivo aberto para gravação ou se contiver um arquivo que foi excluído, mas ainda está aberto. Da mesma forma, você não pode desmontar um sistema de arquivos que tenha qualquer arquivo aberto (ou usos semelhantes de arquivos, como um processo com seu diretório atual, um executável em execução, etc.).

Você pode usar umount -l para liberar o ponto de montagem e impedir a abertura de outros arquivos, mas mantenha o sistema de arquivos montado e mantenha processos que já possuem arquivos abertos funcionando normalmente.

Não consigo pensar em uma maneira genérica de forçar um sistema de arquivos a ser remontado como somente leitura quando não deveria ser. No entanto, se o sistema de arquivos tiver backup de um dispositivo de bloco, você poderá tornar o dispositivo de bloco somente leitura , por exemplo,

echo 1 >/sys/block/dm-4/ro
echo 1 >/sys/block/sda/sda2/ro

echo u > /proc/sysrq-trigger é uma maneira bastante extrema de forçar a remontagem como somente leitura, porque afeta todos os sistemas de arquivos. Ele é um método de último recurso para deixar o sistema de arquivos em um estado limpo antes de reinicializar.

A remontagem de um sistema de arquivos como somente leitura não causa uma reinicialização. O que quer que esteja causando a reinicialização não está diretamente relacionado a remontar a partição como somente leitura. Talvez seja completamente não relacionado, ou talvez isso desencadeie um bug no aplicativo que faz com que ele gire e faça o processador superaquecer e seu processador esteja com defeito ou com overclock e, eventualmente, reinicialize. Você precisa rastrear a causa da reinicialização.

    
por 09.04.2015 / 01:00
2

Use a opção force de mount (supondo que sua montagem tenha um; GNU mount não, mas BSD e macOS, por exemplo):

mount -f -o remount,ro /mount/point

É claro que sua milhagem pode variar dependendo do sistema de arquivos e da situação reais, portanto, essa é uma opção de nível mais alto que tenta outros truques de nível inferior, como, por exemplo, mencionado por @Gilles.

    
por 06.05.2017 / 23:59