É realmente necessário chamar / bin / sync duas vezes antes de um desligamento não gerenciado?

3

Minha empresa vende um "dispositivo embutido" que é implementado como uma caixa Linux sem cabeçalho com ext4 em um SSD interno. Alguns de nossos usuários têm o hábito de fazer "salvar configurações atuais" nessa caixa e, em seguida, cortar a energia da unidade assim que a unidade informar que a gravação foi concluída (ou seja, dois segundos depois). Isso estava causando uma corrupção ocasional dos arquivos salvos, pois os dados nem sempre eram liberados para o SSD antes que a energia fosse desligada. Por isso, ajustei meu software para executar / bin / sync imediatamente depois de gravar o arquivo (após fechar o identificador de arquivo, mas antes de notificar o usuário de que a gravação foi concluída). Isso parece corrigir o problema, mas meu colega de trabalho diz que uma chamada para / bin / sync não é suficiente e que, para ser realmente seguro, devo executar / bin / sync duas vezes seguidas.

Isso soa paranoia para mim ... Talvez um hábito de versões anteriores do Linux ou Unix cujo utilitário de sincronização não funcionasse de forma confiável. Seu conselho tem mérito, ou deve-se chamar / bin / sync?

    
por Jeremy Friesner 05.01.2011 / 23:34

1 resposta

7

Este link resume muito bem - Uma chamada para sync deve basta. Fazê-lo mais de uma vez é definitivamente um remanescente (e um eu me ater a mim), mas se você está fazendo isso programaticamente você não está ganhando nada - é o atraso que você leva para digitar as 5 teclas que você estava indo realmente para.

É claro que a resposta real é desencorajar oficialmente o consumo de energia e, em vez disso, fornecer um recurso de desligamento que os usuários devem usar, mas você sempre terá que lidar com plug-yankers. .

    
por 05.01.2011 / 23:42