Speicherplatz von Linux VMs vergrößern


Wenn man z.B. in Proxmox die Festplatte einer Virtuellen Maschine vergrößert, steht dieser Platz nicht zur Verfügung. Dazu müssen zuerst das Dateisystem und die Partition vergrößert werden. Diese Anleitung wurde für Debian Systeme erstellt.

Wichtig: Zunächst sollte ein Backup der Virtuellen Maschine erstellt werden. Beim verstellen der Partitionen passieren schnell Fehler die nicht mehr Rückgängig gemacht werden können. Angaben ohne Gewähr!

Mit diesem Befehl kann man sich den aktuell verfügbaren Speicherplatz ansehen:

usw@usw:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            9.8G     0  9.8G   0% /dev
tmpfs           2.0G  544K  2.0G   1% /run
/dev/sda1        31G   20G  9.1G  69% /
tmpfs           9.8G     0  9.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /run/user/1000

Man sieht auch dass die Root-Partition /dev/sda1 ist da sie auf / gemountet ist.

Standardmäßig befindet sich die Swap-Partition am Ende der Festplatte. Sie versperrt also die Erweiterung der Root-Partition. Dafür muss diese Verschoben werden.

Swap Verschieben

Zunächst muss der Swap verschoben werden. Mit diesem Befehl kann man die gesamte größe und die partitionen sehen:

usw@usw:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 128 GiB, 137438953472 bytes, 268435456 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb9c69ded

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048 132216831 132214784   63G 83 Linux
/dev/sda2       132218878 134215679   1996802  975M  5 Extended
/dev/sda5       132218880 134215679   1996800  975M 82 Linux swap / Solaris

Notiere die Gesamtanzahl der Sektoren, hier 268435456. 1GB entspricht ~2,097,152 Sektoren (angenommen ein Sektor entspircht 512 Byte wie oben). Subtrahiere 2,097,152 von der gesamtanzahl der Sektoren ab:

Startsektor = Anzahl Sektoren - 2097152
  • Beispiel: 268435456 - 2097152 = 266338304.

Bisherige Swap-Partition deaktivieren

Falls eine Swap-Partition existiert, kann sie so deaktiviert werden:

sudo swapoff /dev/sda5

So kann überprüft werden dass kein Swap mehr aktiv ist:

swapon --show

Bisherige Swap-Partition entfernen

Mithilfe von fdisk kann man die bisherige Swap-Partition löschen.

sudo fdisk /dev/sda

Im obigen Beispiel befindet sich die Swap-Partition (sda5) innerhalb einer Extended Partition (sda2). In diesem Fall müssen beide gelöscht werden.

  • p um die Partitionstabelle auszugeben.
  • d um eine Partition zu löschen.
  • Nummer der zu Löschenden Partition eingeben. (z.B. 5).
  • d um ggf. eine weitere Partition zu löschen.
  • Nummer der zu Löschenden Partition eingeben. (z.B. 2).
  • w um die Änderungen auf die Festplatte zu schreiben.

Neue Swap-Partition erstellen

Anschließend kann die neue Swap-Partition erstellt werden:

sudo fdisk /dev/sda

In fdisk die folgenden Befehle ausführen:

  • n um eine neue Partition zu erstellen.
  • p um eine Primäre Partition zu erstellen.
  • Nächste freie Nummer eingeben (z.B. 2).
  • Den vorher berechneten Startsektor eingeben.
  • Enter drücken um den standard Wert für den Letzten Sektor zu übernehmen. (Ende der Platte).
  • t um die Art einer Partition zu ändern.
  • Die neue Partitionsnummer auswählen (z.B. 2).
  • Den Typ 82 für Linux swap wählen.
  • w um die Änderungen auf die Festplatte zu schreiben.

Neue Swap-Partition formatieren

Die neue Swap-Partition formatieren:

sudo mkswap /dev/sda2

Neue Swap-Partition aktivieren

Swap Aktivieren:

sudo swapon /dev/sda2

Überprüfen mit:

swapon --show

Änderung der Swap-Partition Persistent machen

Die UUID der Swap-Partition auslesen:

usw@usw:~$ sudo blkid /dev/sda2
/dev/sda2: UUID="4ac5f6bb-373e-49f3-bc85-f100dea2cf6c" TYPE="swap" PARTUUID="b9c69ded-02"

Notiere die UUID (hier "3ec470db-ef5c-49f3-bc85-f100dea2cf6c").

Nun die neue Partition in der fstab eintragen:

sudo nano /etc/fstab

Folgende Zeile ändern:

UUID=<SWAP-UUID> none swap sw 0 0

Ersetze die <SWAP-UUID> mit der UUID aus dem blkid Befehl.

Mit diesem Befehl kann die Config überprüft werden:

sudo swapon -a

Speicherplatz erweitern

Mit growpart wird die Root-Partition erweitert.

sudo apt install cloud-utils
sudo growpart /dev/sda 1

Der Parameter -N gibt die Änderungen aus, schreibt aber keine änderungen auf die Festplatte.

Nachdem die Partition vergrößert wurde, muss auch das Dateisystem erweitert werden:

sudo resize2fs /dev/sda1

Nun sollte der Speicherplatz verfügbar sein:

df -h
lsblk

Neustarten und Verifizieren

Virtuelle Maschine neustarten:

sudo reboot

Nach dem Neustart überprüfen dass der Swap aktiv ist:

sudo swapon --show

Zuletzt bearbeitet am: 05.01.2025

Erschienen am: 05.01.2025

Author Image

Heinrich Thalerheini_usw

Angehender Fachinformatiker für Systemintegration and der EDV-Schule Plattling