qemu convert, qemu virtualbox, vmdk, bochs, Images anderer Virtualisierer und Emulatoren, Physical-to-Virtual, V2V-Migration
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Speichermedien/ Festplatten-Images anderer Virtualisierungssoftware]])
qemu-kvm & libvirt
4. Auflage 2010
ISBN: 978-3-8370-0876-0
276 Seiten, 27,27 EUR
Bestellen
Inhaltsverzeichnis |
[bearbeiten] Images anderer Virtualisierer und Emulatoren
QEMU und KVM können virtuelle Maschinen von Images vieler anderer Virtualisierer und Emulatoren verwenden. Beim Booten von fremden Images ist zu beachten, dass andere Virtualisierungslösungen andere Hardware emulieren. Man muss unter Umständen entsprechende Treiber im Gast-System installieren. Die Umwandlung von virtuellen Maschinen wird auch als V2V-Migration bezeichnet.
[bearbeiten] QEMU und KVM
Da bei der Kernel-based Virtual Machine ein QEMU die Hardware emuliert, sind die Images untereinander kompatibel. Mit QEMU lassen sich virtuelle Maschinen für die Kernel-based Virtual Machine anlegen. Dies ist damit auch auf Hardware möglich auf der die Kernel-based Virtual Machine nicht lauffähig ist. Es können mit der Kernel-based Virtual Machine aber nur Gast-Systeme mit x86-Architektur gestartet werden. Weiterhin ist auf die Version des von der Kernel-based Virtual Machine verwendeten QEMU zu achten, da bei unterschiedlichen QEMU-Versionen die emulierten Hardware-Komponenten abweichen können.
Host ~$ qemu -hda Platte.img Host ~$ kvm -hda Platte.img
[bearbeiten] VirtualBox
Download: http://www.virtualbox.de/wiki/Downloads
VirtualBox der Firma Oracle arbeitet nach dem Prinzip der Native Virtualization. VirtualBox verwendet Source-Code von QEMU. Das Konvertieren von Images ist über das raw-Format möglich. Dazu kann ein Tool von VirtualBox benutzt werden. Hier ein Beispiel unter Linux für ein Konvertieren eines QEMU-/KVM-Images in das VirtualBox-Format.
Host ~$ qemu-img convert -O raw Platte.img Platte-raw.img
Host ~$ VBoxManage internalcommands converttoraw \
Platte-hd.vdi Platte-raw.img
Ab Version 2.1 unterstützt VirtualBox die Disk-Image-Formate VMDK (VMware) und VHD (Microsoft) inklusive Snapshots. Ab QEMU 0.12 kann mit dem Tool qemu-img das Format vdi konvertiert werden.
Host ~$ qemu-img convert -O qcow2 Platte.vdi Platte.img Host ~$ qemu-img convert -O vdi Platte.img Platte.vdi
QEMU kann die Virtual Disk Images (VDI) von VirtualBox direkt verwenden.
Host ~$ qemu Platte.vdi
[bearbeiten] VMware Player
Download: http://www.vmware.com/download/player/
Das Tool qemu-img unterstützt das Format vmdk von VMware.
Host ~$ qemu-img convert -O qcow2 Platte.vmdk Platte.img Host ~$ qemu-img convert -O vmdk Platte.img Platte.vmdk
QEMU kann die Images von VMware direkt verwenden.
Host ~$ qemu Platte.vmdk
Der kostenlose VMware Player bietet ab Version 3 die Möglichkeit virtuelle Maschinen zu generieren. Alternativ lassen sich virtuelle Maschinen mit QEMU anlegen. Als erstes ist für die virtuelle Maschine ein Verzeichnis zu erzeugen und in dieses Verzeichnis zu wechseln. In der virtuellen Maschine soll ReactOS laufen.
Host ~$ mkdir ReactOS-VMPlayer Host ~$ cd ReactOS-VMPlayer
Mit qemu-img wird ein vorhandenes QEMU-/KVM-Image von ReactOS konvertiert.
Host ~$ qemu-img convert -O vmdk ReactOS.img ReactOS.vmdk
Die virtuelle Maschine für den VMware-Player benötigt neben der virtuellen Festplatte eine Konfigurationsdatei (.vmx). Es gibt im Internet kostenlose Tools, die dabei helfen diese Datei zu generieren:
Als Beispiel soll hier EasyVMX dienen. Man gibt die notwendigen Angaben zur Konfiguration der virtuellen Maschine in das Webformular ein und erhält als Ausgabe den Inhalt der Konfigurationsdatei. Zuerst legt man den Namen der virtuellen Maschine fest und wählt die Art des Gast-Systems aus. Danach definiert man die Größe des Arbeitsspeichers und die Anzahl der virtuellen CPUs. Im Abschnitt Description werden Kommentare zur virtuelle Maschine eingegeben. Unter Network Configuration ist die virtuelle Netzwerkkarte Ethernet0 bereits aktiviert. Bei der Auswahl von NAT wird ein separates Subnet gebildet, das über Network Address Translation mit dem Netzwerk des Hosts kommuniziert. Das Device vlance wird von den meisten Betriebssystemen unterstützt. Hinter diesem Device verbirgt sich eine Netzwerkkarte auf Basis des AMD PCNET32 Ethernet Controllers. Im Abschnitt Disk Configuration definiert man die virtuellen Disketten, CD/DVD-Laufwerke und Festplatten. Die Diskette ist in diesem Beispiel zu deaktivieren und AutoDetect zu konfigurieren. Das erste CD-Laufwerk ist zu aktivieren und AutoDecect zu konfigurieren. Die Größe der Image-Datei ist für dieses Beispiel auf 500 MByte zu setzen. Alle Optionen unter Sound and I/O-Ports Configuration werden in diesem Beispiel deaktiviert.
| Virtual Machine Name: | ReactOS |
| Select GuestOS: | Windows XP Home Edition |
| Memory Size: | 128 MB |
| # of CPUs: | 1 CPU |
| Virtual Machine Description: | ReactOS |
| Virtual Machine Long Name: | ReactOS |
| Virtual Machine URL: | http://www.reactos.org |
| Device | Enabled | Connection Type | VirtualDevice |
| Ethernet0: | x | NAT | vlance |
| Device | Enabled | Floppy Device |
| Floppy Disk Drive: | Auto Detect |
| Device | Enabled File Name | Device Type |
| CDROM #1 | x | Auto Detect |
| Device | Enabled | Disk Size | SCSI? | Device Type | Disk Mode |
| Disk #1: | x | 500MB | Disk Image (.vmdk) | Persistent |
Anschließend klick man auf das Button Create Virtual Machine. Die Ausgabe kopiert man in einen Texteditor und speichert diese Konfiguration als vmx-Datei in dem angelegten Verzeichnis ab. In diesem Beispiel soll diese Datei ReactOS.vmx heißen. Es wird der VMware-Player mit dieser vmx-Datei gestartet.
[bearbeiten] VMware Workstation
Website: http://www.vmware.com/de/products/ws
VMware Workstation ist ein kostenpflichtiges Produkt und arbeitet nach dem Prinzip der Native Virtualization. QEMU und KVM können virtuelle Maschinen mit den Image-Dateien von VMware-Workstation bis Version 4 direkt starten.
Host ~$ qemu vmware-hd.vmdk Host ~$ kvm vmware-hd.vmdk
VMware kennt grundsätzlich zwei Formate für virtuelle Festplatten: flat und sparse. Ein Image vom Typ flat ist eine Datei, die die gesamte Größe der Festplatte umfasst. Eine 10-GByte-Festplatte wird dabei durch eine ebenfalls 10 GByte große Datei repräsentiert. Ist das Image dagegen vom Typ sparse, wird nur der tatsächlich belegte Speicherplatz der Festplatte in der Datei abgebildet. Große virtuelle Festplatten werden unter VMware-Produkten oft auf mehrere Image-Dateien (.vmdk) mit einer jeweiligen maximalen Größe von zwei GByte aufgeteilt. Dazu wird noch eine weitere Datei (.vmdk) angelegt, die allerdings Meta-Daten enthält. Am besten lässt sich die Struktur einer virtuellen Festplatte für VMware am Beispiel einer virtuellen Maschine mit einer 8-GByte-Festplatte nachvollziehen.
Fall 1: Die gesamte Festplatte ist in einer Image-Datei untergebracht, zum Beispiel win.vmdk. Sie enthält alle nötigen Daten und lässt sich einfach für andere Virtualisierungslösungen konvertieren. Wurde allerdings in VMware ein Snapshot angefertigt, enthält diese Datei lediglich den Zustand des Dateisystems bis zum Zeitpunkt des Snapshots. Alle darauf vorgenommenen Änderungen werden in einer weiteren Datei (win-000001.vmdk) gespeichert. Eventuell vorhandene weitere Snapshots werden hochgezählt (win-000002.vmdk, win-000003.vmdk ...). Vor der Konvertierung müssen die Daten der Basisdatei und der Snapshots wieder zusammengefügt werden.
Fall 2: Die Imagedatei ist in Slices aufgeteilt. In diesem Beispiel sind neben der Datei win.vmdk zusätzlich die Dateien win-s001.vmdk bis win-s005.vmdk vorhanden. win.vmdk enthält Meta-Daten zum Aufbau der virtuellen Festplatte:
# Disk DescriptorFile version=1 CID=793c1936 parentCID=ffffffff createType="twoGbMaxExtentSparse" # Extent description RW 4192256 SPARSE "win-s001.vmdk" RW 4192256 SPARSE "win-s002.vmdk" RW 4192256 SPARSE "win-s003.vmdk" RW 4192256 SPARSE "win-s004.vmdk" RW 8192 SPARSE "win-s005.vmdk" #The Disk Data Base #DDB ddb.virtualHWVersion = "4" ddb.geometry.cylinders = "1024" ddb.geometry.heads = "255" ddb.geometry.sectors = "63" ddb.adapterType = "buslogic"
Auch in diesem Fall sind Snapshots möglich. Dann liegen zusätzlich die Dateien win-000001.vmdk und win-000001-s001.vmdk bis win-000001-s005.vmdk vor. Auch hier sind in win-000001.vmdk nur die Meta-Daten enthalten. Um daraus nutzbare Images für QEMU oder KVM zu erzeugen, dient das Tool vmware-vdiskmanager aus dem Lieferumfang des frei verfügbaren VMware-Servers (http://www.vmware.com/products/server/). Es wird sowohl unter Microsoft Windows als auch unter Linux auf der Befehlszeile aufgerufen.
Host ~# vmware-vdiskmanager -r win-000001.vmdk -t 0 win-export.vmdk
Dieser Befehl konvertiert die Datei win-000001.vmdk in die Exportdatei win-export.vmdk. In diesem Fall wird eine komplette Datei, ausgehend vom ersten Snapshot, vom Typ sparse (-t 0) erzeugt. Diese Exportdatei kann von QEMU oder KVM verwendet werden. Zur Umwandlung der VMware-Konfigurationsdateien (.vmx) in die Konfigurationsdateien von libvirt dient das Tool vmware2libvirt (siehe Abschnitt 'libvirt).
[bearbeiten] Parallels Desktop/Workstation
Website: http://www.parallels.com
Parallels Desktop ist eine kommerzielle Virtualisierungssoftware, die unter Mac OS X verfügbar ist. Unter Microsoft Windows und Linux wird die Software als Parallels Workstation angeboten. Parallels nutzt ein proprietäres, nicht offen gelegtes Format für seine virtuellen Festplatten. Bei diesem Standard-Format wächst das Image mit zunehmendem Inhalt des Dateisystems bis zum festgelegten Maximalwert. Es wird aber auch ein raw-Format unterstützt. Um Images von Parallels unter QEMU oder KVM zu nutzen, müssen diese im raw-Format vorliegen. Die Images besitzen immer die Dateiendung .hdd. Es lässt sich der Typ unter Unix/Linux mit dem Befehl file ermitteln.
Host ~$ file *.hdd w2k3.hdd: data w2k3_plain.hdd: x86 boot sector
In der raw-Datei, in diesem Beispiel die Datei w2k3_plain.hdd, erkennt das Tool file einen Bootsektor. Diese raw-Datei kann mit qemu-img umgewandelt werden. Die Datei w2k3.hdd enthält nichts erkennbares und wird daher als data qualifiziert. Diese Datei muss erst in eine raw-Datei konvertiert werden. Dazu verwendet man die Parallels Image Tools.
Host ~$ qemu-img convert -O qcow2 w2k3_plain.hdd w2k3.qcow2
Der Rückweg von QEMU/KVM nach Parallels funktioniert ebenfalls. Dazu muss das Image in eine raw-Datei umgewandelt werden. Diese wird entweder direkt von Parallels eingebunden oder vorher mit den Parallels Image Tools in ein Dateiformat mit variabler Größe gewandelt.
Host ~$ qemu-img convert -O raw w2k3.qcow2 w2k3_plain.hdd
[bearbeiten] Microsoft Virtual PC 2007
Download: http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx
Microsoft Virtual PC wird als Virtualisierungssoftware für Microsoft Windows und als x86-Emulator für Mac OS X angeboten. Mit Virtual PC wird ein kompletter PC virtualisiert beziehungsweise emuliert. QEMU und KVM können Image-Dateien von Virtual PC 2007 direkt starten.
Host ~$ qemu VirtualPC-Festplatte.vhdk
[bearbeiten] Xen
Website: http://www.cl.cam.ac.uk/research/srg/netos/xen/
Xen ist ein Typ-1-Hypervisor, der direkt auf der x86-Hardware läuft. Xen verwendet Source-Code von QEMU. Xen-Images im raw-Format können in einer virtuellen Maschine unter QEMU oder KVM eingebunden werden. Zu beachten ist dabei, dass diese Images jeweils nur eine Partition enthalten. Im folgenden Beispiel wird ein Image eines Xen-Gast-Systems als zweite Festplatte eingebunden.
Host ~$ qemu -hda Ubuntu.img -hdb xen-gast.disk
QEMU- oder KVM-Images können für Xen nutzbar gemacht werden. Zuerst muss man dazu das Image in das raw-Format konvertieren.
Host ~$ qemu-img convert -O raw hd.img hd.raw
Da die virtuellen Festplatten von QEMU und KVM meist aus mehreren Partitionen bestehen, muss die gewünschte Partition extrahiert werden. Dazu werden mit fdisk die Partitionen ermittelt.
Gast ~# fdisk -lu hd.raw Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System hd1 * 63 32129 16033+ 83 Linux hd2 32130 305234 136552+ 82 Linux swap hd3 305235 10474379 5084572+ 83 Linux
Um eine Partition zu extrahieren, muss man die Blockanzahl berechnen, die Formel dafür lautet: Ende – Start + 1. In diesem Beispiel soll die dritte Partition gelesen werden. Es ergibt sich eine Blockanzahl von 10474379 - 305235 + 1 = 10169145. Mit diesen Werten und dem Befehl dd wird die dritte Partition extrahiert. Der berechnete Wert ergibt den Parameter count und der Startwert ergibt den Parameter skip.
Host ~# dd if=hd.raw of=xen.img bs=512 skip=305235 count=10169145
Mit xenner (http://kraxel.fedorapeople.org/xenner/) ist es möglich Xen-Gast-Systeme unter der Kernel-based Virtual Machine zu betreiben.
[bearbeiten] Bochs
Website: http://bochs.sourceforge.net
Bochs ist ein x86-Emulator (Open Source), der auf vielen Betriebssystemen, auch unter anderen Prozessoren, läuft. Das QEMU-Projekt nutzt Teile des Source-Codes des Bochs-Projekts, so zum Beispiel das PC-BIOS. Ein Image für Bochs wird mit dem Programm bximage angelegt. Es erzeugt Image-Dateien in den Formaten flat, sparse oder growing. QEMU und KVM können diese Formate direkt lesen und einbinden. Hier ein Beispiel.
Host ~$ bximage Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] [Return] What kind of image should I create? Please type flat, sparse or growing. [flat] sparse Enter the hard disk size in megabytes [10] [Return] What should I name the image? [c.img] [Return]
Das Programm qemu-img erkennt dieses Format.
Host ~$ qemu-img info c.img image: c.img file format: raw virtual size: 32K (32768 bytes) disk size: 32K
Auf der Website von Bochs werden unter dem Punkt Disk Images Images mit bereits installierten Betriebssystemen angeboten. Diese können in QEMU und KVM verwendet werden.
[bearbeiten] FAUmachine
Website: http://www3.informatik.uni-erlangen.de/Research/FAUmachine/
FAUmachine ist sowohl ein Hardware-Emulator als auch eine Virtualisierungslösung. FAUmachine ist Open Source und läuft als normaler Benutzerprozess unter Linux (x86). Portierungen auf OpenBSD und Windows werden derzeit entwickelt. FAUmachine verwendet Teile des Quellcodes von QEMU. Die Vorteile der FAUmachine sind:
- Es lassen sich Hardware-Fehler emulieren.
- Für automatisierte Experimente, Tests und Installationen dient ein Experiment-Controller.
Mit dem Start-Skript faum lässt sich nur eine virtuelle Maschine verwalten. Die Konfiguration der virtuellen Maschine wird in der Datei ~/.faumrc gespeichert. FAUmachine kann nur Images im raw-Format lesen.
Host ~$ source ~/.faumrc Host ~$ qemu-img info $IMAGE_PATH/node.def/ide_gen_disk-11.media image: /VMS/faumachine/node.def/ide_gen_disk-11.media file format: raw virtual size: 2.0G (2147483648 bytes) disk size: 2.0G
Dieses Image im kann von QEMU oder KVM direkt verwendet werden.
Host ~$ qemu $IMAGE_PATH/node.def/ide_gen_disk-11.media
Es ist auch möglich mit qemu-img Images für die FAUmachine anzulegen oder zu konvertieren.
Host ~$ qemu-img convert -O raw Platte.img \
$IMAGE_PATH/node.def/ide_gen_disk-11.media
[bearbeiten] GXemul
Website: http://gxemul.sourceforge.net
GXemul emuliert folgende Computer-Architekturen: ARM, MIPS, PowerPC und SuperH. GXemul ist Open Source und lässt sich auf den meisten unix-artigen Betriebssystemen installieren. GXemul verwendet nur Images im raw-Format. Andere Image-Formate müssen für GXemul mit qemu-img konvertiert werden. Mit KVM kann von GXemul-Images kein Boot-Vorgang eingeleitet werden, da KVM nur die x86-Architektur unterstützt. QEMU kann Images von GXemul zwar einbinden, das Booten wird aber durch die Unterschiede bei der emulierten Hardware meist scheitern. GXemul besitzt einen speziellen QEMU-MIPS-Mode, mit dem sich virtuelle Maschinen der unter QEMU emulierten MIPS-Architektur betreiben lassen. Mit folgenden Optionen bootet GXemul das im Abschnitt Gast-Systeme, MIPS-Prozessorarchitektur beschriebene Debian.
Host ~$ gxemul -E qemu_mips -M 128 -d DebianEtch_on_MIPS.img \ -o 'console=ttyS0 rd_start=0x80800000 rd_size=10000000 init=/bin/sh' \ 0x80800000:initrd.gz vmlinux-2.6.18-4-qemu
[bearbeiten] Links
- Grundlagen Virtualisierung und Emulation
- Virtuelle Maschinen von VMware konvertieren
- VMware Player
- Sun xVM VirtualBox
- Microsoft Virtual PC
- Xen
- Bochs
- GXemul
- Hardware-Emulator
- MIPS-Architektur
- Debian (MIPS)
- Disk2vhd
- QEMU in Xen
- http://www.getxen.org/files/summit_3/v2e-realmode-support-v2.pdf
- http://www.virtuatopia.com/index.php/Using_QEMU_Disk_Images_for_Xen_DomainU_Systems