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. Mitq
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.
No Comments