CSV-Cache bringt massive Vorteile
29. Mai 2014Auf die Frage, ob man bei Microsofts Virtualisierungsplattform Hyper-V den CSV-Cache (Cluster Shared Volumes) aktivieren soll, gibt es eine klare Antwort: unbedingt! Denn der Einsatz dieses Zwischenspeichers verbessert die Performance bei Zugriffen auf das CSV extrem.
Allerdings bestehen Unterschiede beiden Hyper-V-Versionen von Windows Server 2012 und der Folgeversion Windows Server 2012 Release 2, wie dieser Cache zu konfigurieren ist.
Normalerweise greift der Hyper-V über ungepufferte Ein-Ausgabeoperationen auf die Cluster Shared Volumes (CSV) zu. Das bedeutet, dass diese Operationen nicht vom Windows Cache Manager zwischengespeichert werden. Mit dem CSV-Cache steht allerdings ein Zwischenspeicher zur Verfügung, bei dem die Lesezugriffe über den Arbeitsspeicher des Systems (DRAM) wenn möglich beantwortet werden.
Die Schreibzugriffe allerdings werden nach wie vor auf die entsprechende Festplatte (bzw. SSD) ausgeführt und nicht über den Cache geleitet. Die meisten Zugriffe auf die CSV sind Lesezugriffe, daher nützt der CSV-Cache sehr viel. Beim Windows Server 2012 muss der Administrator allerdings den CSV-Cache aktivieren und zudem angeben, wie groß die Kapazität dieses Zwischenspeichers sein soll. Beim Windows Server 2012 Release 2 (R2) dagegen ist der CSV-Cache schon in der Voreinstellung aktiviert.
Generell besitzen die CSV bei der derzeit aktuellsten Hyper-V-Version einige zusätzliche Features im Vergleich zur Vorgängerversion:
- ReFS (Resilient Filesystem) wird unterstützt; dieses Dateisystem ist in erster Linie für die Archivierung von Daten gedacht und sollte für laufende VMs (virtuelle Maschinen) nicht zum Einsatz kommen.
- Die Storage Spaces werden mit verschiedenen Funktionen (Tiering und Write-Back-Cache sowie Parity) unterstützt.
- Datendeduplizierung wird unterstützt.
- Der SQL Server 2014 wird auf dem Windows Server 2012 R2 CSV unterstützt.
Um den CSV-Cache zu konfigurieren, sind je nach Betriebssystemversion zwei Wege zu beschreiten. Im Folgenden soll ein Speicherbereich von 4 GByte aus dem Arbeitsspeicher als CSV-Cache konfiguriert werden. Das sieht beim Windows Server 2012 R2 so aus:
(Get-Cluster).BlockCacheSize = 4096
Beim Windows Server 2012 lautet der Befehl:
(Get-Cluster).SharedVolumeBlockCacheSizeInMB = 4096
Doch beim Windows Server 20912 muss der CSV-Cache zuvor noch auf einer „pro Festplatten-Basis“ aktiviert werden.
Um eine Festplatte unter Windows Server 2012 für den CSV-Cache zu aktivieren, ist folgendes Kommando nötig:
Get-ClusterSharedVolume "Cluster Disk 1" |
Set-ClusterParameter CsvEnableBlockCache 1
Die entsprechende Property beim Windows Server 2012 R2 lautet EnableBlockCache.
Wer sie – aus welchen Gründen auch immer – deaktivieren möchte, kann das damit dann für die betreffende Festplatte machen. Damit die Änderungen ausgeführt werden, ist kein Neustart des Knotens nötig.
Wenn der CSV-Cache aktiv ist, kann sich der Administrator die Auswirkungen auch anzeigen lassen. Dazu stehen einige Performance Counter zur Verfügung. Zum einen ist interessant, wie viel der Lesezugriffe von der Festplatte abgewickelt werden, wie viele aus dem CSV-Cache und der gesamte Wert der Ein-Ausgabeoperationen. Damit kann der Systembetreuer erkennen, wie viele Ein-Ausgabeoperationen vom CSV-Cache erfüllt werden können. Die speziellen Performance Monitor Counter sind alle unter der Gruppe „Cluster CSV Volume Cache“ zu finden.
Dabei haben sich die folgenden Counter als nützlich erwiesen:
- Cache IO Read – Bytes: gibt an, wie viele Byte aus dem CSV-Cache gelesen werden.
- Disk IO Read – Bytes: Das sind die Byte, die direkt von der Festplatte kommen.
- IO Read – Bytes: die gesamten Byte, die gelesen werden.
Ein Beispiel für diese Ergebnisse sind im Bild zu sehen. Andere Counter zweigen noch die aktuelle Größe und Konfiguration des CSV-Cache. Wie man in dem hier gezeigten Beispiel ablesen kann, ist der CSV-Cache für mehr als die Hälfte aller Lesezugriffe auf die Cluster Shared Volumes zuständig. Das bezieht sich auf die hier angegebene CSV-Cache-Größe von 4 GByte.