it-swarm.com.de

Wie kann man eine ext4-Partition und ein Dateisystem erweitern?

Ich habe eine 400-GB-Festplatte mit einer 320-GB-ext4-Partition. Ich möchte die ext4-Partition erweitern, um den linken Speicherplatz (80 GB freien Speicherplatz) zu verwenden.

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

Wie könnte ich das machen?

Ich habe Leute gesehen, die resize2fs aber ich verstehe nicht, ob es die Größe der Partition ändert.

Eine andere Lösung wäre die Verwendung von fdisk, aber ich möchte meine Partition und meine losen Daten nicht löschen. Wie kann ich die Partition einfach vergrößern, ohne eine Datei zu verlieren?

Hinweis: Ich spreche von einer nicht gemounteten Datenpartition ohne LVM und habe Backups, möchte aber vermeiden, einige Zeit für die Wiederherstellung aufzuwenden.

50
mimipc

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 System Rescue CD .

  1. Führen Sie parted oder gparted aus, wenn Sie eine GUI bevorzugen, und ändern Sie die Größe der Partition, um den zusätzlichen Speicherplatz zu nutzen. Ich bevorzuge gparted, da 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. Montieren Sie Ihre Partition erneut.

Obwohl ich noch nie gesehen habe, dass dies fehlschlägt, sichern Sie zuerst Ihre Daten!

53
Flup

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

Sudo resize2fs /dev/drive_to_grow

fdisk ändert die Größe Ihrer Partition, true, aber wenn dies eine Root-Partition ist (oder wenn tatsächlich eine gemountete Partition vorhanden ist), muss sie zuerst nicht gemountet werden. Also höchstwahrscheinlich offline!

Wie bei allem, was mit Festplatten-/Fs-Vorgängen zu tun hat, empfehle ich dringend, einen Sicherungs- und getesteten, gut verstandenen Wiederherstellungsprozess durchzuführen.

22
Chris

Beachten Sie, dass auf einigen VDS-Servern möglicherweise nicht primäre Root-Partitionen vorhanden sind 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/dev/vda2 - ist Ihr erweiterter Container. Und/dev/vda5 - Hauptpartition, deren Größe auf den vollen 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
6
WSR

parted kann resize Partitionen und deren Dateisysteme.

3
200_success

Parted funktioniert unter ext4 unter Centos nicht. Ich musste fdisk verwenden, um die Partition zu löschen und neu zu erstellen, was (ich habe es überprüft) funktioniert, ohne Daten zu verlieren. Ich habe die Schritte unter http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ befolgt. 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
3
JTW

Sie können fdisk oder cfdisk verwenden, um die Partition zu ändern (oder neu zu erstellen) (stellen Sie nur sicher, dass Sie ihre Startgrenze nicht ändern), dann neu starten und 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.

2
poige

Nur um zu verdeutlichen, wie ich das für jeden mache, der diesen Thread noch liest.
Wenn es sich um die Boot-Partition handelt, deren Größe Sie ändern möchten, müssen Sie von einem Bootcd- oder Bootusb-Rettungslaufwerk 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, an dem Sie Änderungen vornehmen möchten.

Ich denke, die beste "Rettungs" -CD oder USB in diesem Fall wäre eine bootfähige gparted USB oder CD
Fälle, in denen Sie ein Rettungsbild benötigen
1. 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 = Swap (oder Boot)
Sda3 = /
Nicht genutzter Speicherplatz

  1. Wenn die zu erweiternde Partition NICHT die letzte Partition ist, müssen Sie das gparted-Boot-Image verwenden, um die Partitionen zu verschieben oder ihre Größe zu ändern.
    Sda1 = boot
    Sda2 =/(zu erweiternde Partition ist nicht die letzte)
    Sda3 = Swap
    ungenutzter Speicherplatz

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

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

In diesem Fall müssen Sie nur die Bereitstellung aufheben, während Sie sie erweitern. Zum Aufheben der Bereitstellung von/home müssen Sie jedoch sicherstellen, dass Sie nicht in einem Benutzerkonto angemeldet sind, dessen Home-Verzeichnis sich darin befindet. Da sich das Home-Verzeichnis des Benutzers "root" direkt unter dem Systemstamm/as in/root befindet, können Sie/home aushängen, 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 einer Benutzeranmeldung abgemeldet haben, kann es 20 bis 30 Sekunden dauern, bis Linux alle Dateien geschlossen hat, sodass beim Versuch, umount/home zu starten, möglicherweise Fehler auftreten.
1. umount/home (Ich versuche diesen Befehl erneut, wenn er bis zu 30 Sekunden lang fehlschlägt, und schaue dann in anderen Sitzungen nach, ob ich irgendwo "cd/home/xxx" bin.)
2. getrennt/dev/sda
ein. 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 sich getrennt)
3 resize2fs/dev/sda "x" (x = Partition, deren Größe geändert werden soll. Dadurch wird auch das Dateisystem erneut bereitgestellt.)
4. df -m (Ich überprüfe/home, um zu überprüfen, ob die Größe geändert wurde)
Ich habe mit dieser Methode nie Dateien verloren oder das Laufwerk beschädigt.

