
QEMU bietet verschiedene Möglichkeiten, ein Blockgerät mit einer virtuellen Maschine zu verbinden. Dies wurde zunächst folgendermaßen umgesetzt:
-hda /dev/sda1
So wurden virtuelle Festplatten in den alten Tagen der Virtualisierung verbunden. Es kann heute verwendet werden, wenn wir nur einige liveCDs testen möchten. Leider hat es seine Nachteile. ::
- Beim Anschließen virtueller Festplatten kann nur die Schnittstelle verwendet werden, die als
/dev/hda
(hda, hdb, hdc, ..) auf der virtuellen Maschine betrachtet wird. Für CD wird die Option -cdrom
- Wenn eine Datei (oder ein Gerät) mit einer virtuellen Maschine verbunden ist, verwendet QEMU nur die Standardeinstellungen.
fahren
Um andere Parameter (Bustyp, Cache-Nutzung usw.) -drive
wurde -drive
die Option -drive
hinzugefügt. Obwohl es ursprünglich zum Festlegen von Parametern sowohl für das Backend als auch für das Frontend verwendet wurde , werden derzeit nur die Backend- Parameter festgelegt, dh Parameter, die sich auf die Verbindung des virtuellen Geräts innerhalb der virtuellen Maschine auswirken
-drive file=/dev/sda1,if=ide,cache=writeback,aio=threads
Gerät
Das Einstellen aller Parameter eines Blockgeräts mit einer Option im Laufe der Zeit erwies sich als unvernünftig. Daher wurden die Optionen in zwei Teile geteilt. Backend- Parameter, d. H. Solche, die zum Konfigurieren der Virtualisierungsumgebung verwendet werden. Und Frontend , das sich darauf auswirkt, wie das Gerät in der virtuellen Maschine verbunden ist. Für diesen Parametersatz wurde eine neue Option -device
eingeführt, die die ID der Laufwerks- ID enthält, die durch den Parameter -drive
angegeben wird.
Das folgende Konfigurationsbeispiel verbindet das Laufwerk mit der ID ide0-hd0. Das Ergebnis entspricht dem Anschließen eines virtuellen Laufwerks, wie in der Einführung gezeigt.
-drive file=/dev/sda1,id=ide0-hd0,if=none,cache=writeback,aio=threads \ -device ide-drive,bus=ide.0,drive=ide0-hd0
Lokale Blockgeräte in einer virtuellen Maschine

