Skip to main content

Festplatte vergrößern / resize

Linux: Root-Partition mit Bordmitteln vergrößern (fdisk + resize2fs)

Ziel: Die bestehende Root-Partition /dev/sda2 wird ohne Zusatzpakete vergrößert. Wir ändern nur die Partitionstabelle (nicht das Dateisystem selbst) und lassen anschließend das ext4-Dateisystem online wachsen.

Kernprinzip für Sicherheit: Beim Neu-Anlegen der vergrößerten Partition muss der Startsektor von /dev/sda2 exakt gleich bleiben. Dadurch zeigen die Partitions-Metadaten weiterhin auf die gleiche Datenposition – das Dateisystem bleibt unbeschädigt. Wir schreiben erst am Ende mit w; bis dahin sind alle Änderungen nur im Speicher.


1) Voraussetzungen & Vorab-Checks

# Dateisystemtyp von / ermitteln (wichtig für den Grow-Befehl)
findmnt -no FSTYPE /

# Partitionslayout anzeigen und Startsektor von sda2 notieren
fdisk -l /dev/sda
  • Notieren: Den Wert in der Spalte Start von /dev/sda2. Dieser Wert muss später identisch eingegeben werden.
  • Backup-Empfehlung: Mindestens Konfigs und wichtige Daten (/etc, /var/lib/<dienst>).

Hinweis: Wenn sich freier Platz rechts (am Ende) von /dev/sda2 befindet, kann sie erweitert werden. In einem MBR-Layout mit einer kleinen erweiterten Partition vor sda2 (wie im Beispiel unten) blockiert diese das Wachstum nicht.


2) Umsetzung nur mit Bordmitteln (fdisk → resize2fs)

2.1 Swap (wenn nötig) temporär deaktivieren

Ist Swap rechts hinter /dev/sda2, muss er aus dem Weg. Im gezeigten Layout liegt /dev/sda5 vor /dev/sda2, daher war keine Aktion nötig. Allgemein:

swapoff -a    # Swap überall deaktivieren (nur temporär)

Warum: Aktiver Swap kann das Ändern/Löschen seiner Partition verhindern.

2.2 Partitionstabelle mit fdisk anpassen

fdisk /dev/sda

Kommandos in fdisk (Beispiel-Sitzung passend zu deinem Fall):

p               # p = print: aktuelle Tabelle zur Kontrolle anzeigen
d               # d = delete: die alte sda2 löschen (nur Tabelleneintrag!)
  2             # Partitionsnummer 2
n               # n = new: neue Partition anlegen
  p             # p = primary
  2             # Partitionsnummer 2 wiederverwenden
  <Startsektor> # exakt den zuvor notierten Start von sda2 eingeben (z.B. 1953792)
  <Ende>        # Enter für "bis zum Ende" (oder +<Größe> lassen, falls man Platz für Swap-Partition reservieren will)
p               # zur Kontrolle (Start muss identisch, Größe nun größer)
w               # w = write: Änderungen auf die Disk schreiben
  • Was passiert hier? Wir löschen nur den Tabellen-Eintrag von sda2 und legen ihn neu an – mit gleichem Start, aber größerem Ende. Die Nutzdaten bleiben an Ort und Stelle.
  • Warum sicher? Solange der Startsektor identisch bleibt, beginnt das ext4-Dateisystem am gleichen Offset. Es wird nicht „verschoben“ – nur die Partition informiert den Kernel, dass nun mehr Platz dazugehört.
Optional: Boot-Flag (BIOS/MBR)

In manchen Setups war die Root-Partition bootable (Sternchen in der Spalte Boot). Falls nötig, kann man den Boot-Flag wieder setzen:

a   # a = toggle bootable flag
2   # für Partition 2
w   # schreiben

Viele GRUB-Installationen booten auch ohne gesetztes Flag, aber wenn es zuvor gesetzt war, empfiehlt es sich, es wieder zu setzen.

2.3 Reboot (nur falls erforderlich)

Bei Root-Disks kann der Kernel die neue Geometrie nicht immer „live“ einlesen. In deinem Fall hat das Online-Resizing direkt funktioniert. Allgemein ist ein Neustart empfehlenswert:

reboot

3) Dateisystem online vergrößern

Für ext4 geht das im laufenden Betrieb:

# optionaler Konsistenzcheck im Online-Modus
e2fsck -f /dev/sda2

# ext4 bis zum Partitionsende vergrößern
resize2fs /dev/sda2

