Dies ist eine alte Version des Dokuments!
LVM
Abstraktionsschicht, um Partitionen flexibel über mehrere physische Devices zu bilden. Fasst eine oder mehrere Disks zu einem Logical Volume zusammen. Mehrere Physical Volumes (Platten) bilden eine Volume Group. In der Volume Group werden Logical Volumes gebildet. In den LV werden die Dateisysteme angelegt.
Dateisystem ^^ Logical Volume (LV) ^^ Volume Group (VG) ^^ Physical Volume (PV, HDD1 -- HDD2)
pvdisplay zeigt alle LVM Volumes und die darin zusammengefassten physischen Devices
root@tarapiroe /mnt # pvdisplay --- Physical volume --- PV Name /dev/md3 VG Name data1 PV Size <2,66 TiB / not usable 2,31 MiB Allocatable yes PE Size 4,00 MiB Total PE 696964 Free PE 364164 Allocated PE 332800 PV UUID JGWU94-FLRS-zV60-ZAzg-gRvE-ifmR-qLIdMs --- Physical volume --- PV Name /dev/nbd0p5 VG Name ffes-vg PV Size 19,52 GiB / not usable 2,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 4997 Free PE 0 Allocated PE 4997 PV UUID jqhYf1-VhUf-ApgM-vPtW-alD3-EFkZ-etDGgz
vgdisplay zeigt die Volume Groups
root@tarapiroe /mnt # pvdisplay --- Physical volume --- PV Name /dev/md3 VG Name data1 PV Size <2,66 TiB / not usable 2,31 MiB Allocatable yes PE Size 4,00 MiB Total PE 696964 Free PE 364164 Allocated PE 332800 PV UUID JGWU94-FLRS-zV60-ZAzg-gRvE-ifmR-qLIdMs --- Physical volume --- PV Name /dev/nbd0p5 VG Name ffes-vg PV Size 19,52 GiB / not usable 2,00 MiB Allocatable yes (but full) PE Size 4,00 MiB Total PE 4997 Free PE 0 Allocated PE 4997 PV UUID jqhYf1-VhUf-ApgM-vPtW-alD3-EFkZ-etDGgz
lvddisplay zeigt die logical volumes
root@tarapiroe /mnt # lvdisplay --- Logical volume --- LV Path /dev/data1/VMs LV Name VMs VG Name data1 LV UUID ccDAJ2-sN1H-lRYL-fQFf-q11k-FtSB-7nSSQO LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 300,00 GiB Current LE 76800 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/data1/Backup LV Name Backup VG Name data1 LV UUID 2aABCv-Dwp0-W9Wu-0SpK-Xrwy-fHVF-pDEpge LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 1000,00 GiB Current LE 256000 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 --- Logical volume --- LV Path /dev/ffes-vg/root LV Name root VG Name ffes-vg LV UUID A9CTeG-Da3f-CtnJ-Hgkd-Yp6r-NpJ0-yaiwlT LV Write Access read/write LV Creation host, time ffes, 2017-11-22 10:33:21 +0100 LV Status available # open 0 LV Size <17,52 GiB Current LE 4485 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/ffes-vg/swap_1 LV Name swap_1 VG Name ffes-vg LV UUID tTYpH9-jJsi-0HsE-twF2-3UtO-NZQB-UWepLj LV Write Access read/write LV Creation host, time ffes, 2017-11-22 10:33:21 +0100 LV Status available # open 0 LV Size 2,00 GiB Current LE 512 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
xxx
xxx
Konvertierung von Virtualbox nach KVM
xxx
===========================
Virtualbox
Alle Kommandozeilen Befehle als User "vbox" (mit sudo) durchführen, nicht als root. Grund: Beim Starten einer vm als Root werden VM-Daten mit root Rechten angelegt, die anschliessend für den vbox User nicht mehr editierbar sind. Das führt zu Fehlermeldungen und nicht startbaren VMs, u.a. in der phpvirtualbox Oberfläche.
Laufende VMs und Platten auflisten
vboxmanage list vms voxmanage list runningvms
Details einer bestimmten VM zeigen:
vboxmanage showvminfo www.netzwissen.de
Festplatten auflisten (über alle VMs)
VBoxManage list hdd
s
Details einer bestimmten HDD auflisten:
vbox@tarapiroe:/mnt/vbox/VirtualBox VMs/miteinander-esslingen.de$
VBoxManage showmediuminfo disk fluechtlinge-esslingen.de2b.vdi UUID: 252b4e07-1eb4-4f41-b256-7655b2b37788 Parent UUID: base State: created Type: normal (base) Location: /mnt/vbox/VirtualBox VMs/miteinander-esslingen.de/fluechtlinge-esslingen.de2b.vdi Storage format: VDI Format variant: dynamic default Capacity: 20480 MBytes Size on disk: 13590 MBytes Encryption: disabled In use by VMs: miteinander-esslingen.de (UUID: a884b3e1-ee26-4122-9738-de3c8ee7008a)
Festplatten Registrierung aufheben
VBoxManage closemedium [disk|dvd|floppy] [uuid@filename]
Mit –delete wird die Datei gelöscht
VMs starten und beenden
'
'
Runterfahren zum Backup (entspricht einem Freeze, kein "echtes" Runterfahren). Keine Änderungen an der VM Konfiguration möglich.
vboxmanage controlvm [vm name] savestate
Pausieren
VBoxManage controlvm <vm> pause
Weitermachen
VBoxManage controlvm <vm> resume
Harter Reset
VBoxManage controlvm <vm> reset
==== Normaler Shutdown (echtes Runterfahren ohne savestate)
==== VBoxManage controlvm <vm> acpipowerbutton ====
Harter Shutdown (Strom weg): ====
VBoxManage controlvm <vm> poweroff
Starten (ohne GUI)
vboxmanage startvm [vm name] –type headless
VM Autostart
v
boxmanage modifyvm TestVM –autostart-enabled on
*.vdi mounten siehe auch https://www.schnatterente.net/software/virtualbox-vdi-image-in-linux-mounten
Wir brauchen ein VirtualBox Disk Image (VDI), fdisk, QEMU und einen Linux-Kernel, der Network Block Devices (NBD) sowie Virtualisierung (Kernel-based Virtual Machine = KVM) unterstützt. Ggf. QEMU nachinstallieren mit apt install qemu-system-x86 Modul in den Kernel landen laden modprobe nbd Danach das vdi Image reinladen qemu-nbd -c /dev/nbd0 /mnt/vbox/VirtualBox VMs/www.netzwissen.de/www.netzwissen.de.vdi Mit fdisk sieht man die Partitionstabelle # fdisk -l /dev/nbd0 Wir sehen, dass fdisk alle vorhandenen Partitionen auflistet und ihnen auch ein Gerät zuordnet. Das Verwirrende ist nun, dass es die Geräte-Dateien /dev/nbd0pX nicht gibt. Wir haben nur Zugriff auf /dev/nbd0. Um dennoch eine Partition einhängen zu können, behelfen wir uns daher mit einem Trick. Wir geben beim Mounten den Beginn der jeweiligen Partition als Offset an und benutzen als Gerät einfach die Festplatte /dev/nbd0 (und eben nicht die spezifische Partition). mount -o offset=1048576 /dev/nbd0 /mnt/vdi/ Damit ist die erste Partition der Festplatte in /mnt/vdi/ eingehängt. Nun fragt ihr euch sicher, woher die Zahl 1048576 kommt. Dabei handelt es sich um das Produkt der Blockgröße (512 Byte) und des Anfangs der zu mountenden Partition auf der Festplatte (2048). Man muss also den Offset richtig setzen: fdisk -l /dev/nbd0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x000e0051 Device Boot Start End Sectors Size Id Type /dev/nbd0p1 * 2048 499711 497664 243M 83 Linux /dev/nbd0p2 501758 117438463 116936706 55.8G 5 Extended /dev/nbd0p5 501760 117438463 116936704 55.8G 8e Linux LVM Mount z.B. für die dritte Partition mit -o (512 x 501760) : mount -o offset=256901120 -t ext4 /dev/nbd0 /mnt/vdi1/ Nach Abschluss aller Arbeiten über das Block Device dieses wieder abmelden: root@tarapiroe /mnt # qemu-nbd -d /dev/nbd0 /dev/nbd0 disconnected root@tarapiroe /mnt # qemu-nbd -d /dev/nbd1 /dev/nbd1 disconnected ====== Mounten einer LVM Partition ====== Mit pvs die Volume Groups anzeigen: root@tarapiroe /home/thommie # pvs PV VG Fmt Attr PSize PFree /dev/loop1 www2 lvm2 a– 194.00g 138.24g /dev/md3 data1 lvm2 a– 2.66t 1.39t Danach mit lvdisplay den Namen des logical volumes ermitteln: root@tarapiroe /home/thommie # lvdisplay /dev/www2 — Logical volume — LV Path /dev/www2/root LV Name root VG Name www2 LV UUID EuK1p3-7Q76-URFe-v6eX-HS8M-02xc-TTNCqR LV Write Access read/write LV Creation host, time , LV Status available # open 0 LV Size 54.76 GiB Current LE 14018 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:2 — Logical volume — LV Path /dev/www2/swap_1 LV Name swap_1 VG Name www2 LV UUID NwcGd9-f1Ng-MIqE-bXTC-x0dd-K69j-nVpQ3q LV Write Access read/write LV Creation host, time , LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:3 Daraus bildet sich der Mount Befehl: root@tarapiroe /home/thommie # mount /dev/www2/root /mnt/vdi1 Danach mit umount /mnt/vdi wieder unmounten und das VDI abmelden mit # qemu-nbd -d /dev/nbd0 Umwandeln einer *.vdi Platte ins RAW Format VBoxManage clonehd –format RAW /mnt/backup/vbox/vboxsnapshot/VirtualBox VMs/miteinander-esslingen.de/fluechtlinge-esslingen.de.vdi /home/thommie/miteinander-esslingen.img Achtung: ggf. voher die Originalgrösse mit VBoxManage showhdinfo [your vdi file] prüfen. Danach mounten mount -t ext3 -o loop,rw ./ubuntu.img /mnt Virtuelle Platten verkleinern & vergrößern
Alle Operationen nur mit hart abgeschalteter VM (acpipowerbutton), savestate reicht nicht.
Achtung: resize geht nur, wenn die virtuelle vdi Datei in format variant "dynamic default" ist. Falls es eine "fixed variant" ist, erst mit clonehd umkopieren:
vboxmanage clonehd fluechtlinge-esslingen.de.vdi fluechtlinge-esslingen.deb.vdi
Verkleinern
Virtuelle Platten mit dynamischer Grösse werden mit der Zeit grösser. Aber es gibt keinen Mechanismus, um Plattenplatz, der innerhalb der der VM gelöscht wurde, wieder an den Host zurück zu geben. Unterm Strich sind die virtuellen Platten real größer als innerhalb der VM. Mit diesem Mechanismus lässt sich eine virtuelle Platte wieder verkleinern:
zerofree in der VM installieren in der VM die Partition mit read only mounten, z.B.:
mount -n -o remount,ro -t ext4 /dev/sdb1 /
Dann mit zerofree -v /dev/sdb1 unbenutzte Bereiche der Platte mit Nullen beschreiben VM wieder runterfahren und auf dem Host die reale Plattendatei (*.vdi) verkleinern
VBoxManage modifyhd –compact /path/to/virtualboximage.vdi
Für die Root Partition die VM neu starten und den Rescue Mode wählen (um die Root Partition freizugeben). Danach wie oben. Vergrößern
VM mit acpipowerbutton runterfahren, dann aktuellen Status der Platte zeigen lassen vboxmanage showhdinfo /mnt/vbox/VirtualBox VMs/www.netzwissen.de/www.netzwissen.de2.vdi
…. zeigt die Informationen zu einer virtuellen Platte vbox@tarapiroe:/home/thommie$ vboxmanage showhdinfo /mnt/vbox/VirtualBox VMs/www.netzwissen.de/www.netzwissen.de2.vdi UUID: ce28b063-c7f7-429f-9c81-6163489c913a Parent UUID: base State: created Type: normal (base) Location: /mnt/vbox/VirtualBox VMs/www.netzwissen.de/www.netzwissen.de2.vdi Storage format: VDI Format variant: dynamic default Capacity: 61440 MBytes Size on disk: 40804 MBytes Encryption: disabled In use by VMs: www.netzwissen.de (UUID: 9eb328b0-ff15-4453-b17e-fad1e10029c7)
Platte umkopieren, falls "format variant = fixed"
vbox@tarapiroe:/mnt/vbox/VirtualBox VMs/miteinander-esslingen.de$ vboxmanage clonehd fluechtlinge-esslingen.de.vdi fluechtlinge-esslingen.dec.vdi
Jetzt sollte es einen vergrößerbare variant sein:
Location: /mnt/vbox/VirtualBox VMs/miteinander-esslingen.de/fluechtlinge-esslingen.dec.vdi Storage format: VDI Format variant: dynamic default
Dann resize der *.vdi, wobei die Größe in MB angegeben wird, 15G = 15,360MB vboxmanage modifymedium /mnt/vbox/VirtualBox VMs/www.netzwissen.de/www.netzwissen.de2.vdi –resize 61440
Je nach Partitionierung müssen Partitionen zuerst verschoben werden, bevor man sie vergrößern kann. werden. Beispiel hier:
https://www.netzgewitter.com/2011/08/resizing-linux-partition/ Vergrössern einer virtuellen Root Partition
Loop Device auf dem Host anlegen modprobe nbd qemu-nbd -c /dev/nbd0 fluechtlinge-esslingen.deb.vdi parted /dev/nbd0
Doku zu parted: https://www.gnu.org/software/parted/manual/parted.html
Partitionstabelle zeigen mit p. Mit "unit cyl" sieht man, wo die Partitionen genau liegen. (parted) p Model: Unknown (unknown) Disk /dev/nbd0: 12.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 6442MB 6441MB primary ext4 boot 2 6443MB 8589MB 2145MB extended 5 6443MB 8589MB 2145MB logical linux-swap(v1) (parted) unit cyl (parted) p Model: Unknown (unknown) Disk /dev/nbd0: 1566cyl Sector size (logical/physical): 512B/512B BIOS cylinder,head,sector geometry: 1566,255,63. Each cylinder is 8225kB. Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 0cyl 783cyl 783cyl primary ext4 boot 2 783cyl 1044cyl 260cyl extended 5 783cyl 1044cyl 260cyl logical linux-swap(v1)
Mir rm 2 löscht man die extended Partition, dann ist auch as logical volume für den swap space weg. Dann legt man den Swap am Ende der Platte neu an.
Syntax mkpart part-type [fs-type] start end, also legt mkpart extended -61 -1 ''mkpart logical linux-swap -61 -1
eine Swap Partiton mit 61 x 8225kB = 492 MB an Model: Unknown (unknown) Disk /dev/nbd0: 12885MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1.05MB 6442MB 6441MB primary ext4 boot 2 12384MB 12877MB 493MB extended lba 5 12385MB 12877MB 492MB logical linux-swap(v1) lba
print free zeigt freien Platz an (parted) print free Model: Unknown (unknown) Disk /dev/nbd0: 12.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 32.3kB 1049kB 1016kB Free Space 1 1049kB 12.8GB 12.8GB primary ext4 boot 12.8GB 12.9GB 60.8MB Free Space
Nach Änderung der Partitionstabelle muss aus dem Host heraus das Filesystem vergrößert und der gelöschte Swapspace neu angelegt werden: resize2fs /dev/nbd0p1
Für Swap root@tarapiroe /mnt/vbox/VirtualBox VMs/miteinander-esslingen.de # mkswap /dev/nbd1p5 Setting up swapspace version 1, size = 469 MiB (491778048 bytes) no label, UUID=f6929655-4ba7-4548-95e3-a1a32250d473 Installation Virtualbox auf Ubuntu
Virtualbox repository und key hinzufügen vi /etc/apt/sources.list: – append: – deb http://download.virtualbox.org/virtualbox/debian precise contrib —- wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - sudo apt-get update sudo apt-get install dkms sudo apt-get install virtualbox-4.1 –no-install-recommends VBoxManage -v ⇒ 4.1.22r80657 Extension Pack
Auflisten
sudo vboxmanage list extpacks
Download sudo wget http://download.virtualbox.org/virtualbox/4.1.22/Oracle_VM_VirtualBox_Extension_Pack-4.1.22-80657.vbox-extpack
Als vbox: alles VMs runterfahren. Danach als root: Alte Version rauswerfen sudo VBoxManage extpack uninstall "Oracle VM VirtualBox Extension_Pack"
Als root: neue Version installieren sudo VBoxManage extpack install [Dateiname]
Danach vms wieder starten
Bei erster Installation: sudo groupadd vboxusers sudo useradd -m vbox -G vboxusers sudo passwd vbox xxxxxxxxxxxxx echo "VBOXWEB_USER=vbox"> /etc/default/virtualbox sudo service vboxweb-service start sudo update-rc.d vboxweb-service defaults PHP Virtualbox Update sudo wget `wget -q -O - http://phpvirtualbox.googlecode.com/files/LATEST.txt` -O phpvirtualbox-latest.zip sudo unzip phpvirtualbox-*.zip sudo rm phpvirtualbox-*.zip sudo mv phpvirtualbox-* vbox sudo mv /var/www/vbox/config.php-example /var/www/vbox/config.php sudo vi /var/www/vbox/config.php – change: – var $username = 'vbox'; var $password = 'xxxxxxxxxxxxxxx'; var $location = 'http://127.0.0.1:18083/'; — chown -R www-data:www-data vbox
In /etc/init.d/vboxautostart-service bei Stop ergänzt: stop() { [ -z "$VBOXAUTOSTART_DB" ] && exit 0 [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
Damit uns die Kiste nicht ungesichert runterfaellt: VBM="/usr/bin/sudo -i -u vbox /usr/bin/vboxmanage" $VBM list runningvms | sed -r 's/"(.+)".*/1/' | while read R do echo "$R is sent to savestate!" $VBM controlvm "$R" savestate done exit 0
xxx