qemu-img convert create commit info qcow2 vmdk, sparse file, sheepdog, qed
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Anhang/ qemu-img]])
Inhaltsverzeichnis |
[bearbeiten] qemu-img
qemu-img ist ein Tool zum Generieren und Konvertieren von Image-Dateien.
Host ~$ qemu-img command [options]
-h
Zeigt eine Hilfestellung an.
Für command können folgende Befehle mit den entsprechenden Optionen verwendet werden.
[bearbeiten] check
Host ~$ qemu-img check [-f fmt] filename
Überprüft eine Image-Datei (filename). Optional kann das Format mit -f angegeben werden. Derzeit werden nur die Formate qcow2, qed und vdi unterstützt.
[bearbeiten] create
Host ~$ qemu-img create [-e] [-6] [-F base_fmt] [-b base_image] \
[-f fmt] [-o options] filename [size]
Generiert ein Image mit dem Dateinamen filename und der Größe size.
filename
Name der zu generierenden Image-Datei.
size
Definiert die Größe der Image-Datei in Kilobyte. Optional können die Suffixes M (Megabyte=1024*1024), G (Gigabyte=1024*1024*1024) oder T (Terrabyte=1024*1024*1024*1024) angegeben werden. Wird die Größe der Image-Datei mit der Option -o vorgegeben, entfällt die Größenangabe mit size.
-f fmt
Definiert das Format der Image-Datei.
-e
Verschlüsselt das Image. Dies ist nur beim qcow- und qcow2-Format möglich. Die Verschlüsselung erfolgt mit AES (128 Bit Schlüssel) und ist dadurch sehr sicher. Für maximale Sicherheit ist ein Passwort mit 16 Zeichen zu verwenden.
-6
Erzwingt beim vmdk-Format den Kompatibilitäts-Level 6 für die Ziel-Imagedatei.
-b base_image
Wird mit base_image eine vorhandene Image-Datei angegeben, dann speichert das generierte Image nur die Unterschiede zu dieser vorhandenen Image-Datei. Das generierte Image nennt man Overlay-Datei. Eine Größenangabe ist für die Overlay-Datei nicht erforderlich. Das Basis-Image (base_image) wird nicht verändert, solange kein commit eingegeben wurde.
-F base_fmt
Gibt das Format der Basis-Datei an. Normalerweise ist diese Option nicht notwendig, da qemu-img das Format in der Regel erkennt.
-o options
Ermöglicht die Angabe von weiteren Optionen. Das Format ist name=value. Mehrere Optionen werden mit Kommas getrennt. Mit -o ? erhält man eine Liste der unterstützten Optionen.
Host ~$ qemu-img create -o ? Supported options: size Virtual disk size
Ab QEMU 0.13 wird folgende Syntax unterstützt:
Host ~$ qemu-img create [-f fmt] [-o options] filename [size]
Die bisherigen Optionen -e, -6, -F und -b werden als entsprechende Angaben hinter der Option -o verwendet. Diese Angaben sind abhängig vom verwendeten Image-Format.
[bearbeiten] convert
Host ~$ convert [-c] [-e] [-6] [-f fmt] [-O output_fmt] [-o options] \'''
[-B output_base_image] filename [filename2 [...]] output_filename '''
Kopiert ein Image in ein neues Image mit einem anderen Format.
filename
Name der Quell-Datei.
output_filename
Name der zu generierenden Image-Datei.
-f fmt
Gibt das Format der Quell-Datei an. In der Regel erkennt qemu-img das Format. Deshalb ist diese Angabe oft nicht notwendig.
-O output_fmt
Definiert das Ziel-Format.
-B output_base_image
Es ist möglich ein Base-Image mit dem identischen Inhalt in das Image output_base_image zu kopieren. Der Pfad, das Image-Format und anderes können in der Datei base_image gegenüber dem Original geändert werden.
-c
Ermöglicht Kompression beim qcow- und qcow2-Format. Werden nach dem Komprimieren Sektoren neu geschrieben, sind diese nicht komprimiert.
-e
Ermöglicht Verschlüsselung beim qcow- und qcow2-Format. Die Verschlüsselung erfolgt mit AES (128 Bit Schlüssel) und ist dadurch sehr sicher. Für maximale Sicherheit ist ein Passwort mit 16 Zeichen zu verwenden.
-6
Erzwingt beim vmdk-Format den Kompatibilitäts-Level 6 für die Ziel-Imagedatei.
-o options
Ermöglicht die Angabe von weiteren Optionen. Das Format ist name=value. Mehrere Optionen werden mit Kommas getrennt. Mit -o ? erhält man eine Liste der unterstützten Optionen.
Host ~$ qemu-img convert -o ? Datei.img KonvertierteDatei.img Supported options: size Virtual disk size
Ab QEMU 1.0 wird folgende Syntax unterstützt:
Host ~$ qemu-img convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] \
[-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename '''
Die bisherigen Optionen -e, -6 und -B werden als entsprechende Angaben hinter der Option -o verwendet. Die Angaben sind abhängig von den verwendeten Image-Formaten (siehe unten).
-p
Zeigt Fortschritte in Prozent an.
-t none|writethrough|writeback|directsync|unsafe
Die Option -t kann auf none, writeback (Default), writethrough oder unsafe gesetzt werden. Sie steuert die Nutzung des Cache für das angegebene Laufwerk. Mit dem Setzten des Parameters writethrough wird der Host-Cache für Lese- und Schreibzugriffe verwendet. Die Bestätigung des Schreibvorganges wird dem Gast-System erst gesendet, wenn das Storage-Subsystem den Schreibvorgang bestätigt hat. Bei der Option writeback wird bereits die Schreibbestätigung gesendet, wenn die Daten im Cache des Hosts gespeichert sind. Stürzt der Host ab, kann es zu Datenverlusten kommen. 'directsync entspricht writethrough mit dem Unterschied, dass der Host-Page-Cache vermieden wird. Schreibbestätigungen werden direkt zum Gast-System gesendet. Mit unsafe wird der Cache-Inhalt nie auf die Festplatte geschrieben. Bei Problemen mit dem Host droht dabei Datenverlust. Bei der Startoption -snapshot wird unsafe als Default eingestellt. Bei der Option none wird der Host-Cache nicht verwendet. QEMU kann intern die Daten cachen. Die Performance kann bei bestimmten Treibern in Kombination mit der Option writethrough und dem Image-Format qcow2 geringer sein. Wird mehr Wert auf Geschwindigkeit als auf Sicherheit gelegt, ist hier die Option writeback anzuwenden.
-S size
Enthält eine Image-Datei fortlaufende Blöcke, die nur Nullen enthalten, kann es in eine Sparse-Datei konvertiert werden. Hinter -S ist dazu eine Mindestgröße für die Null-Blöcke in Bytes anzugeben. Dieser Wert wird auf das nächste Vielfache von 512 Byte gerundet. Optional können die Suffixes, wie zum Beispiel k für kByte, angegeben werden.
snapshot_name
Definiert den Namen des Snapshots. Dieser kann angelegt, zugewiesen oder gelöscht werden.
[bearbeiten] commit
Host ~$ commit [-f fmt] [-t cache] filename
Speichert Änderungen in das Base-Image.
-f fmt
Gibt das Format des Images an.
-t none|writethrough|writeback|unsafe
Die Option -t kann auf none, writeback (Default), writethrough oder unsafe gesetzt werden. Sie steuert die Nutzung des Cache für das angegebene Laufwerk. Mit dem Setzten des Parameters writethrough wird der Host-Cache für Lese- und Schreibzugriffe verwendet. Die Bestätigung des Schreibvorganges wird dem Gast-System erst gesendet, wenn das Storage-Subsystem den Schreibvorgang bestätigt hat. Bei der Option writeback wird bereits die Schreibbestätigung gesendet, wenn die Daten im Cache des Hosts gespeichert sind. Stürzt der Host ab, kann es zu Datenverlusten kommen. Mit unsafe wird der Cache-Inhalt nie auf die Festplatte geschrieben. Bei Problemen mit dem Host droht dabei Datenverlust. Bei der Startoption -snapshot wird unsafe als Default eingestellt. Bei der Option none wird der Host-Cache nicht verwendet. QEMU kann intern die Daten cachen. Die Performance kann bei bestimmten Treibern in Kombination mit der Option writethrough und dem Image-Format qcow2 geringer sein. Wird mehr Wert auf Geschwindigkeit als auf Sicherheit gelegt, ist hier die Option writeback anzuwenden.
filename
Name der Image-Datei.
[bearbeiten] snapshot
Host ~$ snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
Verwaltet VM-Snapshots.
snapshot
Ist der Name des VM-Snapshots.
-a snapshot
Den Zustand des angegebenen VM-Snapshot snapshot wiederherstellen.
-c snapshot
Anlegen eines VM-Snapshots mit dem Namen snapshot.
-d snapshot
Löschen des VM-Snapshots mit den Namen snapshot.
-l
Auflisten aller VM-Snapshots eines Images.
filename
Name der Image-Datei.
[bearbeiten] info
Host ~$ info [-f fmt] filename
Zeigt Informationen (Größe, VM-Snapshots, ...) zu einem Image an.
-f fmt
Gibt das Format des Images an.
filename
Name der Image-Datei.
[bearbeiten] rebase
Host ~$ qemu-img rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
Ab QEMU 0.13 wird der Befehl rebase unterstützt. Damit wird der Overlay-Datei ein neues Basis-Image zugewiesen. Dies ist nur mit den Image-Formaten qcow2 und qed möglich. Per Default muss das aktuelle und das neue Basis-Image existieren. Das neue Basis-Images wird mit dem alten Basis-Image verglichen. Werden Unterschiede festgestellt, werden die Daten vom alten Basis-Image auf das neue Basis-Image übertragen.
-f fmt
Gibt das Format des alten Basis-Image an. In der Regel erkennt qemu-img das Format. Deshalb ist diese Angabe oft nicht notwendig.
-t none|writethrough|writeback|unsafe
Die Option -t kann auf none, writeback (Default), writethrough oder unsafe gesetzt werden. Sie steuert die Nutzung des Cache für das angegebene Laufwerk. Mit dem Setzten des Parameters writethrough wird der Host-Cache für Lese- und Schreibzugriffe verwendet. Die Bestätigung des Schreibvorganges wird dem Gast-System erst gesendet, wenn das Storage-Subsystem den Schreibvorgang bestätigt hat. Bei der Option writeback wird bereits die Schreibbestätigung gesendet, wenn die Daten im Cache des Hosts gespeichert sind. Stürzt der Host ab, kann es zu Datenverlusten kommen. Mit unsafe wird der Cache-Inhalt nie auf die Festplatte geschrieben. Bei Problemen mit dem Host droht dabei Datenverlust. Bei der Startoption -snapshot wird unsafe als Default eingestellt. Bei der Option none wird der Host-Cache nicht verwendet. QEMU kann intern die Daten cachen. Die Performance kann bei bestimmten Treibern in Kombination mit der Option writethrough und dem Image-Format qcow2 geringer sein. Wird mehr Wert auf Geschwindigkeit als auf Sicherheit gelegt, ist hier die Option writeback anzuwenden.
-p
Zeigt Fortschritte in Prozent an.
-u
Es gibt zwei Modi, den abgesicherten Modus (Safe) und den unsicheren Modus (Unsafe).
Der abgesicherte Modus ist der Standard-Modus und führt ein echtes rebase durch.
Dabei kann sich das alte vom neuen Image unterscheiden.
Dem Gast-System werden die gleichen Inhalte wie vor dem rebase zur Verfügung gestellt.
Um dies sicherzustellen werden alle unterschiedlichen Cluster des alten und neuen Image zusammengefügt.
Diese Operationen sind sehr zeitintensiv.
Der unsichere Modus wird mit -u aktiviert.
Dabei wird davon ausgegangen, dass das alte und das neue Basis-Image exakt übereinstimmen.
Die Image-Dateien werden dabei nicht überprüft.
Die alte Image-Datei braucht bei diesem Modus nicht zur Verfügung zu stehen.
Der unsichere Modus ist bei der Umbenennung oder Verschiebung des Basis-Images sinnvoll.
-b backing_file
Hiermit wird das neue Basis-Image angegeben.
-F base_fmt
Gibt das Format der Basis-Datei an. Normalerweise ist diese Option nicht notwendig, da qemu-img das Format in der Regel erkennt.
filename
Mit filename wird die Overlay-Datei angegeben, der das neue Basis-Image zugeordnet werden soll.
[bearbeiten] resize
Host ~$ qemu-img resize filename [+ | -]size
Ab QEMU 0.13 wird der Befehl resize unterstützt. Mit resize wird das Fassungsvermögen einer virtuellen Festplatte im raw-Format geändert. Bevor man ein Image verkleinert, muss in der virtuellen Maschine ein entsprechend großer Bereich am Ende der virtuellen Festplatte freigegeben werden. Ansonsten droht Datenverlust. Wird ein Image vergrößert, so ist im Gast-System dieser neue Speicherbereich zu partitionieren und zu formatieren.
filename
Mit filename wird das zu skalierende Image angegeben.
size
Definiert die neue Größe beziehungsweise die Größenänderung in Kilobyte. Optional können die Suffixes M (Megabyte=1024*1024), G (Gigabyte=1024*1024*1024) oder T (Terrabyte=1024*1024*1024*1024) angegeben werden.
[bearbeiten] Unterstützte Image-Formate und Protokolle
[bearbeiten] raw
Das raw-Format ist das Default-Format. Es ist einfach aufgebaut und lässt sich leicht konvertieren. Wird ein neues, leeres Image im raw-Format in einer bestimmten Größe, zum Beispiel 10 GByte erzeugt, belegt es bei älteren Dateisystemen genau diese Größe (hier 10 GByte). Neuere Dateisysteme unterstützen eine effektivere Verwaltung von Dateien, die unbelegte Blöcke enthalten. Solche Dateien belegen in diesen Dateisystemen etwa nur den Platz, den sie an Blöcken belegen. Eine Datei mit unbelegten Blöcken heißt Sparse-Datei. Images im Format raw können als Sparse-Dateien angelegt werden. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
[bearbeiten] qed
Mit QEMU 0.14 wurde das QEMU Enhanced Disk Format (qed) eingeführt. Es bietet weniger Funktionen als qcow2, aber ermöglicht aber wesentlich schnellere Zugriffe und sorgt für bessere Datenintegrität. Wie qcow2 unterstützt qed Overlay-Dateien und Sparse-Images. Verschlüsselung und Kompression sind nicht vorgesehen. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size
- Definiert die virtuelle Größe der Image-Datei in Byte.
backing_file=filename
- Dateiname des Basis-Image (siehe qemu-img create).
backing_fmt=fmt
- Image-Format des Basis-Image (siehe qemu-img create).
cluster_size=value
- Ändert die Voreinstellung der Cluster-Größe (512 Byte). Es sind Werte zwischen 512 und 2MByte möglich. Kleinere Werte optimieren die Dateigröße. Größere Werte bewirken eine bessere Performance.
table_size=value
- Größe der L1/L2-Tabelle in Clustern.
[bearbeiten] qcow2
Das Format qcow2 ist das vielseitigste Format und löst das alte Format qcow ab. Images im qcow2-Format sind dynamisch. Ihre Größe hängt von ihrem Füllstand ab. Beim Format qcow2 ist die Dateigröße unabhängig davon, ob das Dateisystem eine effiziente Verwaltung von Sparse-Dateien unterstützt. qcow2 unterstützt das mehrfache Abspeichern von Systemzuständen der virtuellen Maschine (VM-Snapshots). Außerdem ist Verschlüsselung (AES) und Kompression (zlib) möglich. Bei qcow2 wird der Inhalt in Clustern gespeichert. Jedes Cluster enthält eine Anzahl von 512 Byte großen Sektoren. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
backing_file=filename
- Dateiname des Basis-Image (siehe qemu-img create).
backing_fmt=fmt
- Image-Format des Basis-Image (siehe qemu-img create).
encryption=on|off
- encryption=on verschlüsselt das Image. Die Verschlüsselung erfolgt mit AES (128 Bit Schlüssel) und ist dadurch sehr sicher. Für maximale Sicherheit ist ein Passwort mit 16 Zeichen zu verwenden.
cluster_size=value
- Ändert die Voreinstellung der Cluster-Größe (512 Byte). Es sind Werte zwischen 512 und 2MByte möglich. Kleinere Werte optimieren die Dateigröße. Größere Werte bewirken eine bessere Performance.
preallocation=off|metadata
- Ein Image mit zugewiesenen Meta-Daten ist anfangs größer, besitzt aber eine bessere Performance beim Vergrößern.
[bearbeiten] qcow
qcow ist das alte QEMU-Image-Format. Images im qcow-Format sind dynamisch. Ihre Größen hängen von deren Füllstand ab. Bei qcow hängt die Dateigröße nicht davon ab, ob das Dateisystem eine effiziente Verwaltung von Sparse-Dateien erlaubt. Weiterhin unterstützt qcow Verschlüsselung und Kompression. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
backing_file=filename
- Siehe qcow2.
encryption=on|off
- Siehe qcow2.
[bearbeiten] cow
Das alte Format Copy-on-Write ist nur noch aufgrund der Kompatibilität mit älteren QEMU-Versionen vorhanden. Es funktioniert nicht unter Microsoft Windows. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
backing_file=filename
- Dateiname des Basis-Image (siehe qemu-img create).
[bearbeiten] vmdk
vmdk ist das Standardformat von VMware Workstation. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
backing_fmt=fmt
- Siehe qcow2.
compat6=on|off
- compat6=on erzwingt beim vmdk-Format den Kompatibilitäts-Level 6 für die Ziel-Imagedatei. Per Default ist dies 4.
[bearbeiten] vdi
vdi ist das Standardformat von VirtualBox. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
static=on|off
- Mit static=on wird ein statisches (pre-allocated) VDI-Image generiert. === nbd ===
Mit dem NBD-Protokoll (Network Block Device) werden Images über das Netzwerk bereitgestellt (siehe http://qemu-buch.de/d/Speichermedien/_Network_Block_Devices).
[bearbeiten] parallels
parallels ist das Standardformat der Virtualisierungslösungen der Firma Parallels, Inc.
[bearbeiten] vpc
vpc ist das Standardformat für Images von Microsoft Virtual PC. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
[bearbeiten] bochs
bochs ist das Format des freien x86- und AMD64-Emulators Bochs.
[bearbeiten] cloop
Das Format Compressed Loop wird für komprimierte CD-ROM-Images verwendet, beispielsweise für Knoppix-CD/DVD-ROMs.
[bearbeiten] dmg
dmg ist ein Speicherabbild-Datenformat unter Mac OS X und dient meist zur Verteilung von Software über das Internet. Diese Images können unkomprimiert oder komprimiert sein. Unkomprimierte dmg-Dateien können direkt von qemu-img gelesen werden. Komprimierte dmg-Dateien können mit dem Tool dmg2img entpackt werden.
[bearbeiten] file
Entspricht dem raw-Format. Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
[bearbeiten] vvfat
Mit vvfat sind virtuelle FAT-Festplatten gemeint.
[bearbeiten] host_device
Bei Block- oder anderen Devices, die keine effektive Verwaltung von unbelegten Blöcken in Dateien unterstützen, ist das Format host_device anzuwenden.
[bearbeiten] host_cdrom
Für CD/DVDs im Host-System, ist das Format host_cdrom anzuwenden.
[bearbeiten] host_floppy
Für Disketten im Host-System, ist das Format host_floppy anzuwenden.
[bearbeiten] tftp, ftps, ftp, https, http
Diese Formate werden bei Images angewendet, die über ein Internet-Protokoll bereit gestellt werden.
[bearbeiten] sheepdog
Sheepdog (http://qemu-buch.de/d/Speichermedien/_Sheepdog) ist ein Distributed Storage System für QEMU. Es bietet hochverfügbare Storage-Volumen auf Blockebene für virtuelle Maschinen unter QEMU. Das heißt, der Speicherplatz für die virtuellen Festplatten wird auf mehrere Sheepdog-Server (Nodes) gespiegelt. Sheepdog skaliert bis zu hunderten Nodes und unterstützt erweiterte Volumen-Management-Funktionen wie Snapshots, Cloning und Thin Provisioning. Die allgemeine Syntax für das Anlegen von Images ist folgende:
Host ~$ qemu-img create sheepdog:hostname:port:image size
Hier die Syntax für das Starten eines Gast-Systems von einem Sheepdog-Image:
Host ~$ qemu sheepdog:hostname:port:image
Es werden folgende Optionen von qemu-img (-o) unterstützt:
size=value
- Definiert die Größe der Image-Datei in Kilobyte.
backing_file=filename
- Dateiname des Basis-Image (siehe qemu-img create).
[bearbeiten] blkdebug
blkdebug ist ein Block-Treiber und ein Protokoll für I/O-Fehler-Injektionen.
[bearbeiten] blkverify
blkverify ist ein Protokoll zum Testen von Block-Treibern. Das Problem beim Debuggen ist, das durch Lesefehler des Block-Treibers dieser selbst beeinträchtig wird. blkverify löst dieses Problem in dem die Lesefehler innerhalb von QEMU abgefangen und die entsprechenden Sektoren als korrupt gemeldet werden. Das Protokoll blkverify besitzt dazu zwei Child-Block-Devices. Zum einen ist es das Test-Device und zum anderen das Raw-Device. Lese- und Schreibvorgänge werden parallel auf beiden Devices ausgeführt und die Ergebnisse verglichen. Das Raw-Image verarbeitet die Lese- und Schreibvorgänge korrekt und dient als Referenz für das Test-Image. Nach jedem Lese- und Schreibvorgang vergleicht blkverify die Daten und meldet Abweichungen als korrupte Daten.