La familia de sistemas de archivos ext2 / ext3 / ext4 no necesita desfragmentación.
¿Qué diseño subyacente ayuda a este sistema de archivos a no fragmentarse?
La familia de sistemas de archivos ext2 / ext3 / ext4 no necesita desfragmentación.
¿Qué diseño subyacente ayuda a este sistema de archivos a no fragmentarse?
Respuestas:
Una forma en que el sistema de archivos ext4 mantiene la fragmentación bajo control es con el proceso de asignación retrasada (modo de asignación predeterminado de ext4).
La asignación retrasada difiere la asignación de bloques de datos de archivos recién escritos a bloques de discos en el sistema de archivos hasta el momento de la reescritura.
Esto funciona al asignar la mayoría de los bloques para un archivo al mismo tiempo, cuando se conoce el número total de bloques (o al menos un estadio) en cada archivo. Esto permite que el asignador de bloques (el mballoc
mencionado en la respuesta de MMK) haga un mejor trabajo al encontrar un área de espacio libre del tamaño adecuado para colocar el archivo.
En el sistema de archivos ext3, hay un asignador de bloques para el disco para cada bloque, por lo que es muy posible que se produzca fragmentación.
Sin embargo, en el sistema de archivos ext4 hay un asignador de bloques múltiples que puede retrasar la escritura de bloques en el disco, de modo que puede asignar varios bloques a la vez en un solo fragmento de disco para permitir una escritura contigua, y así, es menos probable que se produzca fragmentación (aún es posible, solo menos probable)
Al menos para Ext2 (y Ext3 creo, aunque estoy menos seguro), no hay nada en el formato / estructura en el disco que impida la desfragmentación.
La falta de necesidad de desfragmentación va a residir en el nivel de implementación, que variará de un sistema operativo a otro. Es decir, dependiendo de la implementación, un archivo en Ext2 puede o no estar fragmentado.
Si se evita la fragmentación, es probable que se deba a una asignación tardía de los bloques físicos. Es decir, en algún nivel de la implementación, el sistema de archivos almacenará en caché los datos (y accederá a ellos a través del número de bloque lógico) hasta el momento en que esté escrito / confirmado en el disco. Cuando los datos finalmente se escriben en el disco, se deben asignar bloques físicos. El algoritmo de asignación puede (o no) asignar una cantidad de bloques físicos contiguos disponibles para los datos.
Espero que esto ayude.