Festplatte ohne LVM vergrößern

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Festplatte ohne LVM vergrößern

Beitrag von pangu » 26.06.2013 17:49:55

Hi Leute,

ich hab innerhalb meiner Citrix Xenserver Umgebung, einer Test-VM 8GB Speicherplatz zugewiesen. Ich kenne die Prozedur wie man mit LVM arbeitet, aber in dem Fall will ich das andre Szenario mal durchprobieren und zwar OHN LVM. Ich möchte nun diese 8GB Festplatte erweitern auf sagen wir 25GB. Vorab: es besteht kein Grund zu Datenverlust, ist nichts Wichtiges sondern reines Trainingsszenario.

Meine Idee war folgende...

- test1 VM heruntergefahren
- die 8GB große Disk aus der test1 VM mit der Xencenter GUI von 8GB--> auf 25GB editiert. Das kann man ganz einfach editieren in Xencenter
- nun diese 25GB Platte auf eine andere VM meiner Wahl angehängt (als Beispiel an der test8 VM).

Wenn ich nun an der test8 VM "fdisk -l" eingebe sehe ich diese Platte als /dev/xvdb und die hat 3 Partitionen wie üblich xvdb1, xvdb2, und xvdb5. Ich dachte ich könne nun mit

Code: Alles auswählen

resize2fs -p /dev/xvdb
(oder eher /dev/xvdb1 ??) das Filesystem bis aufs Maximum erweitern. Das klappt jedoch nicht, weil ich die Fehlermeldung erhalte:
resize2fs: Die Operation ist nicht erlaubt beim Versuch, /dev/xvdb1 zu öffnen. Kann keinen gültigen Dateisystem-Superblock finden.
Wo ist mein Denkfehler? Müsste ich hier erstmal mit "fdisk /dev/xvdb" alle 3 Partitionen löschen und neu erstellen, und dann erst den resize2fs Befehl absetzen? Würden dadurch die Daten nicht verlorengehen? Und falls das wirklich so gehandhabt werden muss, wie leg ich die 3 Partitionen richtigerweise an? Die müssen doch bestimmte Startblöcke korrekt aufweisen, oder nicht?

Hier mal ein Auszug von fdisk /dev/xvdb, also meiner 25GB Platte, die momentan in der test8 VM eingehängt ist:

Code: Alles auswählen

Disk /dev/xvdb: 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/xvdb1   *        2048    15988735     7993344   83  Linux
/dev/xvdb2        15990782    16775167      392193    5  Extended
/dev/xvdb5        15990784    16775167      392192   82  Linux swap / Solaris
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.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Festplatte ohne LVM vergrößern

Beitrag von Cae » 26.06.2013 18:34:48

Die Superblock-Geschichte ist noch mal 'ne Sache fuer sich, aber ein Problem bei deinem Vorgehen ist, dass ein Swap-Datenblock mitten drin haengt. D.h. du musst entweder hinten nochmal 'ne Partition anhaengen und sie mit der ersten eben doch per LVM zusammen bauen, oder du machst swapoff, loeschst die Swap-Partition, vergroesserst xdb1, legtst eine neue swap-Partition an, machst mkswap, swapon und editierst die /etc/fstab. Wenn du kein LVM willst, waere der zweite Weg zu waehlen.

Dass da Platz am Ende der letzten Partition ist, erkennt man daran, dass die total sectors oben nicht in der Naehe des End-Wertes liegen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Festplatte ohne LVM vergrößern

Beitrag von pangu » 26.06.2013 22:10:07

Hmm.. bevor ich mich der Sache tiefer widme frage ich mal andersrum: hätte ich es denn irgendwie einfacher/komfortabler, wenn ich LVM nachträglich installiere? Wie verhält es sich denn, wenn ich bei der INstallation kein LVM hatte (momentan ist kein LVM vorhanden) und ich möchte im NAchhinein LVM haben um solchen Problemen in Zukunft aus dem Weg zu gehen?

