web-dev-qa-db-fra.com

Existe-t-il un format «rapide» pour ext4?

Sous Windows, il est très rapide de formater avec NTFS. J'ai une machine Linux de faible puissance, avec peu de RAM. Le formatage d'un volume de 2 To en ext4 prend beaucoup de temps.

Puis-je faire quelque chose pour accélérer le formatage? Je ne peux pas imaginer ce qui prend si longtemps? (qu'est-ce qui prend si longtemps)

28
stuck

Réponse stricte

Des solutions comme -E lazy_itable_init ne change pas le résultat, accélère seulement le processus. C'est ce qui a été explicitement demandé, mais dans de nombreux cas, les gens ont besoin de plus.

Bonus supplémentaire

Dans la plupart des cas, vous voulez en fait des options qui correspondent à vos modèles d'utilisation et non seulement accélérer la création du système de fichiers, mais également permettre une utilisation plus rapide et un espace plus utilisable.

Je viens de faire un test. Même sans utiliser -E lazy_itable_init, les options ci-dessous accélèrent le temps de création d'un système de fichiers de 2 To de 16 minutes 2 secondes à 1 minute 21 secondes (noyau 3.5.0 64 bits sur Intel i7 2,2 GHz, disque 2 To sur connexion USB2 - SATA serait probablement plus rapide).

Pour un système de fichiers qui contiendra de gros fichiers, j'utilise cette combinaison:

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

-T largefile4 sélectionne les options dans /etc/mke2fs.conf qui contiennent généralement quelque chose comme:

    inode_ratio = 4194304
    blocksize = -1

Fait une man mke2fs pour plus de détails sur chacune de ces options.

Voici des extraits pertinents:

               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 0 dit seulement de ne pas réserver 5% pour root, ce qui est correct pour un système de fichiers de données (pas boot/root). 5% d'un disque de 2 To signifie 100 Go. C'est une différence assez importante.

16
Stéphane Gourichon

Ajoutez le drapeau -E lazy_itable_init

Voici ce que dit la page de manuel:

Si elle est activée et que la fonction uninit_bg est activée, la table d'inode ne sera pas complètement initialisée par mke2fs. Cela accélère sensiblement l'initialisation du système de fichiers, mais cela nécessite que le noyau termine l'initialisation du système de fichiers en arrière-plan lors du premier montage du système de fichiers. Si la valeur de l'option est omise, sa valeur par défaut est 1 pour activer l'initialisation de la table d'inode paresseux.

19
Alex Wheeler

La valeur par défaut est un format rapide; la configuration des structures pour un volume ext * prend beaucoup plus de temps que pour un volume NTFS, car il y en a plus. Vous pouvez réduire le nombre de superblocs, mais même cela ne va que si loin.

8

Si vous stockez principalement des fichiers plus volumineux, vous pouvez augmenter le nombre d'octets par inode, diminuant ainsi le nombre d'inodes créés. Cela peut considérablement accélérer le temps de création.

4
rnxrx