Welches Image-Format ist besser, raw oder qcow2, um es als Basisbild für andere VMs zu verwenden?

25

Ich verwende ein Basisbild und erstelle darauf basierend viele VMs. Und jetzt möchte ich wissen, welches besser ist, qcow2 oder raw, um es für ein Basisbild zu verwenden. Kannst du mir außerdem bitte sagen, ob es einen Vorteil gibt, dieses Basisbild zu verwenden, anstatt die gesamte Festplatte zu klonen? Geschwindigkeit kann ein Faktor sein, aber was die Effizienz angeht, gibt es ein Problem bei der Verwendung eines Basisbilds und beim Erstellen von VMs mit diesem Basisbild?

Bearbeiten 1:

Ich habe einige Experimente durchgeführt und bekam Bildbeschreibung hier eingebenBildbeschreibung hier eingebenBildbeschreibung hier eingeben

Das erste ist, wenn sowohl das Basisbild als auch das Overlay qcow2 sind. 2. Wenn das Basisbild RAW ist, aber das Overlay QCOW2 ist, und im dritten Fall gebe ich jeder VM ein einzelnes RAW-Image. Überraschenderweise ist der letzte Fall viel effizienter als die beiden anderen.

Versuchsaufbau: 
Betriebssystem im Basisbild: Ubuntu Server 14.04 64 Bit.
Host-Betriebssystem: Ubuntu 12.04 64-Bit
RAM: 8 GB
Prozessor: Intel® Core ™ i5-4440-CPU bei 3,10 GHz × 4 
Datenträger: 500 GB 

Auf der x-Achse: Anzahl der gleichzeitig gebooteten VMs. Ab 1 und inkrementiert bis 15.

Auf der y-Achse: Gesamtzeit bis zum Booten von "x" der Maschinen.

Aus den Diagrammen geht hervor, dass es viel effizienter ist, VM ein vollständiges Festplattenimage zu geben als andere 2 Methoden.

Bearbeiten 2: Bildbeschreibung hier eingeben

Dies ist der Fall, wenn wir jeder VM ein einzelnes Raw-Image zuweisen. Nach dem Cache-Leeren ist dies das Diagramm. Sie ähnelt fast der Überlagerung von Rohdatenbasisbild + qcow.

Vielen Dank.

AB
quelle
1
Ich würde ein rohes Basis-Image verwenden und QED anstelle von qcow2 überlagern. QED ist schneller als qcow2 und wird mit geringerer Wahrscheinlichkeit durch das Design beschädigt.
Matt
@Matt Bitte kommentieren Sie die bearbeitete Frage.
AB
Die Leistungsunterschiede sind interessant. Kannst du es mit qed versuchen? Möglicherweise liegt ein Konflikt- / Sperrproblem in der qcow2-Implementierung vor. Ich glaube, es hat einige Probleme, weshalb sie qed erfunden haben.
Matt
1
@Matt Ich habe mit raw baseimage-qed Overlay und raw baseimage-qcow2 Overlay nachgesehen. Aber qed ist in dieser Einstellung viel langsamer als qcow2.
AB

Antworten:

18

Für Ihren speziellen Anwendungsfall (Basisbild + qcow2-Overlay) sollte das RAW-Format bevorzugt werden:

  1. Es ist schneller: Da keine Metadaten zugeordnet sind, ist es so schnell wie möglich. Auf der anderen Seite hat Qcow2 zwei Indirektionsebenen, die gekreuzt werden müssen, um die tatsächlichen Daten zu treffen
  2. Da es sich bei der Überlagerungsebene um eine Qcow2-Datei handeln muss, verlieren Sie nicht die immer nützliche Schnappschussfunktion (RAW-Bilder unterstützen keine Schnappschüsse selbst).

Die Wahl zwischen Basisbild + qcow2-Overlay und mehreren vollständigen Kopien hängt von Ihrer Priorität ab:

  1. Verwenden Sie für absolute Leistung fallozierte RAW-Bilder. Dies hat den Nachteil, dass Snapshot nicht unterstützt wird, da in den meisten Umgebungen ein zu hoher Preis zu zahlen ist
  2. Verwenden Sie RAW-Basisbilder + Qcow2-Overlays für Flexibilität und Platzersparnis.

Wie auch immer, ich fand Qcow2-Dateien etwas zerbrechlich.