Die Verwendung von physischen Blockgeräten für virtuelle Maschinen ist heutzutage angesichts der weit verbreiteten Verwendung von virtuellen Festplatten nicht weit verbreitet. Technisch gesehen können wir eine virtuelle Maschine mit einem proprietären System von einer alten Festplatte ausführen. In diesem Fall ist es jedoch besser, zuerst ein Disk-Image (Image) mit dd zu erstellen und das System bereits von dort aus zu starten.
Wie ein lokales Blockgerät kann es mit einer virtuellen Maschine verbunden werden.
- Lokales RAID-Array - Gerät vom Typ MD
- Master-DRBD (Netzwerk-RAID1) - Gerät vom Typ drbd
- In LVM-Gruppe erstellte Festplattenpartition - Gerät vom Typ dm
- Eine reguläre Datei, die über eine Schleife verbunden ist, ist ein Schleifengerät
Blockieren Sie das Gerät von einem anderen Computer, der über einen NBD-Server exportiert wurde - ein Gerät vom Typ nbd
(Hier ist auch der Ceph-Gerätetyp rbd und der ZFS-Gerätetyp zvol zu erwähnen - ca. Per)
NBD
Betrachten Sie das Konzept, ein Blockgerät von einem Remotecomputer über ein Netzwerk zu verbinden. Siehe separates Handbuch für NBD .
QEMU verfügt über eine integrierte NBD-API, sodass ein mit einem NBD-Server erweitertes Remote-Block-Gerät über QEMU direkt mit der virtuellen Maschine verbunden werden kann - siehe Abbildung links.
NBD ist jedoch ein ziemlich einfaches Protokoll, das keine Authentifizierung auf einem Remote-Server verwendet und den Status der Verbindung nicht steuert. Das NBD-Protokoll geht davon aus, dass der Client erneut eine Verbindung herstellen kann, wenn die Verbindung zum Server unterbrochen wird, QEMU jedoch leider nicht.
Zum Teil kann die Situation gelöst werden, indem mehrere NBD-Geräte angeschlossen und ein virtuelles RAID-Array darin erstellt werden. Dieser Ansatz hat mehrere Vorteile und einen schwerwiegenden Fehler. Wenn eines der Geräte ausgeschaltet wird, passiert nichts Schlimmes. Aber wenn sie alle auf einmal herausfliegen = wird es schlecht sein. E / A-Vorgänge in einer virtuellen Umgebung sind viel schneller, da Anforderungen parallel zu mehreren physischen Maschinen (NBD-Servern) gleichzeitig ausgeführt werden. Andererseits werden mehr Ressourcen des virtuellen Prozessors und des virtuellen Speichers benötigt.
Der Hauptnachteil beim Erstellen eines RAID-Arrays aus NBD-Geräten in einer virtuellen Maschine ist das QEMU-Gerät. Wenn das NBD-Gerät abstürzt, wird es erst nach einem vollständigen Neustart der Maschine wieder verbunden, während ein interner Neustart des Betriebssystems in der virtuellen Maschine nicht ausreicht. Sie können jedoch eine virtuelle Maschine ohne Festplatten erstellen, die unabhängig auf den NBD-Server zugreift und die erforderlichen NBD-Geräte verbindet. Darüber hinaus müssen ausgefallene Geräte erneut zum Array hinzugefügt und neu synchronisiert werden. Dies kann entweder manuell oder mithilfe von Skripten in der virtuellen Maschine erfolgen.
Es ist besser, mit dem Gerät der virtuellen NBD-Maschine auf den NBD-Server zuzugreifen. In Bezug auf die E / A-Leistung ist es besonders gut, ein RAID-Array aus NBD-Geräten zu erstellen.
Diese Lösung erwies sich als die absolut produktivste aller getesteten. Und die virtuelle Maschine konnte den ununterbrochenen Betrieb auch im Falle einer Unterbrechung des NBD-Servers (oder eines Ausfalls) im Laufe der Zeit fortsetzen.
Somit war es möglich, eine relativ stabile und gleichzeitig produktive Virtualisierungsumgebung auf instabilen Geräten zu organisieren.
Das Hauptproblem bei RAID-Arrays auf NBD-Geräten besteht darin, dass Sie beim Anschließen eines Geräts, das Teil eines RAID-Arrays ist, vom NBD-Server sehr vorsichtig sein müssen. Dies ist ein ziemlich heikler Prozess mit einer hohen Wahrscheinlichkeit eines schwerwiegenden Fehlers, der zu Datenverlust führen kann. Ein kleiner Tippfehler reicht aus. Siehe die Beschreibung des tödlichen Autounfalls vom 21. Juli 2012 auf der Seite Erdnüsse .
Der Nachteil ist, dass ein Blockgerät, mit dem eine virtuelle Maschine bereits arbeitet, nicht an einem anderen Ort verbunden werden kann, wenn das Dateisystem dies nicht zulässt. Dies ähnelt iSCSI (Internet S computer Computer Interface - Netzwerkversion von SCSI) oder AoE ( Eine TA über Internet-Technologie).
Virtuelle Festplatten

