Gibt es so etwas wie ein 'schnelles' Format für ext4?

28

In Windows ist das Formatieren mit NTFS sehr schnell. Ich habe einen Linux-Rechner mit niedrigem Stromverbrauch und wenig RAM. Das Formatieren eines 2-TB-Volumes auf ext4 dauert sehr lange.

Kann ich etwas tun, um das Format zu beschleunigen? Ich kann mir nicht vorstellen, was so lange dauert? (was dauert so lange)

stecken
quelle
1
Welche Befehle verwenden Sie, um es zu formatieren?
Dienstag,
Als Workaround. Versuchen Sie, ein kleineres Lvm-Volume zu erstellen, und vergrößern Sie es nach Bedarf. Das würde den anfänglichen Overhead auf jeden Fall senken.
Sirex
1
oder verwenden Sie XFS, wenn Sie die Erstellungszeit des Dateisystems wirklich stört - mkfs.xfs ist viel schneller als mkfs.ext4 (weil es nicht so viel tut - oder tun muss -). Aber mkfs muss normalerweise nur einmal pro Dateisystem ausgeführt werden - es gibt wahrscheinlich bessere Dinge, die optimiert werden müssen.
cas
oder verwenden Sie ZFS. Die Erstellung von Dateisystemen mit ZFS erfolgt nahezu augenblicklich, unabhängig von ihrer Größe.
Juli
Verwenden Sie ZFS nur, wenn Sie über Hardware der Enterprise-Klasse verfügen, insbesondere, wenn Sie über ECC-RAM und eine USV verfügen. Es wird nicht empfohlen , ZFS ohne diese Anforderungen zu verwenden. Möglicherweise können Sie nach einem Speicherparitätsfehler und / oder einem Stromausfall keine Wiederherstellung durchführen. In diesem Fall geht Ihr gesamtes Volumen verloren. Du wurdest gewarnt.
Richard Gomes

Antworten:

16

Strenge Antwort

Lösungen wie -E lazy_itable_initnicht das Ergebnis ändern, nur den Prozess beschleunigen. Dies wurde ausdrücklich gefordert, doch in vielen Fällen brauchen die Menschen mehr.

Extrabonus

In den meisten Fällen möchten Sie tatsächlich einige Optionen, die Ihren Verwendungsmustern entsprechen und nicht nur die Dateisystemerstellung beschleunigen, sondern auch eine schnellere Verwendung und mehr nutzbaren Speicherplatz ermöglichen.

Ich habe gerade einen Test gemacht. Auch ohne Verwendung -E lazy_itable_initder folgenden Optionen wird die Erstellungszeit eines 2-TB-Dateisystems von 16 Minuten, 2 Sekunden auf 1 Minute, 21 Sekunden beschleunigt (Kernel 3.5.0 64-Bit bei Intel i7 2.2 GHz, 2-TB-Festplatte bei USB2-Verbindung - SATA wäre wahrscheinlich schneller). .

Für ein Dateisystem, das große Dateien enthält, verwende ich diese Kombination:

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

wo -T largefile4nimmt Optionen in /etc/mke2fs.confdenen im Allgemeinen etwas enthalten wie:

    inode_ratio = 4194304
    blocksize = -1

Führen Sie eine man mke2fsfür Details zu jeder dieser Optionen.

Hier sind relevante Auszüge:

               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 0Sagt nur, dass 5% nicht für root reserviert werden sollen, was für ein Dateisystem mit Daten (nicht booten / root) in Ordnung ist. 5% einer 2-TB-Festplatte bedeuten 100 GB. Das ist ein ziemlich bedeutender Unterschied.