Kann man da einfach LVM2 aus der Repo installieren und irgendwie alles umbiegen, damits auf LVM2 läuft? Oder ist das gar unmöglich?
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.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Festplatte ohne LVM vergrößern

Beitrag von Cae » 26.06.2013 23:07:46

/boot darf nicht im LVM liegen und man muss ein bisschen aufpassen, dass man auch wirklich lvm in der initrd hat und die fstab richtig ist. Aber im Prinzip kann man Debianlvm2 installieren, in der Partition am Ende ein PV rein machen, eine neue VG bauen mit einem (erstmal kleinerem) LV drin. Dann ein Livesystem booten, rsync anwerfen und / ohne /boot/ in's neue LV verschieben. fstab umstellen (/ auf /dev/{vgname}/{lvname} anstatt auf die UUID) und in's Hauptsystem booten. Dann kann man die vordere Partition auch mit pvcreate behandeln (vermutlich muss man eine erweiterete Partition dahin erzeugen, damit /boot/ noch da ist) und das zur VG hinzufuegen und anschliessend LV und Dateisystem vergroessern.

Klingt eigentlich wilder als es ist... aber in deinem Fall wuerde ich einfach wie oben beschrieben temporaer Swap abschalten und das bestehende /dev/xda1 auf das volle Device minus Swap vergroessern.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Festplatte ohne LVM vergrößern

Beitrag von pangu » 26.06.2013 23:34:32

alright, ich werde mir überlegen müssen welche Variante ich nun anpacke. Es geht mir hierbei grundlegend und hauptsächlich um den Lerneffekt, damit ich verstehe wie Linux arbeitet. Ich habe bisher oft Linux-Distris installiert, aber noch nie Kernel ausgetauscht, gebacken, oder die Installations-Partitionen berührt. Auch nie mit chroot gearbeitet, deswegen ist das Neuland für mich. Ich will das aber nun in diesem Zuge endlich mal machen und auch verstehen lernen.
Cae hat geschrieben:...und man muss ein bisschen aufpassen, dass man auch wirklich lvm in der initrd hat...
Was genau meinst du damit? Wenn ich auf meiner Test-VM, die ja momentan noch kein LVM beinhaltet, einfach LVM2 nachträglich installiere, muss ich dann noch was spezielles beachten damit LVM2 auch in der initrd vorhanden ist? Macht das der Installert von LVM2 nicht automatisch?

Wie penibel ist Linux da eigentlich? Könnte ich ...

- eine neue Wheezy VM namens "Frisch" installieren und während dem Installationsvorgang bereits LVM auswählen
- nachdem die Installation auf dem Host "Frisch" erfolgreich beendet ist, von "AlteVM" meinen gesamten Festplatteninhalt auf "Frisch" rüberkopieren und dabei alle vorhandenen Daten überschreiben (außer die /etc/fstab, welche ich manuell anpassen würde)

Auf "AlteVM" ist ebenfalls Wheezy aktiv, mit all meinen Setups, skeletons, bashrcs, und sonstigen Configs querbet durch alle Programme. Würde das denn funzen? Aber generell: geht das oder unmöglich?

EDIT: Bin schon am Lesen und auch hier, freue mich aber weiterhin auf eure comments.
Zuletzt geändert von pangu am 27.06.2013 00:04:38, insgesamt 3-mal geändert.
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.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Festplatte ohne LVM vergrößern

Beitrag von Cae » 26.06.2013 23:44:11

Sollte gehen, aber z.B. update-initramfs -u wird dann immer noch noetig sein und vor allem wirst du nach dem Kopieren z.B. eine falsche /etc/fstab auf dem Zielsystem haben. Gute Frage, ob's sorum einfacher ist oder ob manuelles auf's-LVM-Ziehen nicht guenstiger ist.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Festplatte ohne LVM vergrößern

Beitrag von pangu » 28.06.2013 00:17:28

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:

Code: Alles auswählen

fdisk /dev/xvda
Bild

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 xvda habe ich auf einer andren VM angehängt, dort heißt sie natürlich logischerweise xvdb (weil es die zweite Festplatte war).
Bild

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 51644414 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 51644413 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.
Zuletzt geändert von pangu am 28.06.2013 09:53:22, insgesamt 2-mal geändert.
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.

wanne
Moderator
Beiträge: 7616
Registriert: 24.05.2010 12:39:42

Re: Festplatte ohne LVM vergrößern

Beitrag von wanne » 28.06.2013 00:35:51

pangu hat geschrieben:Und last but not least, ein update-initramfs -u ausführen.
Das war unnötig. Das währe nur nötig gewesen, wenn du auf LVM umgestiegen währst.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: Festplatte ohne LVM vergrößern

Beitrag von pangu » 28.06.2013 00:42:59

Hatte das gemacht, weil es in der Ubuntuuser-Wiki zum Thema SWAP erwähnt wurde. Erstz jetzt beim zweiten Durchlesen habe ich jedoch bemerkt, dass das womöglich nur dann gilt, wenn man auch Resume/Hibernate Modus verwendet für seine Swap. Oder?

Okidoki, habs wieder entfernt aus meinem oberen Beitrag. Danke für den Hinweis.

PS: währe ohne 'h' ;)
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.

Benutzeravatar
thorben
Beiträge: 722
Registriert: 14.09.2003 23:23:49

Re: Festplatte ohne LVM vergrößern

Beitrag von thorben » 29.06.2013 10:49:17

moin,
ich habs nicht im detail gelesen, aber ich habe unter früher disken wie folgt resized (wenn ich mich recht erinnere):

- vmdk vergrößern
- rebooten oder irgend ein scsi scan befehl (weiß nicht mehr aus dem kopf)
- mit cfdisk die partition löschen (er löscht nur die partitionstabelle, nicht die daten...)
- mit cfdisk die partion wieder anlegen und in dem moment erkennt er dann, dass die platte größer ist
- mit dem jeweiligen tool des dateisystems das dateisystem vergrößer

in virtuellen umgebungen ist lvm meiner meinung nach komplett überflüssig. datenplatte einfach in eigenes vmdk legen und dann kannst im laufenden betrieb (eh wie bei windows auch) die platten vergrößern.

mit google solltest einige gute anleitungen finden.

beste grüße
thorben

Simon74
Beiträge: 69
Registriert: 06.10.2009 22:21:07

Re: Festplatte ohne LVM vergrößern

Beitrag von Simon74 » 10.10.2013 20:38:18

Meine Notiz dazu ist:

Partition einer Xenserver Linux VM vergrössern (Beispiel: Debian Squeeze)

1. VM herunterfahren
2. UUID notieren
3. Boot Order / Reihenfolge auf DVD (bzw. PXE falls vorhanden) einstellen um PartedMagic zu booten
4. Im Xencenter VM selektieren und "Storage" Grösse nach Wunsch anpassen
5. Booten von PartedMagic per DVD/PXE (PartedMagic Version 6.7)
(Falls Bootreihenfolge nicht eingestellt werden kann bzw. PXE fehlt siehe "Boot Order")
6. Partitionen mit PartedMagic anpassen/vergrössern
(Falls Bootreihenfolge angepasst wurde, wieder zurückstellen!)
7. Neustart der VM und booten von "Harddisk"
8. Anmelden an der VM, und am besten ein "touch /forcefsck" eingeben und gleich nochmals neustarten.

Boot Order BIOS einstellen: (Vor dem starten von ISO File!)
xe vm-param-set uuid=%UUID% HVM-boot-policy="BIOS order"
xe vm-param-clear uuid=%UUID% param-name=PV-bootloader

Boot Order pygrub einstellen: (Nach dem starten von ISO File!)
xe vm-param-set uuid=%UUID% PV-bootloader=pygrub
xe vm-param-clear uuid=%UUID% param-name=HVM-boot-policy

Antworten