QEMU kann nicht nur Blockgeräte mit der virtuellen Maschine verbinden, sondern mithilfe verschiedener APIs kann auch eine reguläre Datei verbunden werden, die wie ein Blockgerät innerhalb der Maschine aussieht.
Qemu kann mit virtuellen Festplatten in verschiedenen Formaten arbeiten. Für diese virtuellen Festplatten, die in Form von normalen Dateien dargestellt werden, gibt es ein Standarddienstprogramm qemu-img , das sowohl zum Konvertieren verwendet werden kann, um das verwendete Format als auch seine Parameter zu bestimmen.
Abrufen von Informationen zur virtuellen Festplatte, die als reguläre Datei gespeichert sind. Auf die gleiche Weise können Sie Informationen zu einer in GlusterFS gespeicherten virtuellen Festplatte abrufen:
root@stroj~# qemu-img info /path_to_file/soubor.img
Um jedoch mithilfe der GlusterFS-API Informationen zu einer virtuellen Festplatte zu erhalten, müssen Sie dieselben Parameter verwenden, die zum Verbinden der virtuellen Festplatte mit der virtuellen Maschine verwendet werden. So können Sie die interne Festplatte auf dem Computer identifizieren, auf dem der GlusterFS-Client installiert und verwendet wird:
root@stroj~# qemu-img info gluster+tcp://192.168.0.2/volume_name/soubor.img
Die virtuelle VDI-Festplatte kann nur über die Sheepdog-API identifiziert werden:
root@stroj~# qemu-img info sheepdog:192.168.0.2:8000:vdi_name
Für eine vom NBD-Server exportierte virtuelle Festplatte muss sichergestellt werden, dass der richtige Server und der richtige Port angegeben sind, da NBD keinen anderen Identifikations- oder Authentifizierungsmechanismus verwendet, der Verwechslungen mit anderen virtuellen Festplatten vermeiden würde (die neue Version von nbd-server verwendet) nur ein Port und identifiziert das Gerät anhand des Namens - ca. pro) :
root@stroj~# qemu-img info nbd:192.168.0.2:8000
192.168.0.2
Die IP-Adresse des Hosts, von dem aus das virtuelle Gerät eine Verbindung herstellt. Wenn dies derselbe Host ist, auf dem qemu-img info ausgeführt wird, kann localhost anstelle der IP-Adresse verwendet werden
8000
Die Portnummer, die der Dämon oder Server abhört. Standardmäßig verwendet Sheepdog Port 7000, kann jedoch auch auf einem anderen Port ausgeführt werden, um Konflikte mit einer anderen Anwendung zu vermeiden. Ein NBD-Server kann verschiedene Ports überwachen, wenn mehr als ein Gerät exportiert wird.
roh
Im Allgemeinen handelt es sich lediglich um einen Datensatz, der im gleichen Format wie bei einem herkömmlichen Blockgerät aufgezeichnet wurde. Eine 5G-Datei belegt den gesamten Platz, unabhängig davon, ob sie nützliche Daten oder nur leeren Speicherplatz enthält. (Dies gilt nicht für Dateien mit geringer Dichte - ca. pro)
qcow
Es unterscheidet sich vom Rohformat dadurch, dass es inkrementell sein kann, da es allmählich wächst. Dies ist praktisch für Dateisysteme, die keine Dateien mit geringer Dichte unterstützen, z. B. FAT32. Mit diesem Format können Sie auch separate inkrementelle Kopien von einer einzelnen Basisfestplatte erstellen. Die Verwendung einer solchen „Vorlage“ spart Zeit und Speicherplatz. Darüber hinaus unterstützt es die AES-Verschlüsselung und die Zlib-Komprimierung. Der Nachteil ist, dass eine solche Datei im Gegensatz zu Raw-Festplatten nicht direkt auf dem Computer bereitgestellt werden kann, auf dem sie sich befindet. Glücklicherweise gibt es ein Dienstprogramm qemu-nbd , das diese Datei als Netzwerkblockgerät exportieren und dann mit einem NBD-Gerät verbinden kann.
qcow2
ist eine aktualisierte Version des qcow-Formats. Der Hauptunterschied besteht darin, dass Snapshots unterstützt werden. Ansonsten unterscheiden sie sich nicht grundlegend. Es ist auch möglich, qcow2 zu treffen, das intern als QCOW Version 3 definiert ist, nachdem es vor langer Zeit im qcow2-Format enthalten war. Tatsächlich ist dies ein modifiziertes qcow2 mit dem Parameter lazy_refcounts, der für Snapshots verwendet wird. Da der Unterschied nur ein Bit beträgt , verfügt qemu-img ab Version 1.7 über die Option "Ändern", um ihn zu ändern. Frühere Versionen von qemu-img tun dies nicht. Wenn Sie die Version des Formats ändern wollten, musste die virtuelle Festplatte in eine neue Datei konvertiert werden. Während der Konvertierung wurde der kompatible Parameter mit dem kompatiblen Parameter installiert, für den stattdessen "1.1" auf 0.10 "reduziert werden musste. Das Vorhandensein der Option "Ändern" ist praktisch, da die Daten aufgrund derartiger geringfügiger Änderungen nicht überschrieben werden müssen.
qemu-img create -f qcow2 -o compat=1.1 test.qcow2 8G
http://blog.wikichoon.com/2014/12/virt-manager-10-creates-qcow2-images.html
qed
Dies ist ein inkrementelles COW-Format einer virtuellen Festplatte, die den Host am wenigsten belastet. Es unterstützt keine Komprimierung und verwendet zwei parallele Tabellen, um Datenblöcke (Cluster) zu adressieren. Leider war lange Zeit kein einziger Entwickler an seiner Entwicklung interessiert, so dass seine Verwendung einige Probleme mit sich bringt, die erwähnt werden.
vdi
Format der virtuellen Festplatte, das vom Oracle Virtualbox-Virtualisierungssystem verwendet wird.
vmdk
Format der virtuellen Festplatte, das von VMware-Produkten verwendet wird. Dies ist auch ein Format, mit dem eine Datei allmählich wachsen kann. Es hat jedoch einen großen Vorteil gegenüber den Formaten qcow2 und qed, die auch mit plattenlosen Lösungen oder mit Netzwerkdateisystemen verwendet werden können. Sie können eine virtuelle Festplattendatei in mehrere kleine Dateien mit einer Größe von 2 GB unterteilen. Dies gilt ab dem Zeitpunkt, an dem Dateisysteme keine Dateien mit mehr als 2 GB erstellen konnten. Der Vorteil besteht darin, dass bei der Replikation einer solchen virtuellen Festplatte über das Netzwerk weniger Daten übertragen werden und die Synchronisierung viel schneller erfolgt (z. B. bei GlusterFS). Im Fall einer plattenlosen Lösung werden auch nur kleine Dateien mit Unterschieden für jeden Snapshot gespeichert
vhdx
Format der virtuellen Festplatte, das vom Microsoft Hyper-V-Virtualisierungssystem verwendet wird
vpc
Format der virtuellen Festplatte, das vom Microsoft VirtualPC-Virtualisierungssystem verwendet wird.
| Incre menti verwurzelt Dh
| Chiffre Novation
| Com pres das
| Preal Lage
| Shabl oniz Nation
| Prop Wiesel
| Abschnitt Bild
| Innen Schnappschüsse du
| Überprüfung vereinbart Nosti
| Hinweis
|
---|
roh | Nein | Nein | Nein | ja | Nein | Nein | Nein | Nein | Nein | Kann über eine Schlaufe montiert werden
|
Datei | ja | Nein | Nein | Option persönlich | Nein | Nein | Nein | Nein | Nein | Für Btrfs sollten Sie Copy-on-Write deaktivieren
|
qcow | ja | ja | ja | Nein | ja | ja | Nein | Nein | Nein | |
qcow2 | ja | ja | ja | Option persönlich | ja | ja | Nein | ja | ja | |
qed | ja | Nein | Nein | Nein | ja | Nein | Nein | Nein | Nein | |
vmdk | ja | Nein | Nein | Option persönlich | ja | huh ? | ja | Nein | Nein | |
vdi | ja | Nein | Nein | Option statisch (statisch) | Nein | Nein | Nein | Nein | ja | |
vhdx | ja | Nein | Nein | Option fest (fest) | Nein | ja 1 | Nein | Nein | Nein | |
vpc | ja | Nein | Nein | Option fest (fest) | Nein | Nein | Nein | Nein | Nein | |
- ↑ Es kann nur für vorinstallierte Images verwendet werden (behoben)
Verwendete APIs
Zusätzlich zu den Dateiformaten funktioniert qemu-img auch mit „Formaten“, die über die API bereitgestellt werden, über die auf diese Blockgeräte remote zugegriffen werden kann.
nfs
Datei der virtuellen Festplatte, die über das NFS-Protokoll mit QEMU verbunden ist
iscsi
Die Kommunikation mit dem Blockgerät erfolgt über iSCSI. Ein Gerät kann nicht gleichzeitig auf mehr als einem Client verwendet werden.
nbd
Der Zugriff über NBD kann sehr schnell erfolgen. Dies liegt daran, dass das Protokoll sehr einfach ist. Dies ist ein Vorteil, aber gleichzeitig ein Nachteil. Dies kann praktisch sein, wenn mehrere Clients eine Verbindung zu demselben NBD-Server herstellen können, wenn sie eine lokale Verbindung über den xnbd-Server verwenden. Da nbd jedoch keine Sicherheits- oder Authentifizierungsmechanismen hat, kann es leicht vorkommen, dass ein Client versehentlich eine Verbindung zum falschen Gerät herstellt, das zum gegebenen Zeitpunkt möglicherweise bereits verwendet wird und es beschädigt.
ssh
Die Verbindung zum Remote-Server erfolgt über sshfs
Glanz
Verwendet die GlusterFS-Dateisystem-API, um auf die Datei der virtuellen Festplatte zuzugreifen. Wenn die Datei Teil eines replizierten oder verteilten Volumes ist, werden die gespeicherten Daten auf andere Knoten verteilt. Dadurch kann er im Fehlerfall auf anderen Knoten verfügbar sein.
Schäferhund
ist auch ein replikationsfähiges verteiltes Dateisystem. Im Gegensatz zu GlusterFS ist eine virtuelle Festplatte über die API nicht als Datei, sondern als Blockgerät verfügbar. Dies ist vorteilhaft für die Leistung, aber nachteilig, wenn wir über die Sheepdog-Umgebung hinausgehen müssen.
Parallelen
Virtuelle Laufwerke im Netzwerkspeicher
Der Vorteil von Blockgeräten außerhalb des Virtualisierungssystems besteht darin, dass sie dann immun gegen Ausfälle virtueller Maschinen sind.
In diesem Fall werden auch eine hohe Verfügbarkeit und ein ausreichendes Volumen für die Remote-Speicherung bereitgestellt.
Verwenden von NFS

Schäferhund

GlusterFS

Blocklose virtuelle Maschinen
Ohne Blockgeräte können Betriebssysteme funktionieren, die über NFS oder mit einem mit Plan9 ausgelösten Host-Dateisystem gestartet werden können.