Por que os arquivos são corrompidos na reinicialização por hardware?

0

Quando você salva um arquivo de texto, altera o conteúdo, salva novamente e pressiona o botão de reinicialização do hardware, o arquivo tem uma grande chance de se corromper (!) (todo o conteúdo é convertido para \ 0 caracteres). Eu posso reproduzir isso em máquinas diferentes usando o Windows 7, 8.1 e 10, mesmo que eu espere alguns segundos, feche o arquivo ou até mesmo feche o aplicativo. Eu tentei com o Notepad, Notepad ++, Paint, cópia de arquivo no Explorer e um aplicativo de leitura / gravação de arquivo UWP ingênuo. Fiquei perplexo quando vi pela primeira vez esse comportamento e não entendi por que, em 2017, você ainda não pode confiar em seus arquivos salvos depois de uma perda repentina de energia.

  • Você deve esperar que os arquivos se corrompam assim em uma perda repentina de energia?
  • Quando e como você sabe se um arquivo é mantido "real" em uma unidade de disco rígido?
  • Por que os arquivos ainda são corrompidos dessa forma e quais redes de segurança devem evitar isso?
  • Se houver redes de segurança envolvidas em que circunstâncias elas podem falhar?

Eu imagino que os arquivos não sejam realmente gravados em seu local designado ao usar uma operação file_write () porque há algum cache e journaling envolvidos e, no final, o sistema operacional e / ou o controlador de disco decidem quando isso é feito. Mas eu pensei que o diário em particular foi inventado para evitar isso. E a gravação real do arquivo deve acontecer ao chamar uma operação file_flush () ou file_close ().

Atualização: há uma opção no Windows - > Gerenciador de dispositivos - > Unidades de disco - > MyDiskDrive - > Propriedades - > Políticas - > [x] Ative o cache de gravação no dispositivo

Improves system performance by enabling write caching on the device, but a power outage or equipment failure might result in data loss or corruption

Isso corresponde exatamente ao comportamento descrito acima, exceto se eu desabilitar o cache de gravação, fazer uma reinicialização limpa e testar novamente, os arquivos ainda ficarão corrompidos. WTF?

    
por Gerold Meisinger 15.03.2017 / 10:59

1 resposta

1

O engenheiro da Microsoft Raymond Chen escreveu dois artigos sobre a caixa de seleção sobre a qual você está perguntando:

No entanto, existem várias camadas de cache, algumas delas fora do controle do sistema operacional, tanto que, sem emitir um comando de desligamento, é impossível ter certeza de que um determinado arquivo é gravado.

Se você estiver preocupado com sua integridade de dados, compre um no-break. Isso resolverá seu problema de falta de energia.

    
por 15.03.2017 / 11:27

Tags