atime, noatime y relatime

disco duroAtime, noatime y relatime son atributos que se pueden asignar a los sistemas de ficheros, directorios o ficheros en Linux y que definen el registro de los accesos a los ficheros/directorios.

Cuando un sistema de ficheros está montado con el atributo atime (en muchas distribuciones por defecto), significa que cada vez que se acceda a un fichero o directorio, se realizará una escritura en el disco para guardar la fecha del último acceso al mismo. Esto implica un aumento considerable de I/O en la máquina y hay sistemas en los que puede conllevar una degradación del servicio bastante elevada. Por este motivo, muchas veces se recurre a deshabilitar este atributo, para ello debemos montar el filesystem con noatime.

Existe otro atributo que se encuentra a mitad de camino entre atime y noatime, se trata de relatime (Ubuntu por ejemplo ya lo usa por defecto).  Relatime reduce considerablemente el refresco de la fecha de acceso ya que únicamente se modifica si el valor actual de atime es menor que la fecha de modificación del fichero. Esto es útil en el caso de que utilicemos aplicaciones que hagan uso del valor atime para ciertas tareas.

Entrando en la parte práctica, haremos uso del fichero fstab (/etc/fstab), que es donde se listan los discos y particiones del sistema, para modificar este parámetro. Únicamente tendríamos que añadir en la sección de atributos (4ª columna) nuestra selección, en este caso relatime:

/dev/sda3  /              ext4         relatime,errors=remount-ro  0  1

Posteriormente si queremos activar esta modificación, remontamos la partición, en este caso /

# mount -o remount /

Y ya deberíamos visualizar los atributos del sistema de ficheros actualizados:

$ mount
/dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro)

También podemos montarlo de forma temporal con relatime y pasándole todas las opciones que queramos (-o) sin modificar el fstab:

# mount -o remount,rw,relatime /

Otro ejemplo, en este caso como noatime en /etc/fstab:

UUID=8d76759b-8949-46d1-9dd6-eec549960ff0 /datos ext3 rw,noatime 0 0

Conviene recordar también que podemos asignar estos atributos de forma independiente a ficheros o directorios, no tiene porque ser al sistema de ficheros completo:

# chattr +A fichero
# lsattr fichero
-------A---------e- fichero

Con el comando “stat” podremos verificar que pese a acceder al fichero no se modifica la fecha de acceso:

$ stat fichero 
  File: `fichero'
  Size: 7         	Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d	Inode: 21242       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/foo   Gid: ( 1000/foo)
Access: 2014-12-15 13:23:25.000482542 +0100
Modify: 2014-12-15 13:23:24.230482542 +0100
Change: 2014-12-15 13:23:24.280482542 +0100

De este modo hemos deshabilitado atime para el fichero. Si no manejáis el comando chattr os recomiendo revisar esta otra entrada. Chattr y lsattr: visualizar y modificar atributos en sistemas de ficheros Linux

2 comentarios en “atime, noatime y relatime

  1. Excelente artículo, la verdad que no tenía ni idea del atributo noatime ni relatime en los ficheros. Ya lo he desactivado en mi disco y espero notar la diferencia.

    Por cierto, a los interesados en el tema, aquí hay una discusión sobre todo esto bastante interesante: http://kerneltrap.org/node/14148 .

    Un saludo y a seguir así. Jan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *