Heureka! Ich hab's geschafft. Hab mich zwar erst lange einlesen müssen, damit ich das verstehe aber letztendlich hat's funktioniert. Hier also eine Beschreibung wie ich vorgegangen bin. Wie bereits erläutert, ich wollte hier auf LVM gänzlich verzichten.
Anmerkung: immer vorher ein gültiges und vollständiges Backup machen !!! meine Angaben sind ohne Gewähr und nur auf eigene Gefahr hin nachzuahmen. Ich erläutere lediglich wie ich das gemacht habe.
Urzustand:
Vergrößerung der physikalischen Festplattengröße:
Nachdem ich die virtuelle Festplatte innerhalb Xen einfach auf auf 25GB vergrößert habe, hab ich die VM heruntergefahren. Die Festplatte habe ich auf einer ganz anderen Test-VM angehängt, natürlich als read-write damit ich sie bearbeiten kann. Das habe ich getan, damit ich es einfach hab und keine Dateien oder Filesystem durch den laufenden Betrieb gesperrt wären. Also die ursprüngliche xvd
a habe ich auf einer andren VM angehängt, dort heißt sie natürlich logischerweise xvd
b (weil es die zweite Festplatte war).
Man sieht hier deutlich, dass sich lediglich die Gesamtkapazität geändert hat (vorher ~8,6GB und danach 26,8GB). An den Sektoren sieht man aber deutlich, dass die Partitionen ja unverändert geblieben sind. Man muss also hier jetzt erstmal die Partitionen anpassen. Also:
Partitionen von Hand editieren und anpassen
Erstmal zur kleinen Orientierung eine kleine Hilfsrechnung... die /dev/xvdb1 startet bei Sektor 2048 und endet bei 15988735. Wenn man ersteres vom letzteren abzieht erhält man das Ergebnis 15986687 Sektoren. Das bedeutet also
die Partition /dev/xvdb1 ist 15986687 Sektoren lang. Wenn man das in Megabyte umrechnen will teilt man das durch 2048. Das ergibt dann ~7,8GB.
Zur Erinnerung die Umrechnung von Sektoren nach Festplattenspeicherplatz
Code: Alles auswählen
1 KB = 1024 Byte = 2 Sektoren
1 MB = 1024 KB = 1048576 Byte = 2048 Sektoren
1 GB = 1024 MB = 1048576 KB = 2097152 Sektoren
1 TB = 1024 GB = 1048576 MB = 1073741824 KB = 2147483648 Sektoren
Die
Partition xvdb2 ist 16775167-15990782=
784385 Sektoren lang
Die
Partition xvdb5 ist 16775167-15990784=
784383 Sektoren lang
Die xvdb5 ist ein logisches Laufwerk, welches unterhalb unsrer erweiterten Partition xvdb2 liegt, deswegen sind die auch nahezu identisch. Bei dem /dev/xvdb5 handelt es sich um mein Swap-Laufwerk, das ~383 MB groß ist.
Das Ziel
Ich möchte meine Datenpartition vergrößern, in meinem Fall ist es die xvdb1. Freien ungenutzten Speicher habe ich ja, aber ich kann den nicht einfach so der xvdb1 zuweisen, denn hinter der xvdb1 befinden sich ja noch weitere Partitionen (die xvdb2 und xvdb5). Also muss ich zwangsweise alle Partitionen dahinter löschen, inkl. meiner zu veränderten gewünschten Partition und dann die Start/Stop-Positionen der Partitionen verändern. In dem Falle muss ich also alle (!) 3 Partitionen löschen. Hinzufügen möchte ich, dass durch das Löschen der Partitionsinformationen nicht zwangsweise die Daten flöten gehen. Ich erstelle sie ja anschließend wieder neu, jedoch mit anderen Positionen.
Ich lösche nun alle 3 Partitionen indem ich "fdisk /dev/xvdb" ausführe und dann einzeln und nacheinander die Partition xvdb5, xvdb2, und xvdb1 lösche. Insgesamt stehen mir nun auf der gesamten xvdb Festplatte laut fdisk 52428800 Sektoren zur freien Verfügung. Die xvdb2 war ursprünglich 784385 Sektoren lang. Damit also am Ende meine xvdb2 wieder 784385 Sektoren lang ist, berechne ich an welchem Sektor sie beginnen muss, damit das so hinhaut. Wir rechnen also 52428800 - 784385 und erhalten das Ergebnis 51644415. Das bedeutet die xvdb2 muss bei Sektor 51644415 beginnen.
Hinweis: der letzte Sektor der Festplatte kann nicht belegt werden, deswegen ziehe ich davon noch einen Sektor ab. Also muss xvdb2 bei Sektor 5164441
4 beginnen. Den restlichen freien großen Speicher weise ich also meiner xvdb1 zu und zwar liegt der ja
vor[/b] diesem Sektor 51644414.
Gesagt getan, wir setzen das jetzt in fdisk um:
(-) ich erstelle eine primäre Partition, die beginnt zwangsweise immer bei Sektor 2048, und als Endsektor gebe ich jetzt ein 5164441
3 ein. (eins weniger als die Stelle wo xvdb2 beginnt!)
(-) ich erstelle eine erweiterte Partition, mit Startsektor 51644414 und Endsektor bis zum Ende (mit Entertaste bestätigen, dann wird defaultmäßig bis zum Ende gewählt)
(-) ich erstelle eine logische Partition, beide Male mit Enter bestätigen, damit die default Werte genommen werden, also wird die logische Partition den maximal möglichen Speicherplatz erhalten, wie auch unsere erweiterte Partition ist (mit Unterschied von 2 Sektoren, technischer Natur.
(-) ganz wichtig, wenn wir 'p' drücken und uns die aktuellen Einstellungen nochmal anzeigen lassen, bemerken wir, dass die logische Partition xvdb5 als Typ 83=Linux markiert ist. Das müssen wir natürlich abändern, denn sie muss für Swap markiert werden. Wir drücken also
't' (=change partitions type id), danach Partition 5 wählen, und geben die
ID 82 ein, was für "Linux swap / Solaris" steht.
Kontrolle:
Zuletzt mit
'p' die Partitionen nochmal anzeigen lassen und kontrollieren. Das ergibt dann diesen Output:
Code: Alles auswählen
Command (m for help): p
Disk /dev/xvda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 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: 0x0002b326
Device Boot Start End Blocks Id System
/dev/xvda1 2048 51644413 25821183 83 Linux
/dev/xvda2 51644414 52428799 392193 5 Extended
/dev/xvda5 51646462 52428799 391169 82 Linux swap / Solaris
Wenn wir uns sicher sind, speichern wir diese getätigten Änderungen an unsrer Partitionstabelle mit dem Kommando
' w '. ACHTUNG! dadurch
werden diese Änderungen erst jetzt auf die Platte xvdb geschrieben.
Filesystem resizen:
Nun führen wir ein "
e2fsck -f /dev/xvdb1" aus und da es -hoffentlich- keine Fehler ausspuckt und das Dateisystem als sauber anerkennt, können wir nun endlich das Dateisystem resizen. Das tun wir dann mit "
resize2fs /dev/xvdb1" und warten 'ne Weile bis er fertig wird (kann mehrere Minuten dauern, je nach System).
Swap-Partition anpassen
Zu allerletz kümmern wir uns noch um die Swap-Partition und zwar formatieren wir unsere neue /dev/xvdb5 als Swap und das machen wir mit dem Befehl "
mkswap /dev/xvdb5". Man muss anschließend noch die uuid anpassen in unsrer
/etc/fstab. Die kriegen wir entweder durch "
ls -l /dev/disk/by-uuid" heraus, oder mit "
blkid -o list" was ich immer gerne einsetze. Die kopierte UUID unsrer /dev/xvdb5 setzen wir dann entsprechend in der /etc/fstab in der bereits vorhandenen Zeile für unsre Swap-Partition ein. Die sieht ungefähr so aus:
UUID=6f8c1c9b-b224-49b7-b769-7612919d06f7 none swap sw 0 0
Näheres zum Einstellen des Swaps kann auch gerne
HIERnachgelesen werden.
So, das war's. Wieder was dazugelernt *freu*. Vielleicht kann es ja mal früher oder später für den einen oder anderen unter euch ebenfalls hilfreich sein. Viel Erfolg und immer "BACKUPS" machen, bevor man mit solchen Operationen anfängt, gell?
Grüße,
Pangu.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.