A.3. Fsync


Fsync se conoce como una operación de E/S costosa, pero esto no es totalmente cierto. Por ejemplo, consulte el artículo de Theodore Ts No le tema a fsync! [5] y la discusión que lo acompaña.
Firefox llamaba a la biblioteca sqlite cada vez que el usuario hacía clic en un enlace para ir a una nueva página. Sqlite llamaba a fsync y debido a las configuraciones del sistema de archivos (principalmente ext3 con datos en modo ordenado), había más latencia cuando nada sucedía. Esto podía tardar un largo tiempo (más de 30 segundos) si otro proceso estaba copiando un archivo grande al mismo tiempo.
Sin embargo, en otros casos, donde fsync wasn't no se utilizaba, se presentaban problemas con el cambio al sistema de archivos ext4. Ext3 se establecía de modo datos-ordenados, lo cual borraba la memoria cada pocos segundos y le ahorraba al disco. Sin embargo, con ext4 y modo_portátil, el intervalo entre almacenamiento utilizaba más tiempo y los datos podían perderse cuando el sistema inesperadamente era apagado. Ahora ext4 está corregido, pero debe aún considerarse cuidadosamente el diseño de sus aplicaciones y usar fsync como es apropiado.
El siguiente ejemplo de lectura y escritura en un archivo de configuración muestra cómo se puede hacer una copia de seguridad de un archivo y cómo se pueden perder datos:
/* 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);
Un mejor enfoque sería:
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

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

© 2024 Red Hat, Inc.