Frage Warum wirken sich VM-Snapshots auf die Leistung aus?


Ich habe in einem der VMware KB-Artikel gelesen, dass Snapshots die VM-Leistung direkt beeinflussen.

Aber mein Team fragt mich immer wieder, wie Snapshots die Leistung beeinflussen können.

Ich möchte ihnen einen guten Grund geben, warum die Snapshots Performance-Killer sind.

Kann mir jemand ein wenig Theorie darüber sagen, wie Snapshots die Performance tatsächlich beeinflussen? Liegt es nur daran, dass die Festplatten-I / O-Rate der Festplatte langsam ist?


26
2017-09-20 06:32


Ursprung


Nicht sicher, ob Das ist der KB-Artikel du liest oder nicht. Ich dachte, ich würde es als Referenz hinzufügen. - Aaron Copley


Antworten:


Wenn Sie einen Snapshot erstellen, wird das ursprüngliche Disk-Image in einem konsistenten Zustand "eingefroren", und alle Schreibzugriffe werden von nun an auf ein neues differentielles Image übertragen. Noch schlimmer, wie erklärt Hier und HierDas differenzielle Image hat die Form eines Änderungsprotokolls, das alle Änderungen seit der Erstellung des Snapshots aufzeichnet. Dies bedeutet, dass Lesezugriffe nicht nur eine Datei, sondern auch alle Differenzdaten (die Originaldaten plus jede Änderung an den Originaldaten) lesen müssen. Die Anzahl erhöht sich noch mehr, wenn Sie Snapshots kaskadieren.


27
2017-09-20 06:42



Beste Erklärung. Sie verdoppeln nicht nur IOPS, sondern es gibt CPU-Overhead bei der Berechnung der Differenz auf Blockebene. - Aaron Copley
Nach dem Lesen dieses Artikels von Aaron Copley (kb.vmware.com/selfservice/microsites/...) Es scheint schlimmer als das. Ein Snapshot ist kein differenzielles Image, es ist ein Änderungsprotokoll. Wenn Sie die gleichen Daten also 10-mal an derselben Stelle schreiben, erhöht der Snapshot die Größe um 10 multipliziert mit der Größe der von Ihnen geschriebenen Daten. Stattdessen sollte ein differenzielles Bild effizienter sein, da es die am gleichen Ort neu geschriebenen Daten überschreiben sollte. - Max
@zesspri Das Problem betrifft alle Virtualisierungsplattformen, die diese Art von Snapshot-Technologie verwenden, einschließlich Hyper-V. - Ansgar Wiechers
Das ist einfach falsch. Siehe @Falcon Momots Kommentar für die richtige Antwort. Sogar der verlinkte Artikel gibt nur an, dass die Platte "keinen Speicherplatz mehr haben kann", was klar ist, wenn der vor dem Erstellen eines Snapshots verbleibende Speicherplatz kleiner als der der Snapshot-Festplatte ist und der Deltadisk nicht genügend Platz zum Erweitern hat. - Daniel
@AnsgarWiechers Diese Antwort ist definitiv falsch. Der verlinkte Artikel (kb.vmware.com/s/article/1015180) Zustände; "Die Kinddiskette, die mit einem Snapshot erstellt wird, ist eine Sparse-Disk. Sparse-Disks verwenden den Copy-on-Write (COW) -Mechanismus, in dem die virtuelle Festplatte an einigen Stellen keine Daten enthält, bis sie durch einen Schreibvorgang kopiert werden." Gefolgt von; Msgstr "" "Wenn eine virtuelle Maschine von einem Snapshot abläuft, nimmt sie Änderungen an einem untergeordneten oder spärlichen Datenträger vor. Je mehr Schreibvorgänge auf diesem Datenträger ausgeführt werden, desto größer wird er bis zu einer Obergrenze der Größe des Basisdatenträgers plus kleine Menge an Overhead. " - Steve365


Wenn Sie einen Snapshot auf einer VM erstellen, wird eine Delta-Festplatte erstellt, und das Betriebssystem schreibt in diese Datei anstelle der ursprünglichen VMDK. Diese Datei wird VM_Name-Delta.VMDK genannt, aber wenn das System auf eine Datei vor dem Snapshot verweisen muss, verweist es auf VM_Name.VMDK, wodurch die E / A dieser Operation erhöht wird. Wenn Sie mehrere Snapshots erstellen, beziehen Sie sich auf die letzte Deltadatei des letzten Snapshots, nicht auf die ursprüngliche VMDK, wodurch E / A erhöht wird.

Beispiel.

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

Wenn ich auf Datei A verweisen muss, werden 3 VMDKs durchsucht   finde das.

Wenn Sie den Speicherstatus der VM zum Zeitpunkt der Snapshot-Erstellung angeben, wird auch dies erstellt. Dies ist wiederum eine Deltadatei und bezieht sich bei Bedarf auf die ursprünglichen Speicherdateien.

Eine Datei wird erstellt, die alle zum Zeitpunkt des Snapshot-Vorgangs erstellten Dateien auflistet


5
2017-09-20 14:50





Soweit ich das beurteilen kann, verwendet VMWare eine Kopie-beim-Schreiben-Logik, um ihre Snapshots zu implementieren. Wenn Sie also einen erstellen, würde jede auf Ihrer VM durchgeführte Operation (z. B. fast alles in Laufzeit) dazu führen, dass ein kleiner Teil der VM kopiert wird, bis das Ganze im Wesentlichen geklont wurde.

Ein anderes Leistungsproblem dabei ist, dass die Lesevorgänge auf die Originalkopie übertragen werden müssten, wenn die Arbeitskopie noch keine Daten hat (weil sich nichts geändert hat, um eine Kopie zu verursachen).

Wenn Sie die Snapshots als Sicherung verwenden möchten, aber eine kleine Leistungsminderung nicht tolerieren können, sollten Sie stattdessen das Klonen der VM in Erwägung ziehen.


2
2017-09-20 06:42





Von Hohe Co-Stopp-Werte (% CSTP), die während Snapshotsaktivitäten der virtuellen Maschine festgestellt werden:

Mit zunehmender Größe und Anzahl der Snapshots auf einer virtuellen Maschine, so   Führt die Anzahl der Speicherbefehlsoperationen in vmkernel aus. Zum   Jeder Speicherbefehl, der vom Gastbetriebssystem der virtuellen Maschine ausgegeben wird, ist mehrfach   Speicherbefehlsoperationen können notwendig sein, um das gesamte zu durchlaufen   Snapshot-Kette, um den am besten geeigneten Datenblock zu lesen.


-2
2017-08-22 06:49