¿Existe un formato 'rápido' para ext4?

28

En Windows, es muy rápido formatear con NTFS. Tengo una máquina Linux de baja potencia, con poca RAM. Formatear un volumen de 2TB a ext4 lleva mucho, mucho tiempo.

¿Hay algo que pueda hacer para acelerar el formato? No puedo imaginar lo que lleva tanto tiempo? (lo que lleva tanto tiempo)

atascado
fuente
1
¿Qué comandos estás usando para formatearlo?
tacotuesday
Como una solución alternativa. intente hacerlo como un volumen lvm más pequeño y crecerlo según sea necesario? Eso reduciría la sobrecarga inicial de todos modos.
Sirex
1
o use XFS si el tiempo de creación del sistema de archivos realmente le molesta: mkfs.xfs es mucho más rápido que mkfs.ext4 (porque no hace o necesita hacer). pero mkfs es algo que generalmente solo tiene que hacer una vez por sistema de archivos; probablemente haya mejores cosas para optimizar.
cas
o use ZFS. Crear sistemas de archivos con ZFS es casi instantáneo, sea cual sea su tamaño.
jlliagre
Solo use ZFS si tiene hardware de clase empresarial, en particular si tiene RAM ECC y tiene UPS. No se recomienda usar ZFS sin estos requisitos. Es posible que no pueda recuperarse después de un error de paridad de memoria y / o una falla de energía. Todo su volumen se perderá en este caso. Usted ha sido advertido.
Richard Gomes el

Respuestas:

16

Respuesta estricta

Las soluciones como -E lazy_itable_initno cambian el resultado, solo aceleran el proceso. Esto es lo que se pidió explícitamente, pero en muchos casos las personas necesitan más.

Bono extra

En la mayoría de los casos, realmente desea algunas opciones que coincidan con sus patrones de uso y no solo aceleren la creación del sistema de archivos, sino que también permitan un uso más rápido y más espacio utilizable.

Acabo de hacer una prueba. Incluso sin usar -E lazy_itable_init, las siguientes opciones aceleran el tiempo de creación de un sistema de archivos de 2TB de 16 minutos 2 segundos a 1 minuto 21 segundos (kernel 3.5.0 64bit en Intel i7 2.2GHz, disco de 2TB en conexión USB2 - SATA probablemente sería más rápido) .

Para un sistema de archivos que contendrá archivos grandes, uso esta combinación:

mkfs.ext3 /dev/sdXX -O sparse_super,large_file -m 0 -T largefile4

donde -T largefile4elige opciones en las /etc/mke2fs.confque generalmente contienen algo como:

    inode_ratio = 4194304
    blocksize = -1

Haz un man mke2fspara obtener detalles sobre cada una de estas opciones

Aquí hay extractos relevantes:

               sparse_super
                      Create a filesystem with fewer superblock backup copies (saves space on large filesystems).

               large_file
                      Filesystem can contain files that are greater than 2GB.  (Modern kernels set this feature  automatically
                      when a file > 2GB is created.)

   -i bytes-per-inode
          Specify  the  bytes/inode ratio.  mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.  The
          larger the bytes-per-inode ratio, the fewer inodes will be created.  This value generally shouldn't be smaller  than
          the blocksize of the filesystem, since in that case more inodes would be made than can ever be used.  Be warned that
          it is not possible to expand the number of inodes on a filesystem after it is created, so be  careful  deciding  the
          correct value for this parameter.

-m 0solo dice que no se reserve un 5% para root, lo cual está bien para un sistema de archivos de datos (no boot / root). El 5% de un disco de 2TB significa 100Gb. Esa es una diferencia bastante significativa.

Stéphane Gourichon
fuente
1
Tenga en cuenta que permitir que el sistema de archivos se llene más del 95% provocará una fragmentación extrema, lo que ralentizará sustancialmente el rendimiento. En todo caso, si a uno le importa el rendimiento de su partición de datos, debe aumentarse al 10%
Matija Nalis
Si su disco contiene no solo archivos grandes, sino también archivos pequeños , lea esto: la reducción de la relación de inodo le ahorrará como máximo alrededor del 1.5% de almacenamiento, a costa de la versatilidad. inode_ratio = xsignifica que si el tamaño promedio del archivo en el volumen es menor que x bytes, entonces se está quedando sin inodos antes de quedarse sin espacio de almacenamiento . En ese escenario, puede desperdiciar literalmente miles más de lo que esperaba ahorrar.
Stéphane Gourichon
En otras palabras, si el tamaño promedio del archivo es menor a 4MB, no use "-T largefile4". Para unidades enormes ahora termino usando -T hugecuál lo hace inode_ratio = 65536. En caso de duda, simplemente no establezca -io -Tdeje que las personas sabias que hicieron ext2 / 3/4 elijan por usted. Reservará una pequeña parte conocida del espacio para el servicio de limpieza y (a menos que almacene millones de archivos muy pequeños) tiene la garantía de no desperdiciar un porcentaje arbitrario del espacio de almacenamiento real. A medida que la gente escribe, el software sofisticado es agradable, pero un buen sistema de archivos debe ser aburrido y funcionar.
Stéphane Gourichon el
en mi caso, mkfs.ext4es más rápido (time:) real 0m16.001sque mkfs.ext3(time:) real 2m10.336s.
coanor
19

Agrega la bandera -E lazy_itable_init

Esto es lo que dice la página del manual:

Si está habilitado y la función uninit_bg está habilitada, mke2fs no inicializará completamente la tabla de inodo. Esto acelera notablemente la inicialización del sistema de archivos, pero requiere que el núcleo termine de inicializar el sistema de archivos en segundo plano cuando el sistema de archivos se monta por primera vez. Si se omite el valor de la opción, el valor predeterminado es 1 para habilitar la inicialización de la tabla de inodo diferido.

Alex Wheeler
fuente
3
Técnicamente, esto no hace que el formato vaya más rápido, pero le permite montar y usar el sistema de archivos mientras el formato finaliza en segundo plano.
Wyzard --Detener Dañar a Monica--
¡muchas gracias! Esto funcionó muy bien, los documentos / hombre no me quedaron claros hasta que supe qué buscar. ¡Muchas gracias!
atrapado el
He visto referencias sobre la versión mínima del kernel, ¿cuál es el mínimo necesario para usar esto?
Xarses
8

El valor predeterminado es un formato rápido; configurar las estructuras para un volumen ext * lleva mucho más tiempo que para un volumen NTFS, ya que hay más de ellas. Puede reducir la cantidad de superbloques, pero incluso eso solo va tan lejos.

Ignacio Vazquez-Abrams
fuente
gracias por la información, mi dispositivo comenzó a formatear un disco USB2 de 2TB hace aproximadamente 20 horas, todavía funciona: el dispositivo tiene poca energía, piense en Raspberry Pi con 64MB de RAM. para iniciar el formato tuve que configurar la paginación en el mismo disco USB que se está formateando ¿hay algo que pueda hacer para acelerar esto? ¿Sería genial si pudiera lograr que el rendimiento sea inferior a una o dos horas?
atrapado el
2
lazy_itable_init hizo el truco para mí, este no es el predeterminado y hace que el formateo sea mucho más rápido
atascado el
4

Si va a almacenar archivos en su mayoría más grandes, puede aumentar el número de bytes por inodo, disminuyendo así el número de inodos creados. Esto puede acelerar sustancialmente el tiempo de creación.

rnxrx
fuente