¿Cómo puedo comprobar si mi sistema Linux está configurado para sincronizar los cambios en el disco inmediatamente?

¿Cómo puedo comprobar si mi sistema Linux está configurado para sincronizar los cambios en el disco inmediatamente?

Noté que un motor de indexación en mi sistema,recordarutiliza mucho disco cuando está funcionando y que hubo actividad en el disco cada vez que cambié la configuración de un complemento de Firefox. No sé si esas aplicaciones están diseñadas para sincronizar los cambios inmediatamente en el disco o si se debe a alguna configuración en la configuración del sistema.

¿Hay alguna manera de averiguarlo?

PD. dejé una pregunta enRecomendaciones de softwaresobre el tema de recuperación/xapian.

Respuesta1

Compruebe si el sistema de archivos aparece en la salida de grep -w sync /proc/mounts. Spoiler: la respuesta es no. Montar un sistema de archivos con sincronización inmediata es extremadamente lento. (También provoca muchas escrituras pequeñas, lo que reduciría la vida útil de los dispositivos flash).

Algunas aplicaciones descargan los datos al disco llamandofdatasync. Lamentablemente, las API de Unix no están bien diseñadas en lo que respecta a la resiliencia¹. Desde la perspectiva de la aplicación, algunos cambios deben ser resistentes, porque la aplicación ha transmitido datos a una máquina remota que indica que el cambio se ha guardado. En este caso fdatasynces la interfaz correcta. Pero muchas aplicaciones necesitan algo diferente, es decir, la garantía de que si realizan el cambio 1 seguido del cambio 2 y el sistema falla a la mitad, luego de reiniciar no habrá el cambio 2 sin el cambio 1. (Ejemplo: cambio 1 = escribir una nueva versión de un archivo, cambiar 2 = eliminar la versión anterior). Los sistemas de archivos reordenan las escrituras del sistema de archivos para mejorar el rendimiento; normalmente esto es invisible para las aplicaciones, ya que solo se trata de lo que sucede entre el caché/búfer del sistema de archivos y el disco, no de nada que sea visible para las aplicaciones. Pero en caso de una falla del sistema, el contenido del disco refleja el orden de las escrituras reales en el disco. No hay una API que diga "este cambio debe tener lugar antes de ese cambio", por lo que las aplicaciones se utilizan fdatasynccomo alternativa para los pobres (realice el cambio 1, llame fdatasyncpara asegurarse de que se haya propagado al disco y luego realice el cambio 2). Esto puede tener un impacto negativo en el rendimiento, especialmente en medios con escritura lenta como flash.

Si una aplicación es excesivamente lenta en su sistema debido al uso excesivo de fdatasynco su prima fsync, puede usarcomermisdatospara anular las llamadas fsync/ fdatasync. Pero tenga en cuenta que si su sistema falla en el medio, es posible que se quede con datos inconsistentes.

No estoy seguro de si mi respuesta es relevante para recordar o cambiar la configuración de un complemento de Firefox. Esas operaciones bien pueden serlecturadesde el disco. Recuerde especialmente: ¡su trabajo es leer una gran cantidad de datos!

Además, incluso si los cambios no se sincronizan en el disco inmediatamente, es posible que se escriban algunos datos. Si los datos no se escriben en el disco, deben permanecer en la memoria y, mientras tanto, esa memoria no se puede utilizar para otras cosas más útiles. Además, sería un desperdicio no mantener el disco ocupado: si hay datos que escribir, el kernel comenzará a escribirlos, mientras la aplicación continúa ejecutándose y produciendo más datos.

¹ La resiliencia, en el contexto del diseño del sistema de archivos, es la cuestión de si un cambio en el sistema de archivos se conservará si el sistema falla.

información relacionada