Festpatte unter Linux erweitern
ohne das System zu unterbrechen
In diesem Artikel halte ich kurz fest, wie man die Festplatte eines Linux-Systems im laufenden Betrieb erweitert.
Zunächst muss der zur Verfügung stehende Speicher erweitert werden, das funktioniert natürlich nur bei virtuellen Systemen, eine physische Festplatte lässt sich leider nicht einfach aufblasen ;)
Eine weitere Existiert noch: Das ganze funktioniert nur für die letzte Partition auf der Festplatte.
Die folgende Anleitung bezieht sich auf die Platte sda
, bei Abweichender Platte muss das natürlich in allen Befehlen entsprechend angepasst werden.
Wenn jetzt also mehr Platz zur Verfügung steht als verwendet wird, kann mittels echo 1>/sys/class/block/sda/device/rescan
ein Rescan der Platte angestoßen werden.
Aufgrund der Ausgabeumleitung funktioniert der Befehl nicht mit vorangestelltem sudo, daher entweder vorher zum User Root wechseln (sudo su
) oder eine der beiden Lösungen aus dem verlinkten Artikel verwenden und entweder die ganze Zeile in eine Subshell übergeben (sudo bash -c 'echo 1 > /sys/block/sda/device/rescan'
) oder die Umleitung mit tee
vornehmen (echo 1 | sudo tee /sys/block/sda/device/rescan
).
Am Anschluss kann mittels fdisk -l /dev/sda
geprüft werden, ob die neue Größe erkannt wurde, die Ausgabe sollte eine Warnung sowie die korrekte neue Größe beinhalten.
tokk@linux:~$sudo fdisk -l /dev/sda
GPT PMBR size mismatch (33554431 != 41943039) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Wenn das funktioniert hat mittels fdisk
die alte Partition gelöscht und eine neue angelegt werden:
tokk@linux:~$sudo fdisk /dev/sda
[…]
Command (m for help): d
Partition number (1,2, default 2):↵
Partition 2 has been deleted.
Command (m for help): n
Partition number (2-128, default 2):↵
First sector (4096-41943006, default 4096):↵
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4096-41943006, default 41943006):↵
Created a new partition 2 of type 'Linux filesystem' and of size 20 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Command (m for help): w
The partition table has been altered.
Syncing disks.
Der erste Sektor der neuen Partition muss hierbei identisch zum ersten Sektor der gerade gelöschten Partition sein, der letzte Sektor muss größer oder mindestens gleich dem der alten Partition sein. Wenn man keinen Wert eingibt wählt fdisk
automatisch den letzten nutzbaren Sektor aus und vergrößert die Partition somit auf den maximalen zur Verfügung stehenden Platz.
Sehr wichtig ist es, die Frage nach dem Löschen der bestehenden Dateisystem-Signatur zu verneinen!
Abschließend muss das Dateisystem der Platte noch auf die neue Größe der Partition eingestellt werden:
tokk@linux:~$sudo resize2fs /dev/sda2
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sda2 is now 5242363 (4k) blocks long.
Der Festplattenplatz steht jetzt zur Verfügung und kann verwendet werden.
Vorher:
tokk@linux:~$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 16G 8,1G 6,9G 54% /
Nachher:
tokk@linux:~$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 8,1G 11G 44% /
tl;dr
sudo su
echo 1>/sys/class/block/sda/device/rescan
fdisk /dev/sda
Command (m for help): d
Partition number (1,2, default 2):↵
Command (m for help): n
Partition number (2-128, default 2):↵
First sector (4096-41943006, default 4096):↵
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4096-41943006, default 41943006):↵
Do you want to remove the signature? [Y]es/[N]o: N
Command (m for help): w
resize2fs /dev/sda2
Obligatorische Warnung
Dass die hier aufgeführten Befehle zu Datenverlust führen können, erwähne ich hier nur der Vollständigkeit halber, da es eigentlich klar sein sollte