Das die Boot Partition auf einem Linux Server vollläuft ist ein Problem das mir immer mal wieder über den Weg läuft. Man sollte meinen in Zeiten von LVM, Containern, Cloud etc. wäre das nicht mehr der Fall, aber bei Servern die schon sehr lange in Betrieb (aber trotzdem durch Upgrades aktuell sind, weil Linux das halt gut kann) sind kann es trotzdem immer wieder vorkommen. Auf jeden Fall bekommt man dann bei der Installation von Updates und neuen Kernel Images immer wieder Probleme. Meistens reicht es vorerst aus alte Kernel Images von der Boot Partition zu löschen (Achtung vorher mit uname -a immer prüfen welches Image der Server grad verwendet), aber auf Dauer ist das einfach lästig.
Also muss die Boot Partition vergrößert werden. Hat man ein LVM, kein Problem. Teilweise sind die LVM Installationen aber auch früher so gemacht worden, dass genau die Boot Partition nicht im LVM ist. Dann hat man mehr oder weniger ein Problem und bei den Szenarien ohne LVM auch. Jetzt kann man mit und ohne Live-System am Partitionslayout schrauben und sich irgendwie etwas zurechtfummeln. Das kann funktionieren, ist aber je nach Zeit und Kenntnisstand umständlich und auch fehleranfällig, dann kann man gleich den Server sauber neu aufsetzen. Will und kann man das nicht, ist aus meiner Erfahrung die einfachste Möglichkeit die Boot Partition auf eine neue Festplatte zu verschieben und dann zu vergrößern. Das hat bis jetzt immer funktioniert. Warum auf eine neue Platte? Weil keine bestehenden Partitionen auf der neuen Platte vorhanden sind und die Boot Partition dann nach hinten problemlos vergrößert werden kann.
Hinweis: Root/Sudo wird benötigt. Außerdem ist ein Backup natürlich dringend empfohlen, da Änderungen an den Festplatten immer ein Risiko mitbringen, dafür ist jeder selbst verantwortlich.
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
lsblk
ob die neue Festplatte nun erscheint und unter welcher Bezeichnung, in meinem Fall ist es /dev/sdb
WICHTIG Wenn es bei euch nicht /dev/sdb
ist, im folgenden /dev/sdb
immer entspechend ersetzen, sonst werden ggf. andere Partitionen oder Festplatten in eurem System verändert oder gelöscht.
fdisk /dev/sdb
eine neue Partition erstellen (geht natürlich auch mit parted, falls man damit lieber arbeitet)Befehl (m für Hilfe): n
Partitionstyp
p Primär (0 primär, 0 erweitert, 4 frei)
e Erweitert (Container für logische Partitionen)
Wählen (Vorgabe p): p
Partitionsnummer (1-4, Vorgabe 1): 1
Erster Sektor (2048-4194303, Vorgabe 2048):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (2048-4194303, Vorgabe 4194303): +1G
Eine neue Partition 1 des Typs „Linux“ und der Größe 1 GiB wurde erstellt.
Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.
Festplatten werden synchronisiert
partprobe
dd
, welches bitgenau kopiert und somit auch das Dateisystem mitkopiert. dd arbeitet ohne Rückfragen, also den Befehl vorher gut checken: dd if=/dev/sda1 of=/dev/sdb1 bs=512 conv=noerror,sync
e2fsck /dev/sdb1
/dev/sdb1: sauber, 315/124496 Dateien, 157347/248832 Blöcke
resize2fs /dev/sdb1
um die Partition auf die zuvor angelegten 1GB zu vergrößern
resize2fs 1.44.1 (24-Mar-2018)
Dateisystem bei /dev/sdb1 ist auf /boot eingehängt; Online-Größenänderung ist
erforderlich
old_desc_blocks = 1, new_desc_blocks = 4
Das Dateisystem auf /dev/sdb1 is nun 1048576 (1k) Blöcke lang.
/etc/fstab
bearbeiten und die neue Boot Partition eintragen bzw. den alten Eintrag bearbeiten. Per blkid
kann ggf. die UUID der neuen Boot Partition abgefragt werden und auch der Dateisystemtyp. Den bekommt man übrigens auch mit lsblk -f
oder df -Th
....
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=b214661e-58ef-4dc8-8d76-ea254ece99aa /boot ext4 defaults 0 2
...
df -h
oder lsblk
prüfen ob alles passt.