Stéphane Gourichon
quelle
1
Beachten Sie, dass eine Auslastung des Dateisystems von mehr als 95% zu einer extremen Fragmentierung führt und die Leistung erheblich beeinträchtigt. Wenn sich jemand um die Leistung seiner Datenpartition kümmert, sollte diese auf 10% erhöht werden
Matija Nalis
Wenn Ihre Festplatte nicht nur große, sondern auch kleine Dateien enthält , lesen Sie Folgendes: Wenn Sie das Inode-Verhältnis verringern, sparen Sie höchstens etwa 1,5% des Speichers, auf Kosten der Vielseitigkeit. inode_ratio = xWenn die durchschnittliche Dateigröße auf dem Volume weniger als x Byte beträgt, gehen Ihnen die Inodes aus, bevor der Speicherplatz ausgeht . In diesem Szenario können Sie buchstäblich Tausende mehr verschwenden, als Sie erwartet hatten.
Stéphane Gourichon
Mit anderen Worten, wenn die durchschnittliche Dateigröße kleiner als 4 MB ist, verwenden Sie nicht "-T largefile4". Für riesige Laufwerke verwende ich jetzt letztendlich -T hugewelche inode_ratio = 65536. Wenn Sie Zweifel haben, setzen Sie einfach nicht -ioder -Tund lassen Sie die weisen Leute, die ext2 / 3/4 gemacht haben, für Sie wählen. Sie reservieren einen bekannten kleinen Teil des Speicherplatzes für das Housekeeping und (sofern Sie nicht Millionen sehr kleiner Dateien speichern) verschwenden Sie garantiert keinen beliebigen Prozentsatz des tatsächlichen Speicherplatzes. Während die Leute schreiben, ist ausgefallene Software nett, aber ein gutes Dateisystem muss langweilig sein und einfach funktionieren.
Stéphane Gourichon
in meinem Fall mkfs.ext4ist schneller (time:) real 0m16.001sals mkfs.ext3(time:) real 2m10.336s.
Coanor
19

Füge die Flagge hinzu -E lazy_itable_init

Folgendes steht auf der Manpage:

Wenn aktiviert und die Funktion uninit_bg aktiviert ist, wird die Inode-Tabelle von mke2fs nicht vollständig initialisiert. Dies beschleunigt die Initialisierung des Dateisystems merklich, erfordert jedoch, dass der Kernel die Initialisierung des Dateisystems im Hintergrund beendet, wenn das Dateisystem zum ersten Mal gemountet wird. Wenn der Optionswert weggelassen wird, wird standardmäßig 1 verwendet, um die verzögerte Initialisierung der Inode-Tabelle zu aktivieren.

Alex Wheeler
quelle
3
Technisch gesehen wird das Format dadurch nicht schneller, aber Sie können das Dateisystem einbinden und verwenden, während das Format im Hintergrund beendet wird.
Wyzard
vielen Dank! das hat wirklich gut geklappt, die docs / man waren mir nicht klar, bis ich wusste, wonach ich suchen sollte! vielen Dank!
stecken
Ich habe Referenzen über die minimale Kernelversion gesehen. Was ist das Minimum, um diese zu verwenden?
Xarses
8

Die Standardeinstellung ist ein Schnellformat. Das Einrichten der Strukturen für ein ext * -Volume dauert viel länger als für ein NTFS-Volume, da es mehr davon gibt. Sie können die Anzahl der Superblöcke reduzieren, aber auch das geht nur so weit.

Ignacio Vazquez-Abrams
quelle
danke für die Info, mein Gerät hat vor ungefähr 20 Stunden angefangen, ein 2 TB USB2-Laufwerk zu formatieren, es ist noch in Betrieb - das Gerät hat wenig Energie, denke Raspberry Pi mit 64 MB RAM. Um das Format zu starten, musste ich das Paging auf demselben USB-Laufwerk einrichten, das gerade formatiert wird. Kann ich etwas tun, um dies zu beschleunigen? Ich wäre großartig, wenn ich die Leistung in weniger als ein oder zwei Stunden erreichen könnte.
Stuck
2
lazy_itable_init hat den Trick für mich gemacht, dies ist nicht die Standardeinstellung und macht die Formatierung viel schneller
stecken
4

Wenn Sie größtenteils größere Dateien speichern, können Sie die Anzahl der Bytes pro Inode erhöhen und damit die Anzahl der erstellten Inodes verringern. Dies kann die Erstellungszeit erheblich beschleunigen.

rnxrx
quelle