Parece que você tem uma noção razoável do que aconteceu.
Sim, porque você desligou o sistema antes que suas alterações fossem confirmadas no disco, elas estavam lá quando você inicializou novamente.
O sistema armazena em cache todas as gravações antes de liberá-las no disco. Há várias opções que controlam esse comportamento, todas localizadas em /proc/sys/vm/dirty_*
[ kernel doc ] . A menos que um flush seja explicitamente executado por um aplicativo via fsync()
[ man 2 fsync ] , os dados são confirmados quando têm idade suficiente ou o cache de gravação é preenchido.
A definição de "dados", como usado acima, inclui modificação na entrada de diretório para excluir o arquivo.
Agora, como para a revista, esse é um dos equívocos comuns sobre o que a revista é para. A finalidade de um diário não é garantir que as alterações sejam reproduzidas ou que os dados não sejam perdidos. O propósito de um jornal é evitar a corrupção do próprio sistema de arquivos, não dos arquivos contidos nele. A revista simplesmente contém informações sobre as alterações que estão sendo feitas e não (normalmente) os dados completos da alteração em si. Os detalhes exatos dependem do sistema de arquivos e do modo de diário. Para ext3 / 4, consulte a opção data
mount em man 8 mount
.
Para responder à sua pergunta complementar sobre a possibilidade de impedir as gravações pendentes sem reiniciar:
De fazer uma leitura rápida do código-fonte do kernel, parece que você pode usar o comando magic sysrq u
([], [ doc do kernel ]) para fazer uma emergência operação somente leitura de remontagem. Parece que isso irá remontar imediatamente todos os volumes somente leitura sem uma operação de sincronização.
Para usar isto, simplesmente pressione Alt + SysRq + u .