Ubuntu 16.04 crea ext4: sistema de archivos de 500 TB

Ubuntu 16.04 crea ext4: sistema de archivos de 500 TB

El estándar ext4 sugiere que se puede crear un sistema de archivos de hasta 1 EB de tamaño.

Mi objetivo es crear 500 TB de sistema de archivos ext4 en Ubuntu 16.0.4. Verifique mi comando de creación fs:

sudo mkfs.ext4 -m 0 -J device=/dev/md125p1 /dev/md125p2 -b 4096 -E stride=128,stripe-width=6400,lazy_itable_init=0,lazy_journal_init=0

Con este comando me sale el siguiente error:

No se puede crear un sistema de archivos con la cantidad solicitada de inodos mientras se configura el superbloque

Intenté establecer bytes por valor de inodo en un número muy alto usando la opción -i en mkfs.ext4 pero todavía no tuve suerte.

Soy consciente de que RHEL recomienda un máximo de 50 TB de sistema de archivos ext4. ¿Aún es posible crear 500 TB de sistema de archivos con ext4?

Respuesta1

Esto debería funcionar. Usando una versión moderna de mke2fs:

% mkfs.ext4 /tmp/test.img 500T
mke2fs 1.45.4 (23-Sep-2019)
Creating regular file /tmp/test.img
Creating filesystem with 134217728000 4k blocks and 4259840000 inodes
Filesystem UUID: 00257d43-0298-4aaf-8cca-37e34f3d1bb8
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848, 512000000, 550731776, 644972544, 1934917632, 
    2560000000, 3855122432, 5804752896, 12800000000, 17414258688, 
    26985857024, 52242776064, 64000000000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

La cantidad de inodos tiene un límite (2**32)-1automático, por lo que la preocupación expresada en la otra respuesta no es un problema.

Además, el uso de un tamaño de bloque > 4k no es compatible con x86, debido a la limitación de Linux que requiere que el tamaño del bloque no pueda ser mayor que el tamaño de la página de la VM. Por lo tanto, puede utilizar un tamaño de bloque de hasta 64k en el PowerPC, ya que tiene un tamaño de página de 64k.

También diré que si está utilizando sistemas de archivos realmente grandes, le recomiendo encarecidamente que utilice la última versión de e2fsprogs, y no la versión obsoleta que se incluye en Ubuntu 16.04. Ha habido muchas correcciones de errores en los últimos 3 años, incluidas algunas relacionadas con sistemas de archivos muy grandes.

Respuesta2

Según mi investigación, es posible que ext4 no admita 500 TB para bloques de 4K.

Una partición predeterminada de EXT3/EXT4 tiene una proporción de bytes por inodo de un inodo cada 16384 bytes (16 Kb).
Así tenemos:

500 GB = 500 * 1024 * 1024 * 1024 * 1024 = 549 755 813 888 000 bytes
549 755 813 888 000 bytes / 16384 = 33 554 432 000 inodes

El número de inodos es un número de 32 bits, por lo que el número máximo posible de inodos en cualquier sistema de archivos ext2/3/4 es 2^32-1 o 4.294.967.295 inodos.

Como 33 554 432 000 es mucho mayor que 4 294 967 295, asignar esa cantidad de inodos es imposible. Necesitará 8 veces más que el número máximo de inodos.

Tus opciones según veo son:

  • Intente forzar un límite de inodo:-N 4294967295
  • Utilice bloques de 8x4 = 32 KB, lo cual es un desperdicio si sus archivos son pequeños
  • Utilice otro sistema de archivos que no sea ext4. He visto informes que dicen que XFS puede admitir dicho sistema de archivos, pero no puedo decirlo por experiencia personal.

información relacionada