Eine der zentralen Fragen bei der Planung von VDI Lösungen ist die Storage. Dabei ist es nicht der Speicherplatz, der mit größter Sorgfalt ausgewählt werden soll, sondern die möglichen Lese/Schreib Operationen pro Sekunde (IOPS). Planungen, die für Server VM ausgezeichnet funktionieren, können sich bei VDI Umgebungen als Flaschenhals herausstellen, denn das Lastverhalten einer VDI-VM ist deutlich verschieden von einer Server VM.
Zunächst sollte man erwähnen, dass iops keine absolute Einheit wie z.B. Bit pro Sekunde sind. Es handelt sich um einen empirischen Wert aus so genannten random Access Daten. Ein solches Test Szenario beschreibt einen i/o Vorgang, wie er in realen Umgebungen am wahrscheinlichsten vorkommt. Datenblöcke werden nicht sequenziell gelesen oder geschrieben. Sie sind zufällig über den Datenträger verteilt. Der Kopf der Festplatte muss dabei mehrere Bewegungen machen.
IOPS einer Festplatte wird bestimmt durch drei Faktoren:
- Drehgeschwindigkeit [1/min]: Dieser Wert beeinflusst direkt die beiden folgenden Faktoren, welche für die Berechnungen herangezogen werden.
- Mittlere Latenz [ms]: Zeit, die der Sektor benötigt, um unter den Lesekopf zu rotieren.
- Mittlere Suchzeit [ms]: Mittle Zeit, die der Lesekopf benötigt um sich über der nächsten Spur zu positionieren. Bei unterschiedlichen Werten für Lese- und Schreibvorgänge ist auch hier das Mittel der beiden Werte zu verwenden.
IOPS = [1/(Latenz + Suchzeit)] * 1000
Ein Beispiel: Eine einzelne Festplatte hat eine mittlere Latenz von 3 ms und eine mittlere Suchzeit von 3,5 ms.
IOPS = (1/6,5ms)*1000 = 153
IOPS im RAID
Ein Storage Array besteht aus einer Sammlung von Festplatten. Die IOPS eines Arrays hängt von den technischen Parametern der einzelnen Platten und der logischen verschaltung im RAID ab.
In der Tabelle unten sind typische Charakteristika diverser HDD Typen aufgelistet.
HDD | RPM | IOPS |
SATA | 5400 | 50 |
SATA | 7200 | 80 |
SAS | 10k | 140 |
SAS | 15k | 175 |
SSD | – | 4000 |
Wir sehen, dass eine einzelne normale SATA Platte aus dem Desktop Umfeld etwa 80 iops zustande bringt, eine SAS HDD aus dem Server Bereich dagegen 175 iops. Wie beeinflusst die Verschaltung mehrerer Disks zu einem RAID das Lese- bzw. Schreibverhalten?
Leseverhalten
Beim Lesen gilt: je mehr Spindeln (Disks), desto besser. Die Leseanfragen verteilen sich gleichmäßig auf alle beteiligten Platten. Demzufolge addieren sich die möglichen IOPS der einzelnen Disks. Ein RAID5 bestehend aus 10 Disks (SAS 15k) hätte demnach 1750 IOPS Leseleistung.
Schreibverhalten
Während die Leseleistung sehr einfach zu berechnen ist, gestaltet sich die Vorhersage des Schreibverhaltens etwas schwieriger. Hier muß mit einberechnet werden, daß je nach RAID Typ unterschiedliche Prüfsummen (Paritäten) berechnet oder Platten gespiegelt werden müssen. Es gibt im Vergleich zum Lesen Strafpunkte (Write-Penalty).
RAID | Penalty |
0 | 1 |
1 | 2 |
10 | 2 |
5 | 4 |
6 | 6 |
Bei RAID1 oder RAID10 müssen für jede Schreibanforderung zwei Schreibvorgänge durchgeführt werden. Der Datenblock und der Spiegelblock wird geschrieben. Daher Faktor 2. Ein RAID5 muss pro Schreibanforderung 4 Schreibvorgänge ausführen (es sei denn, die zu schreibenden Daten sind ein exaktes Vielfaches der Bockgröße). Warum sind vier IO Operationen pro beschriebenem Block notwendig? Aus Sicherheitsgründen arbeitet RAID5 nach dem read-before-write Prinzip.
- Alten Datenblock lesen
- Alten Parityblock lesen. Für jedes veränderte Bit zwischen altem und neuem Datenblock muss das entsprechende Bit im Parityblock verändert werden.
- Neuen Datenblock schreiben.
- Neuen Parityblock schreiben.
RAID6 hat aufgrund seiner doppelten Parität sogar einen noch schlechteren Wert. Hier sind pro Schreibanforderung 6 Schreibvorgänge notwendig, da zwei Parityblöcke gelesen und geschrieben werden müssen.
Gewichtung zwischen Lesen und Schreiben
Da Lese- und Schreibvorgänge deutlich unterschiedlichen Einfluss auf die Berechnung der IOPS haben, muß man noch eine Gewichtung festlegen. Je nach Anwendung, Situation oder System kann die Anforderung eher Lese- oder eher Schreiborientiert sein. Der Bootvorgang eines Systems ist eher schreiblastig. Nachdem die Applikationen einmal gestartet sind, geht die Leseleistung signifikant zurück, die Schreibrate bleibt jedoch konsant. Folglich sind z.B. Desktopsysteme nach kurzer Zeit eher schreiblastig mit einer Gewichtung (R/W) mit 20:80 bis zu 10:90. Und genau da entsteht das Problem. Jede Schreibanforderung erzeugt die doppelte (RAID 1,10) bzw. die vierfache (RAID5) Schreiblast auf der Storage.
Funktionelle IOPS
Möchte man die Fähigkeit eines RAID Sets beschreiben, so muss man das Write-Penalty und die Gewichtung zwischen Lese- und Schreibanforderungen in Betracht ziehen. Man könnte dies als Funktionelle-IOPS bezeichnen.
Die allgemeine Formel zur Berechnung der Funktionellen-IOPS lautet:
Brutto-IOPS = Disk-IOPS * Anzahl Disks
Netto IOPS = (Brutto-IOPS * %Read) + (Brutto-IOPS * %Write)/Penalty
Links
Design storage for desktop virtualization properly | The Citrix Blog
Understanding how storage design has a big impact on your VDI | BrianMadden
Planning for VDI has little to do with the desktop | whiteboardninja
Calculate IOPS in a storage array | Techrepublic.com
VMFS LUN sizing | Yellow Bricks
IOPS? | Yellow Bricks
Eine Antwort auf „IOPS Berechnung“