Tengo una ext4
partición de 900 GB en un disco duro (magnético) que no tiene defectos ni sectores defectuosos. La partición está completamente vacía, excepto por un lost+found
directorio vacío . La partición se formateó utilizando los parámetros predeterminados, excepto que configuré el número de bloques de sistema de archivos reservados en 1%.
Descargué el archivo ~ 900MB xubuntu-15.04-desktop-amd64.iso
en el directorio del punto de montaje de la partición usando wget
. Cuando finalizó la descarga, descubrí que el archivo estaba dividido en cuatro fragmentos:
filefrag -v /media/emma/red/xubuntu-15.04-desktop-amd64.iso
Filesystem type is: ef53
File size of /media/emma/red/xubuntu-15.04-desktop-amd64.iso is 1009778688 (246528 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 190463: 198656.. 229375: 30720:
6: 190464.. 223231: 231424.. 264191: 32768: 229376:
7: 223232.. 246527: 264192.. 287487: 23296: eof
/media/emma/red/xubuntu-15.04-desktop-amd64.iso: 4 extents found
Pensando que esto podría ser liberado de wget
alguna manera, eliminé el archivo ISO de la partición, dejándolo vacío nuevamente, luego copié el archivo ~ 700MB v1.mp4
en la partición usando cp
. Este archivo también estaba fragmentado. Se dividió en tres fragmentos:
filefrag -v /media/emma/red/v1.mp4
Filesystem type is: ef53
File size of /media/emma/red/v1.mp4 is 737904458 (180153 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
2: 63488.. 96255: 100352.. 133119: 32768: 98304:
3: 96256.. 126975: 133120.. 163839: 30720:
4: 126976.. 159743: 165888.. 198655: 32768: 163840:
5: 159744.. 180152: 198656.. 219064: 20409: eof
/media/emma/red/v1.mp4: 3 extents found
¿Por qué está pasando esto? ¿Y hay alguna manera de evitar que suceda? Pensé que ext4
estaba destinado a ser resistente a la fragmentación. En cambio, encuentro que fragmenta inmediatamente un archivo solitario cuando no se usa todo el resto del volumen. Esto parece ser peor que ambos FAT32
y NTFS
.
fuente
Respuestas:
3 o 4 fragmentos en un archivo de 900mb son muy buenos. La fragmentación se convierte en un problema cuando un archivo de ese tamaño tiene más de 100 fragmentos. No es raro que fat o ntfs fragmenten ese archivo en varios cientos de piezas.
Por lo general, no verá mejor que eso al menos en los sistemas de archivos ext4 más antiguos porque el tamaño máximo de un grupo de bloques es de 128 MB, por lo que cada 128 MB el espacio contiguo se divide por algunos bloques para los mapas de bits de asignación y las tablas de inodo para Grupo siguiente bloque. Una característica ext4 más reciente llamada flex_bg permite agrupar una cantidad de (generalmente 16) grupos de bloques de estas tablas juntas, dejando ejecuciones más largas de bloques asignables pero dependiendo de su distribución y qué versión de e2fsprogs se usó para formatearla, esta opción puede No haber sido utilizado.
Puede usar
tune2fs -l
para verificar las funciones habilitadas cuando se formateó su sistema de archivos.fuente
Realmente no puedo responder, pero creo que esto podría ayudar:
Observe cómo cada fragmento tiene, como máximo, 32768 bloques de tamaño (una potencia de 2, que debería levantar una bandera de que algo está sucediendo, y también darle una pista sobre algo que debe buscar).
También vale la pena señalar, esas compensaciones físicas entre extensiones son bastante cercanas entre sí.
De: Diseño de disco Ext4
Y más abajo:
Entonces, diría que el asignador solo se preocupa por la localidad de datos dentro del grupo de bloques (esos bloques de 32K), pero no por los grupos de bloques que son contiguos entre sí.
fuente