Warum wirken sich VM-Snapshots auf die Leistung aus?


27

In einem der VMware-KB-Artikel habe ich gelesen, dass sich Snapshots direkt auf die VM-Leistung auswirken.

Aber mein Team fragt mich immer wieder, wie sich Schnappschüsse auf die Leistung auswirken können.

Ich möchte ihnen einen soliden Grund für die Aussage geben, dass die Schnappschüsse Leistungsmörder sind.

Kann jemand eine kleine Theorie darüber erklären, wie sich Schnappschüsse tatsächlich auf die Leistung auswirken? Liegt es nur daran, dass die Festplatten-E / A-Rate langsam ist?


2
Ich bin mir nicht sicher, ob dies der KB-Artikel ist, den Sie gelesen haben oder nicht. Ich dachte, ich würde es als Referenz hinzufügen.
Aaron Copley

Antworten:


28

Wenn Sie einen Schnappschuss erstellen, wird das ursprüngliche Festplatten-Image in einem konsistenten Zustand "eingefroren", und alle Schreibzugriffe werden von da an auf ein neues differenzielles Image übertragen. Schlimmer noch, wie hier und hier erläutert , hat das Differenzbild die Form eines Änderungsprotokolls, in dem jede Änderung aufgezeichnet wird, die seit der Erstellung des Schnappschusses an einer Datei vorgenommen wurde. Dies bedeutet, dass Lesezugriffe nicht nur eine Datei, sondern alle Differenzdaten (die Originaldaten plus jede Änderung an den Originaldaten) lesen müssten. Die Anzahl erhöht sich noch mehr, wenn Sie Snapshots kaskadieren.


2
Beste Erklärung. Sie verdoppeln nicht nur IOPS, sondern es entsteht auch CPU-Overhead bei der Berechnung der Differenz auf Blockebene.
Aaron Copley

3
Nach dem Lesen dieses Artikels von Aaron Copley ( kb.vmware.com/selfservice/microsites/… ) scheint es schlimmer zu sein. Ein Snapshot ist kein Differenzbild, sondern ein Änderungsprotokoll. Wenn Sie also zehnmal dieselben Daten an derselben Stelle speichern, erhöht sich die Größe des Snapshots um das Zehnfache der Größe der von Ihnen geschriebenen Daten. Stattdessen sollte ein Differenzbild effizienter sein, da es die am selben Ort neu geschriebenen Daten überschreiben sollte.
Max

1
@zespri Das Problem betrifft alle Virtualisierungsplattformen, die diese Art von Snapshot-Technologie verwenden, einschließlich Hyper-V.
Ansgar Wiechers

1
Das ist schlicht falsch. Siehe @ Falcon Momot's Kommentar für die richtige Antwort. Sogar in dem verlinkten Artikel heißt es nur, dass die Festplatte "nicht mehr genügend Speicherplatz hat", was klar ist, wenn der vor dem Erstellen eines Snapshots verbleibende Speicherplatz kleiner als der der Snapshots ist und die Deltadisk nicht genügend Speicherplatz zum Erweitern hat.
Daniel

2
@AnsgarWiechers Diese Antwort ist definitiv falsch. In dem verlinkten Artikel ( kb.vmware.com/s/article/1015180 ) heißt es; "Die untergeordnete Festplatte, die mit einem Snapshot erstellt wird, ist eine Sparse-Festplatte. Sparse-Festplatten verwenden den COW-Mechanismus (Copy-on-Write), bei dem die virtuelle Festplatte keine Daten an bestimmten Stellen enthält, bis sie durch einen Schreibvorgang dorthin kopiert wird." Gefolgt von; "Wenn auf einer virtuellen Maschine ein Snapshot ausgeführt wird, werden Änderungen an einer untergeordneten oder spärlichen Festplatte vorgenommen. Je mehr Schreibvorgänge auf dieser Festplatte ausgeführt werden, desto größer wird die Festplatte und desto größer ist die Obergrenze für die Größe der Basisfestplatte plus a geringe Gemeinkosten. "
Steve365

5

Wenn Sie einen Snapshot auf einer VM erstellen, wird eine Delta-Festplatte erstellt und das Betriebssystem schreibt in diese Datei anstelle des ursprünglichen VMDK. Diese Datei heißt VM_Name-Delta.VMDK. Wenn das System jedoch vor dem Snapshot auf eine Datei verweisen muss, wird darauf verwiesen, dass VM_Name.VMDK die E / A für diesen Vorgang erhöht. Wenn Sie mehrere Snapshots erstellen, verweisen Sie auf die letzte Delta-Datei des letzten Snapshots und nicht auf das ursprüngliche VMDK, wodurch die E / A erhöht werden.

Beispiel.

Betriebssystem ---> Snapshot (Datei A erstellt) ---> (Snapshot-Datei B erstellt)

Wenn ich auf Datei A verweisen muss, werden 3 VMDKs durchsucht, um dies zu finden.

Auch wenn Sie den Speicherstatus der VM zum Zeitpunkt des Snapshots angeben, wird eine Deltadatei erstellt, die bei Bedarf auf die ursprünglichen Speicherdateien verweist.

Es wird eine Datei erstellt, in der alle Dateien aufgelistet sind, die zum Zeitpunkt des Snapshot-Vorgangs erstellt wurden


2

Soweit ich das beurteilen kann, verwendet VMWare Copy-on-Write-Logik, um ihre Snapshots zu implementieren. Wenn Sie also einen erstellen, wird bei jedem Vorgang, der auf Ihrer VM ausgeführt wird (z. B. fast alles in der Laufzeit), ein kleiner Teil der VM kopiert, bis das Ganze im Wesentlichen geklont wurde.

Ein weiteres Leistungsproblem besteht darin, dass Lesevorgänge auf die Originalkopie übertragen werden müssen, wenn die Arbeitskopie noch keine Daten enthält (da sich nichts geändert hat, um eine Kopie zu erstellen).

Wenn Sie die Snapshots als Backup haben möchten, aber keine geringe Leistungsminderung tolerieren können, sollten Sie stattdessen die VM klonen.


-2

Von hohen Co-Stop-Werten (% CSTP), die während der Snapshot-Aktivitäten der virtuellen Maschine angezeigt werden :

Mit der Größe und Anzahl der Snapshots auf einer virtuellen Maschine steigt auch die Anzahl der Speicherbefehlsvorgänge in vmkernel. Für jeden vom Gastbetriebssystem der virtuellen Maschine ausgegebenen Speicherbefehl sind möglicherweise mehrere Speicherbefehlsoperationen erforderlich, um die gesamte Momentaufnahmekette zu durchlaufen und den am besten geeigneten Datenblock zu lesen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.