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

28

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)

coincé
la source
1
Quelles commandes utilisez-vous pour le formater?
mardi
Comme solution de contournement. essayez de le faire comme un volume lvm plus petit et de le faire croître au besoin? Cela réduirait de toute façon les frais généraux initiaux.
Sirex
1
ou utilisez XFS si le temps de création du système de fichiers vous dérange vraiment - mkfs.xfs est beaucoup plus rapide que mkfs.ext4 (car il ne fait pas - ou n'a pas besoin de faire - autant). mais mkfs est quelque chose que vous n'avez généralement à faire qu'une seule fois par système de fichiers - il y a probablement de meilleures choses à optimiser.
cas
ou utilisez ZFS. La création de systèmes de fichiers avec ZFS est quasi instantanée, quelle que soit leur taille.
jlliagre
N'utilisez ZFS que si vous disposez d'un matériel de classe entreprise, en particulier si vous disposez de RAM ECC et d'onduleurs. Il n'est pas recommandé d'utiliser ZFS sans ces exigences. Vous ne pourrez peut-être pas récupérer après une erreur de parité de mémoire et / ou une panne de courant. Tout votre volume sera perdu dans ce cas. Tu étais prévenu.
Richard Gomes

Réponses:

16

Réponse stricte

Des solutions comme -E lazy_itable_initne changent pas le résultat, accélèrent 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 largefile4sélectionne des options dans /etc/mke2fs.conflesquelles contiennent généralement quelque chose comme:

    inode_ratio = 4194304
    blocksize = -1

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

Stéphane Gourichon
la source
1
Notez que permettre au système de fichiers de remplir plus de 95% entraînera une fragmentation extrême, ce qui ralentira considérablement les performances. Si quoi que ce soit, si l'on se soucie des performances de sa partition de données, elle devrait être augmentée à 10%
Matija Nalis
Si votre disque tient non seulement des fichiers volumineux mais aussi des petits fichiers , lisez ceci: la réduction du rapport d'inode vous fera économiser au plus environ 1,5% de stockage, au détriment de la polyvalence. inode_ratio = xsignifie que si la taille moyenne du fichier sur le volume est inférieure à x octets, vous vous dirigez vers le manque d'inodes avant de manquer d'espace de stockage . Dans ce scénario, vous risquez de gaspiller littéralement des milliers de plus que prévu.
Stéphane Gourichon
En d'autres termes, si le taille moyenne d'un fichier est inférieure à 4 Mo, n'utilisez pas "-T largefile4". Pour les disques énormes, je finis maintenant par utiliser -T hugece qui le fait inode_ratio = 65536. En cas de doute, ne définissez pas -iou -Tet laissez les sages qui ont fait ext2 / 3/4 choisir pour vous. Vous réserverez une petite partie connue de l'espace pour le ménage et (sauf si vous stockez des millions de très petits fichiers), vous êtes assuré de ne pas gaspiller un pourcentage arbitraire de l'espace de stockage réel. Au fur et à mesure que les gens écrivent, un logiciel sophistiqué est agréable, mais un bon système de fichiers doit être ennuyeux et fonctionner.
Stéphane Gourichon
dans mon cas, mkfs.ext4est plus rapide (time:) real 0m16.001sque mkfs.ext3(time:) real 2m10.336s.
coanor
19

Ajouter 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.

Alex Wheeler
la source
3
Techniquement, cela n'accélère pas le format, mais il vous permet de monter et d'utiliser le système de fichiers pendant que le format se termine en arrière-plan.
Wyzard
Merci beaucoup! cela fonctionnait vraiment bien, les docs / homme n'étaient pas clairs pour moi jusqu'à ce que je sache quoi chercher! Merci beaucoup!
coincé
J'ai vu des références sur la version minimale du noyau, quel est le minimum nécessaire pour l'utiliser?
Xarses
8

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.

Ignacio Vazquez-Abrams
la source
merci pour l'info, mon appareil a commencé à formater un disque USB2 de 2 To il y a environ 20 heures, il fonctionne toujours - l'appareil est de faible puissance, pensez Raspberry Pi avec 64 Mo de RAM. afin de démarrer le format, j'ai dû configurer la pagination sur le même disque USB en cours de formatage, est-ce que je peux faire pour accélérer cela? je serais génial si je pouvais obtenir une performance inférieure à une heure ou deux?
coincé
2
lazy_itable_init a fait l'affaire pour moi, ce n'est pas la valeur par défaut et rend le formatage beaucoup plus rapide
bloqué le
4

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.

rnxrx
la source