Sí: en Linux puede haber fragmentación, es decir, las partes de un archivo pueden quedar repartidas en bloques no contiguos. Si merece la pena desfragmentar depende del sistema de archivos y del uso; en ext4 puedes empezar por evaluar la fragmentación sin modificar los archivos.

Guía de desfragmentación en Linux

Qué significa la fragmentación en Linux

Un sistema de archivos organiza los datos en bloques. Cuando los bloques de un mismo archivo quedan separados, el archivo está fragmentado. Eso no significa por sí solo que el equipo vaya lento ni que haya que intervenir: la decisión depende del sistema de archivos y de la carga de trabajo.

La historia de ext2 ayuda a entender por qué Linux no es inmune a este fenómeno. El sistema de archivos Ext anterior podía fragmentarse cuando sus listas de bloques libres e inodos dejaban de estar ordenadas. El diseño de ext2 agrupaba datos e inodos relacionados y podía reservar hasta ocho bloques contiguos. El artículo técnico de ext2 informó de una tasa de acierto cercana al 75 % para esa preasignación, incluso en sistemas de archivos muy llenos. Son datos históricos sobre ext2, no una medición del rendimiento actual de ext4.

Comprobar ext4 sin modificar archivos

El screencast de gotbletu muestra en inglés cómo instalar e2fsprogs y ejecutar e4defrag -c / para evaluar ext4 desde la terminal.

En ext4, e4defrag -c calcula la fragmentación del objetivo sin desfragmentarlo. Puedes indicar un archivo, un directorio o un punto de montaje ext4; por ejemplo, el screencast de gotbletu muestra el comando sudo e4defrag -c / en una terminal.

La puntuación de e4defrag tiene rangos propios: de 0 a 30, «sin problema»; de 31 a 55, «algo fragmentado»; y desde 56, «necesita desfragmentación». Un cero queda en el primer rango. La cifra no es un porcentaje ni garantiza que desfragmentar vaya a mejorar el rendimiento.

La herramienta actúa sobre archivos ext4 basados en extents. No admite archivos de intercambio, archivos de lost+found ni archivos asignados mediante bloques indirectos. Además, si hay poco espacio libre o este está fragmentado, la operación puede no mejorar la situación; mientras se ejecuta, también puede competir con otras aplicaciones por memoria y ancho de banda del disco.

La herramienta depende del sistema de archivos

Los comandos de ext4 no se aplican automáticamente a otros sistemas. Btrfs cuenta con autodefrag, mientras que exFAT dispone de una utilidad específica con condiciones distintas.

Sistema de archivosFunción en LinuxCondición importante
ext4e4defrag -c evalúa; e4defrag puede desfragmentar archivos compatibles.El resultado puede depender del espacio libre y la operación puede competir por recursos del sistema.
Btrfsautodefrag pone en cola pequeñas escrituras aleatorias detectadas, en un rango descrito de 64 KiB.Puede aumentar la latencia de lectura y no ser adecuado para grandes cargas de bases de datos.
exFATdefrag.exfat -a evalúa sin modificar el volumen; la utilidad también permite desfragmentarlo.Para desfragmentar, el dispositivo debe estar desmontado. El manual recomienda comprobar antes el sistema de archivos y hacer una copia de seguridad de los datos importantes.

Para NTFS, la documentación del controlador NTFS del kernel Linux y la de NTFS-3G no describen una operación de desfragmentación. Esa afirmación se limita a lo que explican esas documentaciones.

HDD, SSD y TRIM

La razón tradicional para desfragmentar un disco duro mecánico (HDD) era reducir los movimientos del cabezal al leer partes separadas de un archivo. Una unidad de estado sólido (SSD) no tiene ese mecanismo de búsqueda rotatorio. La fragmentación de archivos y TRIM o discard son operaciones distintas; el tipo de unidad, por sí solo, no determina si conviene desfragmentar.