Partitionen und Volumes vergroessern
Heute stand ich mal wieder vor einem interessanten Problem. Ich habe in einer virtuellen Umgebung (in diesem Falle XenServer) ein Template, dass nach dem Ausrollen in eine VM, eine 10GB Platte hat. Ich kann diese dann einfach im XenCenter vergroessern, was allerdings nur dazu fuehrt, dass das Betriebssystem in der VM, eine groessere Festplatte anzeigt. Eingebunden wird von diesem zusaetzlichen Speicherplatz nichts. Dazu bedarf es ein bisschen Abhilfe. Meine Festplatte ist im folgenden /dev/xvda, diese hat 2 Partitionen:
- /dev/xvda1 – 512MB Partition fuer /boot, ext2 als Dateisystem
- /dev/xvda2 – etwa 8.5GB grosse Partition fuer LVM (enthaelt root und swap)
Um das ganze nun umzubauen, damit /dev/xvda3 mehr als nur diese 8.5GB hat, sondern auch den restlichen freien Platz nutzt, sind folgende Schritte notwendig:
Notwendige Software
Auf einem debian brauche ich dazu: gpart (enthaelt sfdisk) und lvm2:
aptitude install gpart lvm2
Werte bestimmen
Bestimmen der Start- und Endwerte der zu aendernden Partition:
fdisk -u -l /dev/xvda
Das gibt folgende Ausgabe:
Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000b41d0 Device Boot Start End Blocks Id System /dev/xvda1 * 2048 999423 498688 83 Linux Partition 1 does not end on cylinder boundary. /dev/xvda2 999424 23066623 11033600 8e Linux LVM
Werte berechnen
Die Ausgabe von dem fdisk-Aufruf eben enthaelt alle notwendigen Angaben. Sowohl den Anfangs- als auch den Endwert. Der Anfangswert ist die 999424 (siehe auch das Device xvda2) und der Endwert ist die Sektor der Platte 41943040. Die Groesse der Partition muss berechnet werden: Sektorzahl der Platte minus Anfangswert – in meinem Bespiel also 41943040 – 999424 = 40943616
Partition vergroessern
Das eigentliche Vergroessern erfolgt mit sfdisk:
sfdisk --force -uS -N2 /dev/xvda
An der Kommandozeile von dem Programm dann erst den Startwert (999424) und die Groesse (40943616) angeben, mit Enter bestaetigen und dann noch die Aenderung mit y bestaetigen.
Die Partitionsgrenzen sind damit verschoben und um diese Aenderungen vollstaendig zu uebernehmen, muss die Maschine neugestartet werden.
PV und LV vergroessern
Die Partition ist jetzt auf volle Groesse gebracht, nun erfolgt das Vergroessern der ganzen LVM-Geschichten:
- Physical Volume vergroessern:
pvresize /dev/xvda2
Mit pvdisplay kann man die Aenderung kontrollieren.
- Die Volume Group sollte jetzt ebenfalls vergroessert sein. Kontrolle erfolgt ueber: vgdisplay. Hier kann man dann ebenfalls sehen, wieviel Speicherplatz jetzt auf dem Volume frei ist.
- Logical Volume vergroessern:
sudo lvextend -l +100%FREE data/root
Dateisystem vergroessern
Als letztes wird dann noch das Dateisystem angepasst und auf die maximale Groesse aufgeblasen. In meinem Beispiel ist es ein ext3. Das Vergroessern dauert… je nach Groesse eine ganze Weile:
resize2fs /dev/data/root
Fertig. Kontrolle erfolgt ueber df -h. Wenn hier jetzt die neue Festplattengroesse erscheint, ist alles glatt gelaufen. Am besten aber nochmal die Maschine neustarten, damit man sicher ist, dass nicht irgendwo ein kleiner Fehler ist. Gegebenenfalls ist sogar ein Filesystemcheck sinnvoll. Dieser sollte nicht auf einem gemounteten Dateisystem durchgefuehrt werden, sondern beim naechsten Neustart ablaufen. Dazu muss die Datei /forcefsck angelegt werden:
touch /forcefsck
Schreibe einen Kommentar