Una diferencia de casi 100 GB en un disco de 4 TB formateado con ext4 tiene una explicación técnica muy concreta: el sistema de archivos reserva por defecto el 5% del espacio total, un margen que la interfaz gráfica no muestra pero que podemos localizar y ajustar con un solo comando de terminal, sin necesidad de formatear la unidad ni perder ningún archivo almacenado en ella.
Al formatear una unidad con ext4, el sistema asigna automáticamente ese 5% como bloques reservados, solo escribibles por el usuario root. El resto de procesos del sistema ve el disco como lleno mucho antes de que se agote su capacidad real. La utilidad df resta esos bloques reservados de la columna «disponible», pero los mantiene en la columna «tamaño», de ahí la discrepancia entre lo que promete la etiqueta del disco y lo que realmente nos permite utilizar a nosotros. En una unidad de 4 TB, ese margen del 5% coincide con los casi 100 GB que mencionábamos al principio.
De dónde sale el 5% reservado en ext4
El valor se define en el archivo de configuración /etc/mke2fs.conf, y si la distribución no lo ha modificado, se mantiene en 5. Podemos comprobar la reserva de nuestro propio disco mediante la herramienta tune2fs, que os permitirá conocer el recuento total de bloques y el de bloques reservados: multiplicando este último por el tamaño del bloque obtenemos la cifra exacta en bytes que el sistema retiene sin que aparezca en ningún gestor de archivos.
Este margen no responde a un capricho de diseño. Si el sistema de archivos raíz llega a cero, el equipo pierde la capacidad de escribir lo necesario para recuperarse: los registros dejan de funcionar, los archivos de sesión no se guardan y en algunos casos ni siquiera podemos iniciar sesión, porque ese proceso también exige escritura en disco. El segundo motivo es la fragmentación, un problema que afecta sobre todo a discos mecánicos: el asignador de bloques de ext4 necesita tramos de espacio libre para colocar los datos de forma eficiente, y una unidad que roza constantemente el cero termina fragmentándose sin remedio, algo que no se arregla simplemente borrando archivos.
Otros sistemas de archivos gestionan esta reserva de forma distinta: XFS aparta un grupo fijo de espacio y Btrfs usa una reserva dinámica limitada a 512 MiB. Ext4, en cambio, escala ese 5% de forma indefinida con la capacidad del disco, algo razonable en una partición de sistema pero excesivo en una unidad dedicada solo a vídeos, copias de seguridad o bibliotecas de juegos.
Cómo bajar la reserva al 1% con tune2fs
En una unidad de datos que no alberga binarios del sistema ni registros críticos, mantener un 5% de reserva no compensa. El sigueinte comando reduce ese porcentaje al valor que indiquemos, en este caso un 1%.
sudo tune2fs -m 1 /dev/sdb1
Tenemos que sustituir sdb1 por la nomenclatura real de vuestra partición. En un disco de 4 TB, esto deja unos 40 GB apartados en lugar de los casi 100 GB iniciales, un margen que sigue siendo suficiente para el uso normal de la unidad.
El comando se puede ejecutar sobre un sistema de archivos ya montado, sin necesidad de desmontarlo ni reformatearlo, y el cambio surte efecto de inmediato, sin necesidad de reiniciar el equipo. No conviene, sin embargo, llevar la reserva a 0%: aunque la fragmentación afecta principalmente a discos de platos giratorios y no a las unidades SSD, mantener un pequeño margen os evitará errores de escritura si el disco llega a llenarse por completo. La documentación de OpenZFS, de hecho, recomienda reservar hasta un 10% en sus sistemas por motivos de rendimiento, una cifra que responde a una lógica distinta a la de la recuperación de emergencia ante fallos.
Tras aplicar el cambio, el espacio liberado queda disponible sin más trámite: en un disco de 4 TB, la diferencia entre el margen original y el reducido puede ser justo lo que os falta para instalar otro par de juegos de la biblioteca de Steam o guardar una copia de seguridad que antes no cabía.
