Esiste un formato "rapido" per ext4?


28

In Windows, è molto veloce formattare con NTFS. Ho una macchina Linux a bassa potenza, con poca RAM. La formattazione di un volume da 2 TB su ext4 richiede molto tempo.

C'è qualcosa che posso fare per accelerare il formato? Non riesco a immaginare cosa ci vuole così tanto tempo? (cosa ci vuole così tanto tempo)


1
Quali comandi stai usando per formattarlo?
tacotuesday

Come soluzione alternativa. provare a renderlo come un volume lvm più piccolo e farlo crescere secondo necessità? Ciò ridurrebbe comunque il sovraccarico iniziale.
Sirex,

1
o usa XFS se il tempo di creazione del filesystem ti disturba davvero - mkfs.xfs è molto più veloce di mkfs.ext4 (perché non lo fa - o deve fare - tanto). ma mkfs è qualcosa che di solito devi fare solo una volta per filesystem - probabilmente ci sono cose migliori da ottimizzare.
Cas

o usa ZFS. La creazione di file system con ZFS è quasi istantanea, indipendentemente dalle loro dimensioni.
jlliagre,

Utilizzare ZFS solo se si dispone di hardware di classe enterprise, in particolare se si dispone di RAM ECC e di UPS. Non è consigliabile utilizzare ZFS senza questi requisiti. Potrebbe non essere possibile ripristinare dopo un errore di parità della memoria e / o un'interruzione dell'alimentazione. Tutto il tuo volume andrà perso in questo caso. Sei stato avvertito.
Richard Gomes,

Risposte:


16

Risposta rigorosa

Soluzioni come -E lazy_itable_initnon cambiano il risultato, ma solo accelerano il processo. Questo è ciò che è stato esplicitamente chiesto, ma in molti casi le persone hanno bisogno di più.

Bonus extra

Nella maggior parte dei casi, in realtà vuoi alcune opzioni che corrispondono ai tuoi schemi di utilizzo e non solo accelerano la creazione del filesystem ma consentono anche un utilizzo più rapido e più spazio utilizzabile.

Ho appena fatto un test. Anche senza l'utilizzo -E lazy_itable_init, le opzioni seguenti accelerano il tempo di creazione di un filesystem da 2 TB da 16 minuti 2 secondi a 1 minuto 21 secondi (kernel 3.5.0 64 bit su Intel i7 2.2GHz, disco da 2 TB su connessione USB2 - SATA sarebbe probabilmente più veloce) .

Per un filesystem che conterrà file di grandi dimensioni, utilizzo questa combinazione:

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

dove -T largefile4seleziona le opzioni in /etc/mke2fs.confcui generalmente contengono qualcosa come:

    inode_ratio = 4194304
    blocksize = -1

Fare un man mke2fsper i dettagli su ciascuna di queste opzioni.

Ecco alcuni estratti rilevanti:

               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 0dice solo di non riservare il 5% per root, il che va bene per un filesystem di dati (non di boot / root). Il 5% di un disco da 2 TB significa 100 GB. Questa è una differenza abbastanza significativa.


1
Notare che consentire al filesystem di riempirsi per oltre il 95% porterà a un'estrema frammentazione, rallentando sostanzialmente le prestazioni. Semmai, se uno si preoccupa delle prestazioni della sua partizione dati, dovrebbe essere aumentato al 10%
Matija Nalis

Se il tuo disco conterrà non solo file di grandi dimensioni ma anche file di piccole dimensioni , leggi questo: ridurre il rapporto degli inode ti farà risparmiare al massimo circa l'1,5% di spazio di archiviazione, a costo della versatilità. inode_ratio = xsignifica che se la dimensione media del file sul volume è inferiore a x byte, allora stai andando verso l' esaurimento degli inode prima di esaurire lo spazio di archiviazione . In quello scenario potresti sprecare letteralmente migliaia di più di quanto ti aspettassi di risparmiare.
Stéphane Gourichon,

In altre parole, se la dimensione media del file è inferiore a 4 MB, non utilizzare "-T largefile4". Per unità enormi ora finisco per usare ciò -T hugeche fa inode_ratio = 65536. In caso di dubbi, non impostare -io -Te lasciare che le persone sagge che hanno fatto ext2 / 3/4 scelgano per te. Riserverai una piccola parte nota dello spazio per le pulizie e (a meno che tu non memorizzi milioni di file molto piccoli) ti verrà garantito di non sprecare una percentuale arbitraria dello spazio di archiviazione effettivo. Mentre la gente scrive, il software di fantasia è bello, ma un buon filesystem deve essere noioso e funzionare.
Stéphane Gourichon,

nel mio caso, mkfs.ext4è più veloce (time:) real 0m16.001sdi mkfs.ext3(time:) real 2m10.336s.
coanor

19

Aggiungi la bandiera -E lazy_itable_init

Ecco cosa dice la pagina man:

Se abilitato e la funzione uninit_bg è abilitata, la tabella degli inode non sarà completamente inizializzata da mke2fs. Questo accelera notevolmente l'inizializzazione del filesystem, ma richiede che il kernel finisca l'inizializzazione del filesystem in background quando il filesystem viene montato per la prima volta. Se il valore dell'opzione viene omesso, il valore predefinito è 1 per abilitare l'inizializzazione della tabella di inode pigro.


3
Tecnicamente questo non rende il formato più veloce, ma ti permette di montare e usare il filesystem mentre il formato termina in background.
Wyzard

grazie mille! questo ha funzionato davvero bene, i documenti / l'uomo non erano chiari fino a quando non ho saputo cosa cercare! grazie mille!
bloccato il

Ho visto riferimenti sulla versione minima del kernel, qual è il minimo necessario per usare questo?
Xarses,

8

L'impostazione predefinita è un formato rapido; la configurazione delle strutture per un volume ext * richiede molto più tempo rispetto a un volume NTFS, poiché ce ne sono molti di più. Puoi ridurre il numero di superblocchi, ma anche quello va solo così lontano.


grazie per le informazioni, il mio dispositivo ha iniziato a formattare un disco USB2 da 2 TB circa 20 ore fa, continua a funzionare - il dispositivo è a bassa potenza, pensa Raspberry Pi con 64 MB di RAM. per avviare il formato ho dovuto impostare il paging sullo stesso disco USB in fase di formattazione, c'è qualcosa che posso fare per accelerare questo? Sarei fantastico se potessi ottenere un'esibizione meno di un'ora o due?
bloccato

2
lazy_itable_init ha fatto il trucco per me, questo non è l'impostazione predefinita e rende la formattazione molto più veloce
bloccato il

4

Se memorizzerai file per lo più grandi, puoi aumentare il numero di byte per inode, diminuendo così il numero di inode creati. Questo può velocizzare notevolmente i tempi di creazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.