No puedo encontrar una respuesta simple y directa sobre qué operaciones de metadatos del sistema de archivos realmente persisten en los diarios del sistema de archivos ext4 y xfs. Nótese que estoy no indagando sobre qué POSIX declara ser "atómica". Me preocupa más qué subconjunto de operaciones de sistemas de archivos atómicos son efectivamente duraderos en virtud de ejecutarse con un diario habilitado sin tener que inclinarse hacia atrás y fsync(2)
todo el tiempo.
Operaciones estoy bastante seguro de contar:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Operaciones de las que no estoy completamente seguro:
symlink(2)
El symlink(2)
caso es el más problemático, ya que no parece haber una forma directa fsync(2)
o fdatasync(2)
los bloques de datos subyacentes que almacenan el contenido de un enlace simbólico. Saber que el diario se encarga de esto por mí sería un alivio.
fuente
Ninguna. Si desea asegurarse de que los cambios persisten después de un bloqueo, debe fsync, punto. El registro en el diario solo garantiza que, en caso de un bloqueo, ninguna de las operaciones que enumeró se realizará a medias .
fuente
Usted sabe que el diario ext4 funciona por número de bloque y no por operación, ¿correcto? Los "metadatos" serían cualquier cosa que no sean los bloques de datos reales para el inodo dado, independientemente de la operación que utilizó para modificar el bloque en cuestión.
fuente
xfstests parece afirmar que fsync () en un directorio debe persistir en cualquier enlace simbólico que contenga.
No he verificado esto. Es posible que me haya perdido algo.
xfstests es utilizado por muchos desarrolladores de sistemas de archivos Linux. Esta prueba está en el directorio "genérico". Implica que debería aplicarse a todos los sistemas de archivos de Linux. (O al menos, todos los sistemas de archivos del dispositivo de bloque. La prueba funciona utilizando un dispositivo de bloque virtual especial).
https://github.com/kdave/xfstests/blob/master/tests/generic/348
fuente