Wie erweitere ich eine ext4-Partition und ein Dateisystem?

44

Ich habe eine 400 GB Festplatte mit einer 320 GB ext4-Partition. Ich möchte die ext4-Partition vergrößern, um den linken Speicherplatz (80 GB freier Speicherplatz) zu nutzen.

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Wie könnte ich das machen?

Ich habe Leute gesehen, die verwendet haben, resize2fsaber ich verstehe nicht, ob die Größe der Partition geändert wird.

Eine andere Lösung wäre zu verwenden, fdiskaber ich möchte meine Partition nicht löschen und Daten verlieren. Wie könnte ich die Partition einfach vergrößern, ohne eine Datei zu verlieren?

Hinweis: Ich spreche von einer nicht gemounteten Datenpartition ohne LVM und habe Sicherungen, möchte jedoch vermeiden, dass Sie etwas Zeit für die Wiederherstellung aufwenden.

mimipc
quelle
Diese Art von Frage wurde mir einige Male gestellt und beantwortet, die mir bekannt sind. Haben Sie die Archive hier konsultiert?
mdpc

Antworten:

45

Sie müssen mit der nicht gemounteten Partition beginnen. Wenn Sie die Bereitstellung nicht aufheben können (z. B. Ihre Root-Partition oder etwas anderes, das das System ausführen muss), verwenden Sie stattdessen eine System Rescue-CD .

  1. Run parted, oder gpartedwenn Sie es vorziehen , eine GUI, und die Größe der Partition den zusätzlichen Platz zu nutzen. Ich bevorzuge es, gpartedda es Ihnen eine schöne grafische Darstellung gibt, die der in Ihrer Frage gezeichneten sehr ähnlich ist.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (nur um herauszufinden, ob Sie auf der sicheren Seite sind)

  4. Hängen Sie Ihre Partition erneut ein.

Obwohl ich noch nie einen Fehler gesehen habe, sichern Sie zuerst Ihre Daten!

Flup
quelle
5
Die resize2fsManpage sagt: Wenn das Dateisystem eingehängt ist, kann es verwendet werden, um die Größe des eingehängten Dateisystems zu erweitern, vorausgesetzt, der Kernel unterstützt die Online-Größenänderung. (Zum jetzigen Zeitpunkt unterstützt der Linux 2.6-Kernel die Online-Größenänderung für Dateisysteme, die mit ext3 und ext4 gemountet wurden.) Das Ändern der Größe eines bereitgestellten Dateisystems ist jedoch gefährlicher, da der Kernel leicht einfrieren oder abstürzen kann, wenn selten ausgeführter Code ausgeführt wird, wodurch Ihr Dateisystem in einem schlechten Zustand bleibt.
200_erfolg
1
Richtig - aber Sie möchten nicht mit Ihrer Partitionstabelle herumspielen, während das Dateisystem aktiviert ist. Deshalb habe ich mit der fs unmounted angefangen.
Flup
1
Für ext4 könnte resize4fsstattdessen RHEL 5 sein.
Zac Thompson
1
Das Erweitern der Partition mit Ihrem Root-Dateisystem sollte problemlos funktionieren, solange: 1.Sie die Startsektornummer nicht ändern. 2.Sie starten nach dem Ändern der Partitionstabelle neu, bevor Sie den nächsten Schritt ausführen.
Kasperd
parted weigert sich, die Größe einer ext4-Partition unter CentOS 6 zu ändern.
reinierpost
21

Ja, Sie können EXT4-Fs online erweitern, wenn die Partition bereits sortiert ist. Haben Sie die Partition sortiert? Hast du LVM?

sudo resize2fs /dev/drive_to_grow

fdiskwird die Größe Ihrer Partition ändern, true, aber wenn dies eine Root-Partition ist (oder tatsächlich eine gemountete Partition), muss diese zuerst entmountet werden. Also höchstwahrscheinlich offline!

