3.7. Diario de los datos

Ordinarily, GFS2 writes only metadata to its journal. File contents are subsequently written to disk by the kernel's periodic sync that flushes file system buffers. An fsync() call on a file causes the file's data to be written to disk immediately. The call returns when the disk reports that all data is safely written.
El diario de datos puede resultar en un tiempo de fsync() reducido, especialmente para pequeños archivos, porque los datos del archivo y los metadatos son escritos al diario. Un fsync() retorna tan pronto como los datos han sido escritos al diario, lo cual puede ser mucho más rápido que el tiempo necesario para escribir los datos de archivo al sistema de archivos principal.
Las aplicaciones que dependen de fsync() para sincronizar los datos de archivo pueden encontrar un rendimiento mejorado al usar diarios de los datos. Los diarios de los datos pueden ser activados automáticamente para cualquier archivo GFS2 creado en un directorio con la opción apropiada (y todos los subdirectorios incluidos en éste). Los archivos existentes con tamaño cero pueden también tener los diarios de los datos encendidos o apagados.
Enabling data journaling on a directory sets the directory to "inherit jdata", which indicates that all files and directories subsequently created in that directory are journaled. You can enable and disable data journaling on a file or a directory with either of the following methods:
  • Ejecutando el comando chattr +j o chattr -j en el archivo o directorio
  • Estableciendo o limpiando la opción jdata en el archivo o directorio con el comando gfs2_tool setflag o con el comando gfs2_tool clearflag
Utilizar el comando chattr es la forma preferida para activar o desactivar el diario de datos en un archivo o directorio.

3.7.1. Activación y desactivación del diario de datos con el comando chattr

Puede activar y 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 que la opción haya sido establecida apropiadamente.
[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 la opción fue desactivada de forma apropiada.
[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 chattr para establecer la opción j en un directorio. Cuando se establece la opción para un directorio, todos los archivos y directorios creados subsecuentemente en ese directorio son puestos en el diario. La siguiente serie de comandos establece la opción j en el directorio gfs2_dir, luego verifica si la opción ha sido establecida correctamente. Después de esto, los comandos crean un archivo nuevo llamado newfile en el directorio /mnt/gfs2/gfs2_dir y verifican si la opción j ha sido establecida para el archivo. Debido a que la opción j es establecida para el directorio, entonces newfile también debe 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