logo linux

Inicialización perezosa del sistema de archivos

Linux es una de las piezas de software más complejas que existen. Resulta imposible conocer absolutamente todos los detalles de su funcionamiento y eso se traduce en que todos los días puedes aprender algo nuevo sobre este sistema operativo.

Dentro de la inmensidad del kernel nos encontramos con los sistemas de archivos y de entre ellos, Ext 4 probablemente sea el más extendido. Este sistema de archivos tiene multitud de funciones, pero hay una que puede provocar más de un dolor de cabeza si no se conoce de su existencia.

gparted-main-window
Gestor de particiones GParted

Se trata de la inicialización perezosa del sistema de archivos (Lazy Initialization) y entra en juego cuando se formatea una unidad en Ext4 o se realizan modificaciones en su tamaño. En el proceso de creación, las tablas de inodos se tienen que llenar de ceros para borrarlas. El problema viene cuando tenemos discos de varios cientos de gigas o algún que otro Tb, ya que este llenado de ceros puede tardar demasiado tiempo.

Para acelerar la creación del sistema de archivos y poder usarlo lo antes posible, existe una función en Ext4 llamada ‘lazy_itable_init’ que deja el proceso de llenado de ceros en segundo plano, permitiendo al usuario acceder y escribir a la zona de la partición inicializada mientras se procede a la inicialziación del resto. Eso significa que el usuario podrá usar la partición mientras se termina de formatear.

Esta función está disponible en Linux desde 2011 y se usa por defecto al crear una nueva partición. La consecuencia más directa, a parte de disminuir el tiempo del proceso, es que cuando creas o modificas el tamaño de un sistema de archivos en Ext4, la unidad de almacenamiento tendrá actividad durante un tiempo hasta que se termina de inicializar por completo. Eso quiere decir que verás el led de actividad del disco encendida aún cuando aparentemente el sistema no está haciendo nada.

Para conocer más detalles de la inicialización perezosa, puedes visitar este parche que estreno la función en Linux 2.6.37.