4.8. Diario de datos

Generalmente, GFS2 escribe solo metadatos en su diario. Luego, el contenido de los archivos se escribe al disco mediante la sincronización periódica del kernel que vuelca los búferes del sistema de archivos. Una llamada fsync() en un archivo, hace que los datos del archivo se escriban al disco de forma inmediata. La llamada retorna cuando el disco informa que todos los datos han sido escritos de forma exitosa.
El diario de datos puede resultar en un tiempo de fsync() reducido, para archivos muy pequeños, porque los datos del archivo se escriben al diario además de los metadatos. Esta ventaja se reduce rápidamente cuando el tamaño del archivo aumenta. La escritura a un medio y a archivos más grandes será mucho más lenta con diarios de datos encendidos.
Las aplicaciones que dependen de fsync() para sincronizar los datos de archivo pueden tener un rendimiento mejorado con el uso de diarios de datos. Los diarios de datos pueden activarse automáticamente para cualquier archivo GFS2 creado en un directorio con la opción correcta (y todos sus subdirectorios). Los archivos existentes de longitud cero pueden también tener diarios de datos encendidos o apagados.
Activar el diario de datos en un directorio establece el directorio a "inherit jdata", lo cual indica que todos los archivos y directorios subsiguientes creados en ese directorio usarán el diario. Puede activar o desactivar el diario de datos en un archivo con el comando chattr.
Los siguientes comandos activan el diario de datos en el archivo /mnt/gfs2/gfs2_dir/newfile y luego verifican si el indicador se ha establecido correctamente.
[root@roth-01 ~]# chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
Los siguientes comandos desactivan el diario de datos en el archivo /mnt/gfs2/gfs2_dir/newfile y luego verifican si el indicador se ha establecido correctamente.
[root@roth-01 ~]# chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
También puede utilizar el comando chattr para establecer el indicador j en un directorio. Cuando se establece este indicador para un directorio, todos los archivos y directorios creados posteriormente en ese directorio son puestos en el diario. La siguiente serie de comandos establece el indicador j en el directorio gfs2_dir, luego verifica si el indicador se ha establecido correctamente. Después de esto, los comandos crean un archivo nuevo llamado newfile en el directorio /mnt/gfs2/gfs2_dir y verifican si el indicador j ha sido establecido para el archivo. Debido a que el indicador j se establece para el directorio, newfile también deberá tener activado el diario.
[root@roth-01 ~]# chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]# lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir
[root@roth-01 ~]# touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]# lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile