Ativar sync
no nível do sistema de arquivos geralmente não é uma boa solução (geralmente, nem sempre). Quando sync
está habilitado, ele não apenas força uma liberação de buffer em cada gravação, mas também nega a capacidade do sistema de arquivos de reordenar as gravações para otimizar o IO (escrevendo fragmentos maiores). Isso também resulta em maior fragmentação.
A melhor solução é obter qualquer aplicativo que você esteja usando para usar fsync
(ou fdatasync
). Quando um aplicativo grava dados, ele pode fazer uma chamada para fsync
, o que forçará esses dados para o disco. Desta forma, são apenas determinados dados que estão sendo sincronizados o tempo todo, e não todo o sistema de arquivos. Ele também é um pouco mais inteligente, pois o fsync
pode ser chamado assim que o aplicativo tiver escrito todos os seus dados, e não todos os bits.
Se você estiver usando o syslog-ng, ele poderá habilitar fsync
no destino por arquivo ( documentação ). O rsyslog também pode ter esse recurso, mas eu não sei.