Aumentar el tamaño de Journal en un Filesystem en Linux

Cuando almacenamos datos en un filesystem, o sistema de archivos, el sistema operativo necesita guardar una serie de información para poder restaurar el filesystem en caso de corrupción de datos mientras se está realizando una transacción (escritura de datos en disco).

A este espacio de disco reservado se le conoce como journal y se almacena un registro de cada transacción que se realiza sobre cada filesystem. Una vez finalizada la transacción con éxito, se eliminan los datos del journal, pues ya no se necesitarán para restaurar el FS en caso de corrupción.

Conocer el Tamaño del Journal

No todos los filesystems soportan journal pero sí los de uso más habitual en Linux como pueden ser ext4 o xfs.

Para este ejemplo, voy a utilizar un filesystem ext4 para conocer el tamaño del journal.

[[email protected]~]# dumpe2fs /dev/mapper/vg_nas-lv_nas_1148_ioc | grep Journal\ size
dumpe2fs 1.41.12 (17-May-2010)
Journal size:             32M
[[email protected]~]#

Como vemos en este caso, es de 32MB.

¿Por qué Incrementar el tamaño del Journal?

Para incrementar el tamaño del journal necesitamos desmontar el filesystem. No es una operación que podamos realizar en caliente.

Supongamos que, inicialmente habíamos creado un filesystem pequeñito en el sistema operativo. Por ejemplo, de 2GB pero, por requerimientos de la aplicación, lo necesitamos aumentar a 1,1TB.

Como cada tipo de filesystem tiene definido un número máximo de bloques que se pueden crear, la solución pasaría por aumentar el tamaño del número de bloque para que pueda seguir creciendo, pues, inicialmente, era muy pequeñito.

Con un ejemplo lo veremos más claro:

  • El tamaño del filesystem es de 1008MB pero necesitamos aumentar su tamaño:
[[email protected]~]# df -hP /serveis/dades/PRE/NAS02/1148_ioc
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/vg_nas-lv_nas_1148_ioc 1008G  536M  957G   1% /serveis/dades/PRE/NAS02/1148_ioc
[[email protected]~]#
  • Intentamos incrementar su tamaño pero la operación no está permitida:
[[email protected]~]# resize2fs /dev/mapper/vg_nas-lv_nas_1148_ioc
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_nas-lv_nas_1148_ioc is mounted on /serveis/dades/PRE/NAS02/1148_ioc; on-line resizing required
old desc_blocks = 64, new_desc_blocks = 68
Performing an on-line resize of /dev/mapper/vg_nas-lv_nas_1148_ioc to 283796480 (4k) blocks.
resize2fs: Operation not permitted While trying to add group #8192
[[email protected]~]#
  • Observamos que el tamaño de bloque de Journal es de 32MB:
[[email protected]~]# dumpe2fs /dev/mapper/vg_nas-lv_nas_1148_ioc | grep Journal\ size
dumpe2fs 1.41.12 (17-May-2010)
Journal size:             32M
[[email protected]~]#
  • Así que vamos a incrementar su tamaño para que el FS pueda crecer:
[[email protected]~]# umount /dev/mapper/vg_nas-lv_nas_1148_ioc
[[email protected] ~]#

[[email protected] ~]# tune2fs -j /dev/mapper/vg_nas-lv_nas_1148_ioc
tune2fs 1.41.12 (17-May-2010)
Creating journal inode: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[[email protected] ~]#

[[email protected] ~]# dumpe2fs /dev/mapper/vg_nas-lv_nas_1148_ioc | grep Journal\ size
dumpe2fs 1.41.12 (17-May-2010)
Journal size:             128M
[[email protected] ~]#

Como vemos, ahora es de 128MB.

  • Volvemos a ampliar el filesystem. Esta vez ya no nos da el error anterior:
[[email protected] ~]# e2fsck -f /dev/mapper/vg_nas-lv_nas_1148_ioc
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg_nas-lv_nas_1148_ioc: 50339/67108864 files (0.1% non-contiguous), 4382104/268435456 blocks
[[email protected] ~]#

[[email protected] ~]# resize2fs /dev/mapper/vg_nas-lv_nas_1148_ioc
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_nas-lv_nas_1148_ioc to 283796480 (4k) blocks.
The filesystem on /dev/mapper/vg_nas-lv_nas_1148_ioc is now 283796480 blocks long.

[[email protected] ~]#
  • Finalmente, montamos el FS con el nuevo tamaño:
[[email protected] ~]# mount /serveis/dades/PRE/NAS02/1148_ioc

[[email protected] ~]# df -hP /serveis/dades/PRE/NAS02/1148_ioc
Filesystem                          Size  Used Avail Use% Mounted on
/dev/mapper/vg_nas-lv_nas_1148_ioc  1.1T  537M 1011G   1% /serveis/dades/PRE/NAS02/1148_ioc
[[email protected] ~]#
COMPÁRTEME

Deja un comentario