Você pode definir o intervalo de confirmação para um valor personalizado que, acredito, pode ser tão alto quanto um número inteiro sem sinal de 32 bits de segundos; cerca de 4 bilhões de segundos, ou 136 anos. Isso está disponível através da opção commit
mount, que você pode colocar em vigor da seguinte forma (isso é apenas um exemplo; você também pode definir isso em fstab
):
mount /dev/sda1 -t ext4 -o rw,data=writeback,nobh,commit=12345678
O intervalo de confirmação não se baseia em nenhum tipo de condição, como se os dados são anexados ou sobrescrevem dados existentes ou o que quer que seja. A opção commit
mount (cujo padrão é 5 segundos se você não fornecer a opção de montagem) é equivalente a fazer algo parecido com isto em um shell bash:
#!/bin/bash
while :
do
echo "Syncing all uncommitted data and journal to disk"
sync
sleep 5
done
Não confunda data=ordered
e este intervalo de sincronização do sistema de arquivos global ("intervalo de confirmação" é talvez um termo menos significativo para aqueles que entendem a funcionalidade do programa de linha de comando sync
, caso em que pode ser melhor chamado o "intervalo de sincronização"). data=ordered
é sobre a ordem na qual os dados e metadados são atualizados (onde data=writeback
é "menos seguro / mais rápido" e data=journal
é "mais seguro / mais lento"). commit=12345678
é sobre a frequência com que o próprio driver do sistema de arquivos força uma sincronização COMPLETA de TODOS os dados / diário / metadados / o que quer que seja para a mídia física. E você certamente pode configurá-lo para 136 anos se quiser, e montar com data=writeback,nobh
e programas que não chamam fsync()
ou sync()
terão páginas sujas na RAM por ... várias vidas úteis.
Atualização: Com base em seu contexto na edição de sua pergunta, eu diria que você deve executar seu sistema de arquivos com opções de montagem data=journal,commit=1
ou até mesmo com a opção sync
mount, até conseguir resolver o kernel do driver gráfico pânico. Isso manterá a integridade máxima dos dados, mas ao custo do desempenho. Você vai querer fazer isso especialmente se estiver gravando dados no disco com freqüência que não pode perder, e isso é duplamente importante se você não "confiar" nos aplicativos que estiver usando para empregar fsync()
apropriadamente.
Fonte: aqui e experiência pessoal