Sie versuchen, die Größe eines Dateisystems zu ändern, das erstellt wurde, bevor die -O 64bit
Option zum Standard wurde. Es ist möglich, Ihr ext-Dateisystem auf 64-Bit-Adressen zu aktualisieren, sodass es sich über deutlich größere Volumes (1024 PiB statt 16 TiB) erstreckt.
Angenommen, Ihr Zielgerät heißt /dev/mapper/target-device
, müssen Sie Folgendes tun:
Voraussetzungen
- Diese Datenträgergröße muss durch RAID gesichert werden. Regelmäßige Datenträgerfehler wird Schaden sonst verursachen.
- Dennoch RAID ist kein Backup . Sie müssen Ihre Wertsachen auch an anderer Stelle aufbewahren.
- Ändern Sie zuerst die Größe und überprüfen Sie alle umgebenden Volumes (Partitionstabellen, Verschlüsselung, lvm).
- Nach dem Ändern der Hardware-RAID-Konfiguration erkennt Linux die neue maximale Größe möglicherweise sofort oder nicht. Überprüfen Sie
$ cat /proc/partitions
und starten Sie gegebenenfalls neu.
Verwenden Sie einen aktuellen stabilen Kernel und e2fsprogs
- Stellen Sie sicher, dass
uname -r
Sie einen Kernel ausführen (überprüfen ), der 64-Bit-Ext4-Dateisysteme ordnungsgemäß verarbeiten kann - Sie möchten einen 4.4.x
Kernel oder höher verwenden (Standard Ubuntu 16 und höher).
Erwerben Sie e2fsprogs mindestens der Version 1.43
Ubuntu 16.04
(21.04.2016) wurde veröffentlicht mit e2fsprogs 1.42.12
(25.08.2014)
e2fsprogs 1.43
(17.05.2016) ist die erste Version, mit der die Adressgröße von extfs aktualisiert werden kann.
Ubuntu 18.04
(26.04.2018) versendet mit e2fsprogs 1.44.x
(gut!)
Wenn Sie angemeldet sind 16.04
und kein Upgrade auf eine neuere Ubuntu-Version durchführen können, müssen Sie die Quellpaketunterstützung aktivieren und eine neuere Version manuell installieren:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Größe ändern
Schritt 1: Mounten Sie das Dateisystem ordnungsgemäß
$ sudo umount /dev/mapper/target-device
Schritt 2: Überprüfen Sie das Dateisystem auf Fehler
$ sudo e2fsck -fn /dev/mapper/target-device
Schritt 3: Aktivieren Sie die 64-Bit-Unterstützung im Dateisystem
Konsultieren Sie man tune2fs
und man resize2fs
- Sie können mit, um einige Dateisystem-Flags zu ändern.
$ sudo resize2fs -b /dev/mapper/target-device
Bei einem typischen Festplatten-RAID dauert dies 4 Minuten mit hoher E / A- und CPU-Belastung.
Schritt 4: Ändern Sie die Größe des Dateisystems
$ sudo resize2fs -p /dev/mapper/target-device
Wenn Sie in der Befehlszeile keine Größe übergeben, geht resize2fs davon aus, dass der gesamte verfügbare Speicherplatz verfügbar ist. Dies ist normalerweise genau das, was Sie möchten. Das -p
Flag aktiviert Fortschrittsbalken - diese werden jedoch erst nach einigen ersten Schritten angezeigt.
Bei einem typischen Festplatten-RAID dauert dies 4 Minuten mit hoher E / A- und CPU-Belastung.
Überprüfen Sie es erneut
Überprüfen Sie das Dateisystem erneut
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck neuerer Versionen schlägt möglicherweise vor, Zeitstempel oder Extent-Bäume zu korrigieren, die in früheren Versionen nicht richtig verarbeitet wurden. Dies ist kein Hinweis auf ein ernstes Problem, und Sie können es jetzt oder später beheben.
Wenn Fehler auftreten, geraten Sie nicht in Panik und versuchen Sie nicht , auf das Volume zu schreiben. Konsultieren Sie jemanden mit umfassenden Kenntnissen des Dateisystems, da weitere Vorgänge wahrscheinlich Daten zerstören würden!
Wenn keine Fehler auftreten, montieren Sie das Gerät erneut:
$ sudo mount /dev/mapper/target-device
Erfolg!
Für den weiteren Betrieb des aktualisierten Dateisystems benötigen Sie keine Nicht-Ubuntu-Version von e2fsprogs - der Kernel unterstützt diese bereits seit geraumer Zeit. Es war nur erforderlich, das Upgrade zu starten.
Als Referenz wird eine ähnliche Fehlermeldung ausgegeben, wenn mke2fs aufgefordert wird, ein großes Gerät mit unangemessenen Optionen zu erstellen:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.
Es passierte mir kürzlich mit einem Ubuntu 18.04, der nach der Erstinstallation mit einem 16.04-Ubuntu aktualisiert wurde ... Das Speicherarray (/ dev / sdb) wurde ursprünglich in zwei 14-TB-Partitionen partitioniert, und das aus Gründen der Vergrößerung die erste Partition auf 28 TB, bei der das Problem aufgetreten ist.
Ich musste keine neue Version von resize2fs herunterladen, da diese sehr neu war.
Das einzige Problem war die Konvertierung der 64-Bit-Partition 1, die in 32 Bit formatiert wurde.
Schließlich vergrößern wir die Festplattenpartition!
quelle