Wie bei allem, was mit Disk / Fs zu tun hat, empfehle ich dringend, einen Backup- und einen getesteten, gut verstandenen Wiederherstellungsprozess zu haben.

Chris
quelle
Wenn Sie verwenden fdisk, stellen Sie sicher, dass Sie MBR und nicht GPT verwenden (z. B. mit Hybrid-MBR).
stek29
2
Auf meinem Debian-XEN-Server habe ich die Größe meines logischen Volumes mit lvextend +40G /dev/vg0/volumeNamegeändert, mich dann als root im VM angemeldet und eingegeben, resize2fs /dev/xvda2wodurch das laufende Root-Dateisystem auf das neue Maximum anwächst . Ich bin nicht sicher, ob das benötigt wurde, aber ich habe den VM nach dieser Aktion neu gestartet. Alles scheint in Ordnung zu sein.
Rubo77
1
@ Rubo77 Nein, kein Neustart erforderlich,
Chris
5

Beachten Sie, dass auf einigen VDS-Servern möglicherweise eine nicht-primäre Root-Partition vorhanden ist und die Größe des erweiterten Partitionscontainers zuerst geändert werden muss

Zum Beispiel haben Sie gerade Ihren Plan aktualisiert und haben so etwas wie:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Hier ist / dev / vda2 - Ihr erweiterter Container. Und / dev / vda5 - Hauptpartition, deren Größe auf den verfügbaren Speicherplatz angepasst werden muss.

Der einfachste Weg:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space
WSR
quelle
Was mir sehr geholfen hat, war zu sehen, dass man ENDauf negative Zahl setzen kann. Normalerweise kennen Sie die exakte Linux-Größe einer Partition mit geänderter Größe nicht - Sie wissen nicht, wie Sie das ENDArgument für festlegen sollen resizepart. Durch Einstellen von -1swird die Größe Ihrer Partition auf max.
Srigi
Fehler: Ungültiges Token -1s
starbeamrainbowlabs
3

Parted funktioniert auf Centos nicht mit ext4. Ich musste fdisk verwenden, um die Partition zu löschen und neu zu erstellen, was (ich validierte) ohne Datenverlust funktioniert. Ich habe die Schritte unter http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ ausgeführt . Hier sind sie auf den Punkt gebracht:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w
JTW
quelle
1
Willkommen bei Server Fault! Bitte fasse die Schritte in der Antwort selbst zusammen, um Link Rot vorzubeugen.
200_success
Verwendete diesen Prozess, benutzte aber gdisk zum Erstellen der Partition. Dies erlaubte mir, die Daten zu speichern und eine Partition zu erstellen, die> 2
TB
2

partedkönnen resizePartitionen und ihre Dateisysteme.

200_erfolg
quelle
Danke, ich habe die grafische verwendet und sie unterstützt keine Änderung der Partitionsgröße. Ich habe die Option im CLI-Programm gesehen, aber können Sie mir sagen, wie ich sie sicher verwenden kann, ohne Daten zu verlieren? In resize NUMBER START END, sind START und ENDE die Sektornummern? Woher soll ich das wissen?
mimipc
Es wird immer empfohlen, Ihre Daten zu sichern, bevor Sie riskante Vorgänge wie das Ändern der Größe einer Partition ausführen. partedUnterstützt eine Auswahl von Einheiten. Verwenden Sie beispielsweise das sSuffix für Sektoren Boder GBfür Bytes, %für den Prozentsatz der Gerätegröße und cylfür Zylinder.
200_erfolg
2

Sie können fdiskoder verwenden cfdisk, um die Partition zu ändern (oder neu zu erstellen) (stellen Sie nur sicher, dass Sie die Startgrenze nicht ändern), und starten Sie dann und neu resize2fs. Im Allgemeinen ist es jedoch vorzuziehen, LVM-2 anstelle von MBR / GPT zu verwenden, da Sie diese Änderungen ohne Neustart des Kernels vornehmen können.