Für meine Produktions-KVM-Hypervisoren verwende ich grundsätzlich zwei verschiedene Setups:

  1. Wenn die Leistung an erster Stelle steht, verwende ich LVM-Volumes, die direkt an die virtuellen Maschinen angeschlossen sind, und verwende die LVM-Snapshot-Funktion, um konsistente Sicherungen zu erstellen
  2. Wenn ich etwas Leistung für mehr Flexibilität opfern kann, verwende ich ein einzelnes, großes LVM Thin Provisioned Volume + XFS + RAW-Abbilder

Eine andere Möglichkeit ist die Verwendung eines normalen LVM-Volumes + XFS + RAW-Images. Der einzige Nachteil ist, dass normale (nicht-dünne) LVM-Snapshots sehr langsam sind und das Snapshoting eines ausgelasteten normalen LVM-Volumes die Leistung beeinträchtigt (für die Lebensdauer des Snapshots). Auf jeden Fall kann dies die einfachere und sicherere Wette sein, wenn Sie nur eine sporadische Verwendung von Schnappschüssen planen.

Einige Referenzen:
KVM-E / A-Langsamkeit bei RHEL 6
KVM-Speicherleistung und Qcow2-Prellocation bei RHEL 6.1 und Fedora 16
KVM-Speicherleistung und Cache-Einstellungen bei Red Hat Enterprise Linux 6.2
LVM-Thin-Volume erklärt

Shodanshok
quelle
Wie bereits erwähnt: Einzelne RAW-Bilder werden schneller, da keine Indirektionsebenen vorhanden sind. Denken Sie jedoch daran, dass Sie auf Schnappschüsse (auf Bildebene) und Platzersparnis verzichten. Außerdem habe ich den Eindruck, dass Ihr drittes Ergebnis durch den Host-Cache verzerrt wurde. Um sicherzugehen, wiederholen Sie alle Ihre Tests, die zwischen den einzelnen Durchläufen "sync; echo 3> / proc / sys / vm / drop_caches" ausgeben.
Shodanshok
Eigentlich habe ich das gleiche gedacht. Aber dann dachte ich, dass es im Falle der tatsächlichen Verwendung auch dem gleichen Fluss folgen wird.
AB
Nicht wirklich: In dieser Testumgebung booten Sie einfach Ihre virtuellen Maschinen, ohne sie zu verwenden. In einem realen Fall werden nach dem Booten die virtuellen Maschinen verwendet, wodurch der Cache verschmutzt wird. Im Allgemeinen ist es am besten, mit einem vernünftigen Anwendungsfall zu vergleichen.
Shodanshok
Haben Sie eine Vorstellung davon, warum das Caching in Grafik 1 und Grafik 2 nicht so eine Rolle spielt, dh Qcow2-Basisbild + Qcow2-Overlay und Raw-Basisbild + Qcow2-Overlay?
AB
6

Bitte beachten Sie ... Wenn Sie Linux verwenden, können rawSie die gleichen Vorteile nutzen und erhalten, qcow2was die Größe betrifft .

... Wenn Ihr Dateisystem Lücken unterstützt (z. B. in ext2 oder ext3 unter Linux oder NTFS unter Windows), werden nur die geschriebenen Sektoren Speicherplatz reservieren.

https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html

raw Raw-Disk-Image-Format (Standard). Dies kann das schnellste dateibasierte Format sein. Wenn Ihr Dateisystem Lücken unterstützt (z. B. in ext2 oder ext3 unter Linux oder NTFS unter Windows), werden nur die geschriebenen Sektoren Speicherplatz reservieren. Verwenden Sie qemu-img info, um die tatsächliche Größe des Images oder von ls -ls unter Unix / Linux zu ermitteln.

hee
quelle
Guter Punkt! Aber es scheint, dass beim Sichern / Kopieren / Komprimieren die gesamte Größe der Rohbilddatei verwendet wird. Eine 20-GB-Rohdatei, die nur 4 MB auf der Festplatte zuweist, wurde auf 20
MB
Das war für mich völlig neu. Ich habe eine VM in Proxmox VE mit einer virtuellen Festplatte von 30 GB ... und ich kann feststellen, dass die Festplatte die Größe im Host-Dateisystem hat. Das Host-Dateisystem verwendet jedoch insgesamt << 10 GB. Das ist der Grund, wonach ich gesucht habe.
Cljk