¿Por qué ext2 y los sucesores no necesitan desfragmentación?


Respuestas:


9

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 mballocmencionado en la respuesta de MMK) haga un mejor trabajo al encontrar un área de espacio libre del tamaño adecuado para colocar el archivo.


Tenga en cuenta que esto es solo una característica del controlador ext4 . Ahora, no sé si es muy técnicamente hablando que no pudo montar el sistema de ficheros mayores con esa opción (al menos parcialmente ). Aún así, DELALLOC está marcado como ext4-only .
mirh

8

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)


6

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.


En realidad, existe una utilidad e2defrag, y puede ser necesaria (en discos bastante completos con muchos archivos escritos al azar). El asignador retrasado de ext4 hace que esto sea aún menos probable. Pero incluso ext2 tenía algún tipo de asignación / escritura retrasada, lo que hacía que fuera menos necesario ejecutar una utilidad de desfragmentación que el asignador primitivo de MS-DOS®.
mirabilos
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.