# 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 &amp; Vorab-Checks

```bash
# 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:

```bash
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

```bash
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.

<details id="bkmrk-optional%3A-boot-flag-"><summary>Optional: Boot-Flag (BIOS/MBR)</summary>

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.

</details>### 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:

```bash
reboot
```

---

## 3) Dateisystem online vergrößern

Für ext4 geht das im laufenden Betrieb:

```bash
# 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:

```bash
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 &amp; 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:

```bash
# 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)

```bash
# 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.