VMware:Optimale Festplattenanzahlen + Blocksize + Formatierungen im SAN für VMware ESX / ESXi Hosts
Aus znilwiki
Wenn wir auf einem VMware ESX / ESXi Host einen neuen Speicher hinzufügen (LUN), können wir unter folgenden Blockgrößen wählen:
Zum einen legen wir mit der Blockgröße die maximale Größe einer virtuellen Festplatte (VMDK) fest:
Blockgröße maximale Größe VMDK ---------- ------------------- 1 MByte 256 GByte 2 MByte 512 GByte 4 MByte 1024 GByte (1 TByte) 8 MByte 2048 GByte (2 TByte)
Die Blockgröße hat aber nicht nur Einfluss auf die maximale Größe einer virtuellen Festplatte, sondern auch auf die Schreibperformance der ESX Server.
Hierbei kommt es auf die Anzahl der vorhandenen Festplatten, das Raid Level und die dort verwendete Blockgröße (Bocksize / Segmentsize)
Warum das so ist lässt sich leichter Erkennen wenn wir einmal einen "optimalen" Wert berechnen. Die "Formel" hierzu ist:
Blocksize / 512 * Anzahl der Festplatten
Gehen wir nun von einem Raid 5 mit 8 + 1 Festplatten aus. 8 + 1 bedeutet:
8 Festplatten Nutzdaten 1 Festplatte Paritätsdaten
oder anders ausgedrückt: ein RAID 5 über 9 Festplatten.
Es ist jedoch wichtig, diese 9 Festplatten für die Berechnung als "8 + 1" zu betrachten. Beim Schreiben von Daten landen eben nur auf 8 von 9 Festplatten effiktive Nutzdaten - auf der 9 Platte hingegen "nur" die Paritätsdaten.
Die Blocksize können wir bei der Einrichtung des RAID's am SAN mit angeben bzw. aus den Informationen auslesen. Dieser Wert steht dafür, in welchen Häppchen das SAN die Daten pro Festplatte (!!!) wegschreibt. Ein typischer Wert für IBM-SAN's ist für ESX Server (werden wie Fileserver/Dateiserver behandelt) ist 128KByte.
Also Rechnen wir:
128Kbyte / 512 * 8 = 2048 KByte
... moment -> 128 * 8 / 512 sind doch ... 2
Genau, hier lag auch mein Fehler am Anfang. Korrekt ist die Berechnung:
128 KByte * 1024 / 512 * 8 = 2048 KByte
Es fehlte die Umrechnung von 128KByte in Byte :-)
So, es wurde nun der Wert "2048 KByte (= 2 MByte)" errechnet. Dieser Wert bedeutet, dass das SAN bei jedem Schreibvorgang versucht 2MByte in einem Rutsch zu schreiben.
Idealerweise formatieren wir also das neue LUN unter VMware ESX / ESXi mit einer Blockgröße von 2 MByte. So können die von den ESX Servern an das SAN übergebenden Daten immer in einem Zyklus geschrieben werden.
Dadurch ergibt sich folgende Tabelle:
Vmware Blockgröße | Maximale VMDK Größe |
Anzahl Festplatten Blocksize 16 KByte |
Anzahl Festplatten Blocksize 32 KByte |
Anzahl Festplatten Blocksize 64 KByte |
Anzahl Festplatten Blocksize 128 KByte |
Anzahl Festplatten Blocksize 256 KByte |
Anzahl Festplatten Blocksize 512 KByte |
1 MByte | 256 Gbyte | 32 | 16 | 8 | 4 | 2 | 1 |
2 MByte | 512 Gbyte | 64 | 32 | 16 | 8 | 4 | 2 |
4 MByte | 1024 Gbyte | 128 | 64 | 32 | 16 | 8 | 4 |
8 MByte | 2048 Gbyte | 256 | 128 | 64 | 32 | 16 | 8 |
Wenn wir keinen idealen Wert treffen können so sollten wir den nächst kleineren Wert für die Blockgröße unter VMware nehmen.
Oder wenn es garnicht anders geht - ignorieren wir das ganze und Leben halt damit das wir nicht maximale Perfomance haben.
Zu der Festplattenanzahl müssen wir noch die zusätzlichen Festplatten für das jeweilige RAID Level addiert werden.
Also:
RAID Level | zusätzliche Festplatten |
0 | 0 |
1 | 0 |
5 | 1 |
6 | 2 |
10 | verdoppeln |