Alterações nos arquivos não aparecem até que a partição seja desmontada

0

Eu tenho um sistema de arquivos FAT32 montado. Depois de alterar um arquivo, posso ler o arquivo de volta e ainda ver a versão antiga. Minhas alterações não persistem até eu desmontar e remontar a partição. Esse comportamento é normal? Se sim, porque faz sentido ou porque é necessário? Existe uma maneira de configurá-lo para que as alterações apareçam automaticamente?

    
por Karolis Juodelė 19.02.2013 / 17:29

2 respostas

1

O Linux, assim como a maioria dos outros sistemas operacionais, armazena em cache as operações de E / S do disco. Você pode forçar o kernel a liberar seus buffers com o comando sync depois de executar as modificações do arquivo. No entanto, isso degrada o desempenho de todo o sistema, já que todos os buffers atualmente 'sujos' são liberados para os discos com esse comando. Como alternativa, você pode usar a função de biblioteca fsync C para liberar as alterações que você acabou de fazer em um determinado arquivo, mas essa função não garante que todo o sistema de arquivos esteja em estado consistente na mídia.

    
por 19.02.2013 / 17:51
1

Você pode encontrar a versão antiga do mesmo arquivo mesmo depois de desmontá-lo, já que um sistema de arquivos não precisa necessariamente armazenar o novo arquivo no mesmo lugar. Portanto, um novo arquivo não sobrescreve necessariamente o antigo, se for armazenado em outro local livre.

As alterações feitas em um sistema de arquivos não são gravadas imediatamente no disco devido a motivos de desempenho. Por que fazer programas esperar até que um arquivo tenha sido fisicamente escrito completamente, quando você pode também fazer com que o SO faça isso em segundo plano? Às vezes, esse comportamento assíncrono pode até salvar as gravações por completo, como quando um arquivo é excluído ou sobrescrito imediatamente após a criação, ele nunca precisou ser fisicamente armazenado em primeiro lugar.

Você pode desativar esse comportamento para a maioria dos sistemas de arquivos usando a opção sync mount. Existe também o comando sync , que força os dados a serem gravados no disco sem um montante.

Você nunca deve acessar os dados brutos do sistema de arquivos. Se você tiver / dev / sdb1 montado e, em seguida, usar outra máquina para montar o mesmo sistema de arquivos (através de um dispositivo de bloco de rede ou qualquer outro), então dois sistemas trabalham com os mesmos dados do sistema de arquivos ao mesmo tempo, . Apenas sistemas de arquivos especiais (cluster) funcionam dessa maneira; para todos os outros, você precisa de um sistema de arquivos de rede (em que apenas uma máquina monta o disco e expõe seus arquivos de forma transparente pela rede).

    
por 19.02.2013 / 17:55