Viel Glück

1
Chuck A

Ich wurde gebeten, eine Festplatte zu erstellen, die auf einem Dell-Server unter CentOS 7 als/Scratch bereitgestellt wurde, ohne die aktuellen Benutzer zu unterbrechen. Dies war eine XFS-Partition auf einer RAID 0-Festplatte mit einem normalen GPT-Datenträger. Dies würde für eine ext4-Partition fast genauso funktionieren - siehe später.

So habe ich das gemacht, ohne den Betrieb des Systems zu deaktivieren, neu zu starten oder zu unterbrechen. Ich habe gerade Linux-Befehle (und die RAID-Tools von Dell) verwendet:

  1. Das physische RAID-Volume wurde vergrößert, indem dem Server zwei neue Festplatten hinzugefügt und mit dem OpenManage Server Administrator-Tool zum vorhandenen RAID-Volume hinzugefügt wurden. Dies dauerte mehrere Tage, erforderte jedoch keine weiteren menschlichen Anstrengungen. Der Server arbeitete während der Rekonstruktion der RAID-Festplatte weiterhin mit niedrigeren Festplattengeschwindigkeiten.
  2. Die Größe der Festplatte in Blöcken war von 15623782400 auf 23435673600 (512 Byte) Blöcke angewachsen, aber der Wert von /sys/block/sdb/size War immer noch auf dem niedrigeren Wert. Dies wurde mit dem folgenden Befehl korrigiert: echo 1 > /sys/block/sdb/device/rescan
    , damit der Festplattentreiber sein Wissen über die Größe und Form der Festplatte aktualisiert. Dies scheint eine schlecht beworbene Funktion zu sein: Ich habe anhand des Namens erraten, was es getan hat!
  3. Ich habe parted ausgeführt, um das Disklabel zu bearbeiten und seine Kopie am Ende der Festplatte auf das neue Ende der Festplatte zu verschieben. Zum Glück hat es genau erraten, was ich ohne Ermutigung tun wollte, und mich dazu aufgefordert. Zuerst die Kopie des Disklabels: Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? F
    Und dann die Größe der Festplatte, wie sie auf dem Datenträger angegeben ist: Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting? Fix/Ignore? F
    Also musste ich zweimal "F" und dann "q" eingeben, um mit dem korrigierten Disklabel (und seiner Kopie) zu beenden. Dies reparierte das meiste, was repariert werden musste, ohne hart nachzudenken oder zu arbeiten.
  4. Ich musste die Partitionsgröße bearbeiten, um die Festplatte zu füllen, aber parted ließ mich das nicht tun, während die Festplatte noch gemountet war - also habe ich stattdessen fdisk verwendet: fdisk /dev/sdb d 1 n 1 (defaults were correct for full size of disk) t 1 11 (That's Microsoft basic data - which is the same as xfs). w
    Beachten Sie, dass ich festgestellt hatte, dass die richtige Startblocknummer 2048 verwendet wurde. Andernfalls hätte es nicht funktioniert. Ich hatte das Glück, zwei Tools zu verwenden, die dieselbe Konvention für den Startblock hatten, aber ich habe zuerst den anfänglichen Startblock überprüft.
  5. Ich habe an dieser Stelle auch parted verwendet, um der Partition den gleichen Namen zu geben, den sie früher hatte, da fdisk das Benennen von Partitionen nicht unterstützt. Ein kleines Detail.
  6. Ich habe partprobe /dev/sdb (Und partprobe /dev/sdb1 Aus gutem Grund) verwendet, um das Betriebssystem dazu zu bringen, die Partitionstabelle erneut zu lesen. Ich denke, nur der erste Befehl hat tatsächlich einen Unterschied gemacht.
  7. Schließlich habe ich xfs_growfs -d /scratch Verwendet, was nur 1,6 Sekunden dauerte, um die Partition auf ihre endgültige Größe zu vergrößern und die neu gewachsene Festplatte zu füllen.

Dies würde auch mit ext4-Volumes funktionieren: Der einzige Unterschied wäre die Verwendung von resize2fs /dev/sdb1 Anstelle von xfs_growfs -d /scratch - und die Verwendung der richtigen Partitionstypnummer für ext4 anstelle von xfs. Der Befehl fdisk kann die Typennummern für gängige Festplattensysteme, einschließlich ext4, auflisten.

0

Die akzeptierte Antwort ist etwas veraltet: Die Größenänderung eines ext4-Dateisystems ist besser online als offline, da der Online-Erweiterungscodepfad viel häufiger verwendet wird als der Offline-Pfad.

Das Schwierigere ist wahrscheinlich, die zugrunde liegende Partition zu erweitern, es sei denn, Sie verwenden LVM nd Sie haben freien Speicherplatz in Ihrer Volume-Gruppe. Um eine Partition online zu erweitern, können Sie fdisk oder parted verwenden. dann musstest du kpartx <device>, um den Kernel über die Änderung zu informieren. Wenn Sie LVM verwenden, müssen Sie die gerade geänderte Partition pvresize vor lvresize dem Volume _.

Schließlich können Sie resize2fs Ihr Dateisystem.

0
shodanshok