root-Partition unter Linux in der Kommandozeile vergrößern

Immer wieder passiert es mir, dass ich die Größe der Root-Partition unter ESX oder Proxmox zu klein festlege und nachträglich nach oben korrigieren möchte. Leider reicht es dafür nicht, die Festplatte in der Weboberfläche zu setzen, da die Partitionstabelle getrennt aktualisiert werden muss.

Um bei einem laufenden System die root-Partition zu vergrößern, bietet sich das Tool parted zusammen mit resize2fs an. Im folgenden Beispiel vergrößere ich die Partition /dev/sda2 auf die maximal mögliche Größe.

  1. Zu Beginn mus parted mit root-Rechten gestartet werden:
$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
  1. Im Anschluss muss die Festplatte ausgewählt werden. In meinem Fall /dev/sda.
(parted) select /dev/sda
Using /dev/sda
  1. Zur besseren Übersicht kann nun noch mit unit MiB die Anzeigeeinheit auf Mebibytes geändert werden.

  2. Anschließend kann mit print free der freie Speicher der Festplatte angezeigt werden. Dabei bietet parted direkt an die GPT Partitionstabelle um den freien Platz zu erweitern. Dies muss mit Fix bestätigt werden. Danach wird das aktuelle Festplattenlayout angezeigt:

(parted) print free
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 104857600 blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 153600MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start     End        Size      File system  Name  Flags
        0.02MiB   1.00MiB    0.98MiB   Free Space
 1      1.00MiB   2.00MiB    1.00MiB                      bios_grub
 2      2.00MiB   65536MiB   65534MiB  ext4
        65536MiB  153600MiB  88064MiB  Free Space
  1. Nun kann mit resizepart die zweite Partition vergrößert werden. Um den vollen Platz zu nutzen, kann hier 100% verwendet werden. Ansonsten lassen sich auch beliebige Größen in diversen Einheiten z.B. Mebibyte (MiB) oder Sektoren (s) verwenden.
(parted) resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? Yes
End?  [65536MiB]? 100%
  1. Jetzt kann mit print verifiziert werden, ob alles geklappt hat. Bei mir sah das wie folgt aus:
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 153600MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start    End        Size       File system  Name  Flags
 1      1.00MiB  2.00MiB    1.00MiB                       bios_grub
 2      2.00MiB  153600MiB  153598MiB  ext4
  1. Zum Abschluss muss noch das Dateisystem an die Partition angepasst werden. Das klappt am schnellsten mit resize2fs:
$ sudo resize2fs /dev/sda2
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 8, new_desc_blocks = 19
The filesystem on /dev/sda2 is now 39321083 (4k) blocks long.