Poige
quelle
1

Nur um zu verdeutlichen, wie ich das für alle mache, die diesen Thread noch lesen.
Wenn es sich um die Boot-Partition handelt, deren Größe Sie ändern möchten, müssen Sie von einem Boot-CD- oder Boot-USB- "Rettungs" -Laufwerk booten, bei dem es sich nur um ein Live-Linux handelt. Auf diese Weise können Sie Linux auf einem anderen Computer als dem Laufwerk ausführen, auf dem Sie Änderungen vornehmen möchten.

Ich denke, die beste "Rettungs" -CD oder -USB in diesem Fall wären bootfähige gparted USB- oder CD-Hüllen,
in denen Sie ein Rettungsimage
1 benötigen. Die zu erweiternde Partition ist die letzte Partition, aber Sie haben von ihr gebootet und können sie nicht aushängen.
sda1 = booten (oder tauschen)
sda2 = tauschen (oder booten)
sda3 = /
Unbenutzter Speicherplatz

  1. Wenn die zu erweiternde Partition NICHT die letzte Partition ist, müssen Sie das gparted-Startabbild verwenden, um die Partitionen zu verschieben oder ihre Größe zu ändern.
    sda1 = boot
    sda2 = / (die zu erweiternde Partition ist nicht die letzte)
    sda3 =
    ungenutzten Speicherplatz tauschen

Wenn Sie eine gemountete Partition ändern möchten, die nicht die "Root" -Partition (/) ist, wie / home, die eine andere Partition ist, müssen Sie kein Rettungsimage verwenden. Dies gilt insbesondere dann, wenn es sich um die letzte Partition handelt.
sda1 = boot
sda2 = /
sda3 = / home
unbenutzter Speicherplatz
-oder-
sda1 = /
sda2 = / home
unbenutzter Speicherplatz

Dies ist die Situation, in der ich ein Image von einem kleineren Laufwerk oder einer SSD auf eine größere SSD übersetze.

In diesem Fall müssen Sie nur / home aushängen, während Sie es verlängern. Um die Bereitstellung von / home aufzuheben, müssen Sie sicherstellen, dass Sie nicht bei einem Benutzerkonto angemeldet sind, dessen Basisverzeichnis sich darin befindet. Da sich das Ausgangsverzeichnis des "root" -Nutzers direkt unter dem Systemstammverzeichnis / as in / root befindet, können Sie die Bereitstellung von / home aufheben, wenn Sie sich bei root anmelden können

Ich melde mich von einer GUI-Sitzung (KDE / Gnome / etc) ab und verwende [STRG] + [ALT] + [F1], um eine Shell-Sitzung aufzurufen.
Wenn Sie sich gerade von einem Benutzer abgemeldet haben, kann es 20 bis 30 Sekunden dauern, bis Linux alle Dateien geschlossen hat, sodass möglicherweise Fehler beim Versuch auftreten, / home zu mounten.
1. umount / home (Ich versuche diesen Befehl erneut, wenn er bis zu 30 Sekunden lang fehlschlägt. Dann schaue in anderen Sitzungen nach, ob ich irgendwo "cd / home / xxx" bin.)
2. parted / dev / sda
a. Größe ändern x (x = Partition, deren Größe Sie ändern möchten, verwenden Sie "p", um eine Liste der Partitionen zu erhalten)
b. Geben Sie den letzten Sektor der Größenänderung = "-1" ein (minus 1 bedeutet 1 Sektor vom Ende der Festplatte).
C. q (beendet die
Partition ) 3 resize2fs / dev / sda "x" (x = Partition, deren Größe geändert werden soll. Dadurch wird auch das Dateisystem neu geladen.)
4. df -m (ich überprüfe / home, um die Größe zu ändern)
Ich habe mit dieser Methode niemals Dateien verloren oder das Laufwerk beschädigt.

Viel Glück

Chuck A
quelle
Und doch machen Sie keine Backups.
Deer Hunter