03 marzo 2016

Liberar espacio reservado con TUNE2FS en GNU/Linux

Por omision, los sistemas de archivos EXT2, EXT3 y EXT4 reservan un 5% del espacio disponible en el disco como medida de seguridad para que en el caso de que lleguemos al 100% de espacio utilizado podamos seguir accediendo al servidor y realizar tareas de gestión y administración. Hace años el tamaño de los discos rigidos era bastante menor al actual por lo que este 5% con el tamaño de discos que manejamos ahora puede ser demasiado.

tune2fs permite ajustar parámetros en sistemas de archivos extendidos (ext2, ext3, ext4). Podemos visualizar todos estos parámetros del siguiente modo (suponemos que queremos trabajar con la partición /dev/sda2). Tenemos que autenticarnos como root:

[root@gostir ~]# tune2fs -l /dev/sda2
tune2fs 1.39 (29-May-2006)
Filesystem volume name:   /
Last mounted on:         
Filesystem UUID:          b3856607-1a01-4ab5-86ad-264s75367a89
Filesystem magic number:  0xAF63
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              60227584
Block count:              60225676
Reserved block count:     3011283
Free blocks:              58165828
Free inodes:              60209009
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1009
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         32768
Inode blocks per group:   1024
Filesystem created:       Sat Aug 15 05:39:09 2009
Last mount time:          Sat Aug 15 05:43:16 2009
Last write time:          Sat Aug 15 07:48:11 2009
Mount count:              1
Maximum mount count:      -1
Last checked:             Sat Aug 15 05:39:09 2009
Check interval:           0 ()
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:          128
Journal inode:            8
Default directory hash:   tea
Directory Hash Seed:      89e00d30-0212-4a32-9354-e84d6327117e
Journal backup:           inode blocks


Los parámetros que nos interesan son los siguientes:

[root@gostir ~]# tune2fs -l /dev/sda2 | grep "^Reserved"
Reserved block count:     3011283     
Reserved GDT blocks:      1009
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

Como podes ver tenemos reservados 3011283 para el usuario root. Cada bloque son 4096 bytes por lo que tenemos reservados 11GB aproximadamente.

Para modificar el número de bloques reservados debemos ejecutar tune2fs con el parámetro -m seguido del nuevo porcentaje de bloques a reservar. En este caso vamos a reducir el número de bloques al 3%:

[root@gostir ~]# tune2fs -m 3 /dev/sda2

Información extraída de la ayuda del comando:

-m reserved-blocks-percentage
 Set  the  percentage  of the filesystem which may only be allocated by privileged processes.
 Reserving some number of filesystem blocks for use by privileged processes is done to  avoid  filesystem  fragmentation,  and  to allow system daemons, such as syslogd(8), to continue to  function correctly after non-privileged processes are prevented from writing to the filesystem.  Normally, the default percentage of reserved blocks is 5%.

Si listamos de nuevo la información del filesystem ya deberíamos ver reflejados los nuevos cambios, también deberíamos tener liberado ese espacio en disco (podes verlo mediante el comando df -h).

[root@gostir ~]# tune2fs -l /dev/sda2 | grep "^Reserved"
Reserved block count:     1806769     
Reserved GDT blocks:      1009
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

[root@gostir ~]# df -h


Basado en: http://rm-rf.es/ext3-ext4-liberar-espacio-reservado-con-tune2fs/