Was macht das? resize2fs liest die neue (größere) Partitionslänge aus und erweitert die internen Strukturen des ext4-Dateisystems, sodass der zusätzliche Platz nutzbar wird.

Ergebnis prüfen:

df -h /
lsblk

4) Deine konkrete Sitzung (vorher → nachher)

# Vorher (auszug)
Disklabel type: dos
Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1          2046   1953791   1951746   953M  5 Extended
/dev/sda2  *    1953792 314570751 312616960 149.1G 83 Linux
/dev/sda5          2048   1953791   1951744   953M 82 Linux swap / Solaris

# Aktion in fdisk:
d (2) → n (p, 2, Start=1953792, Ende=629145599) → w

# Nachher
Device     Boot   Start       End   Sectors   Size Id Type
/dev/sda1          2046   1953791   1951746   953M  5 Extended
/dev/sda2       1953792 629145599 627191808 299.1G 83 Linux
/dev/sda5          2048   1953791   1951744   953M 82 Linux swap / Solaris

# Dateisystem vergrößert:
resize2fs /dev/sda2
→ The filesystem on /dev/sda2 is now 78398976 (4k) blocks long.

# Platzgewinn sichtbar:
df -h /
→ /dev/sda2  294G  used 97G  free 184G  (Beispielwerte)

Besonderheit deines Layouts: Die kleine erweiterte Partition (/dev/sda1 mit /dev/sda5 als Swap) liegt am Anfang der Platte – vor /dev/sda2. Da wir /dev/sda2 nach rechts bis ans Plattenende vergrößert haben, störte der Swap nicht und musste nicht verschoben/gelöscht werden.


5) Warum das Verfahren sicher ist (wenn man es korrekt macht)

  • Unveränderte Datenlage: Es wird kein Byte des Dateisystems verschoben. Wir ändern nur die Beschreibung (Partitionseintrag) und vergrößern danach das FS „in-place“.
  • Zentraler Sicherheitsanker: Der Startsektor der Root-Partition bleibt exakt identisch.
  • Transaktionscharakter in fdisk: Bis zum Befehl w sind alle Änderungen nur im Speicher. Mit q könnte man gefahrlos abbrechen.
  • Online-Resize in ext4: Das Vergrößern geht im gemounteten Zustand; ext4 ist dafür ausgelegt.

Wenn es schief geht? Typische Fehler entstehen nur, wenn der Startsektor falsch eingegeben wird (→ dann zeigt der Eintrag nicht mehr auf das Dateisystem). Deshalb: Vor dem w mit p gegentesten und den Startwert doppelt prüfen.


6) Typische Stolpersteine & Checks

  • Boot-Flag: Falls vorher gesetzt, ggf. mit a wieder setzen.
  • /etc/fstab: Root wird meist via FS-UUID gemountet (bleibt unverändert). Falls per PARTUUID oder Gerätenamen gearbeitet wird, nachziehen.
  • Swap: Wenn die Swap-Partition gelöscht/verschoben wurde, /etc/fstab anpassen oder auf ein Swapfile umstellen.
  • XFS: XFS kann nur wachsen (Befehl: xfs_growfs /), nicht schrumpfen.
  • Kernel-Re-Read: Auf Root-Disk gelingt das Live-Einlesen nicht immer → ggf. Reboot einplanen.

7) Alternative: Swap als Datei (empfohlen)

Wer künftig flexibel bleiben will, legt Swap als Datei an und spart sich MBR/erweiterte-Partition-Themen:

# 2 GiB Swapfile (Größe anpassen)
fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
printf "\n/swapfile none swap sw 0 0\n" >> /etc/fstab

8) Kurzzusammenfassung (Cheat Sheet)

# 1) Startsektor notieren
fdisk -l /dev/sda

# 2) fdisk: sda2 löschen > neu anlegen (gleicher Start, größeres Ende)
fdisk /dev/sda
# p, d (2), n (p, 2), Start=<alter Start>, Ende=<Enter für Ende>, p, w

# 3) (ggf.) reboot

# 4) Dateisystem vergrößern (ext4)
resize2fs /dev/sda2

# 5) prüfen
df -h /
lsblk

Damit ist die Root-Partition vergrößert, ohne zusätzliche Tools zu installieren, minimal-invasiv und sicher – sofern der Startsektor gleich bleibt und die Kontrolle mit p vor dem w sorgfältig erfolgt.