A.3. Fsync


Fsyncé conhecido como uma operação de E/S cara, mas isto não é totalmente verdadeiro. Por exemplo, consulte o artigo Theodore Ts'o's Don't fear the fsync! [5] e a discussão que o acompanha.
O Firefox costumava a chamar a biblioteca dosqlite todas as vezes que o usuário clicava em um link para ir para uma nova página. O Sqlite chamado de fsync e por causa das configurações de sistema do arquivo (principalmente o ext3 com modo de dados ordenados), existia uma longa latência quando nada acontecia. Isto podia levar um longo tempo (até 30 segundos) se outro processo era copiado em um arquivo grande ao mesmo tempo.
No entanto, em outros casos, onde o fsync não era usado, os problemas cresciam com a mudança do sistema de arquivo ext4. O Ext3 era ajustado para modo de dados ordenados, o qual enviava a memória a cada poucos segundos e salvava-as em um disco. Mas com um ext4 e laptop_mode, o intervalo entre salvamentos era maior e dados podiam ser perdidos quando o sistema não esperava desligamentos. Agora o ext4 foi reparado, mas nós ainda consideramos o design de nossos aplicativos com cuidado, e usamos o fsync de acordo como o adequado.
O exemplo simples a seguir de leitura e gravação em um arquivo de configuração mostra como um backup de um arquivo pode ser realizado ou como dados podem ser perdidos:
/* open and read configuration file e.g. ~/.kde/myconfig */
fd = open("./kde/myconfig", O_WRONLY|O_TRUNC|O_CREAT);
read(myconfig);
...
write(fd, bufferOfNewData, sizeof(bufferOfNewData));
close(fd);
Uma melhor solução seria:
open("/.kde/myconfig", O_WRONLY|O_TRUNC|O_CREAT);
read(myconfig);
...
fd = open("/.kde/myconfig.suffix", O_WRONLY|O_TRUNC|O_CREAT);
write(fd, bufferOfNewData, sizeof(bufferOfNewData));
fsync; /* paranoia - optional */
...
close(fd);
rename("/.kde/myconfig", "/.kde/myconfig~"); /* paranoia - optional */
rename("/.kde/myconfig.suffix", "/.kde/myconfig");
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja oBlog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.