Die Faustregel, die ich für Festplatten-E / A verwende, lautet:
75 IOPs pro Spindel für SATA.
150 IOPs pro Spindel für FC / SAS
1500 IOPs pro Spindel für SSD.
Neben IOPs pro Array werden auch IOPs pro Terabyte berücksichtigt. Es ist nicht ungewöhnlich, dass bei SATA + RAID6 ein sehr schlechtes IOP pro TB-Verhältnis auftritt. Das hört sich vielleicht nicht zu viel an, aber Sie werden oft jemanden finden, der "freien Speicherplatz" auf einem Array entdeckt und ihn verwenden möchte. Es ist üblich, dass Leute Gigs kaufen und Iops ignorieren, wenn in den meisten Unternehmenssystemen das Gegenteil der Fall ist.
Fügen Sie dann die Kosten für die Schreibstrafe für RAID hinzu:
- 2 für RAID1, RAID1 + 0
- 4 für RAID5 (oder 4)
- 6 für RAID6.
Schreibstrafe kann teilweise gemildert werden schöne schöne Schreibcaches und unter den richtigen Umständen. Wenn Sie viele sequentielle Schreib-E / A (wie DB-Protokolle) haben, können Sie diese Schreibstrafen auf RAID 5 und 6 erheblich reduzieren. Wenn Sie einen vollständigen Streifen schreiben können (z. B. einen Block pro Spindel), müssen Sie nicht lesen, um die Parität zu berechnen.
Angenommen, ein 8 + 2 RAID 6-Satz. Im normalen Betrieb für eine einzelne Schreib-E / A müssen Sie:
- Lesen Sie den 'aktualisierten' Block.
- Lesen Sie den ersten Paritätsblock
- Lesen Sie den zweiten Paritätsblock
- Parität neu berechnen.
- schreibe alle 3. (6 IOs).
Mit einem zwischengespeicherten Vollstreifen-Schreibvorgang - z. B. 8 aufeinanderfolgenden "Blöcken" in der Größe des RAID-Streifens können Sie die Parität für das gesamte Los berechnen, ohne dass ein Lesevorgang erforderlich ist. Sie benötigen also nur 10 Schreibvorgänge - einen für jede Daten und zwei Paritäten.
Dies macht Ihre Schreibstrafe 1.2.
Sie müssen auch berücksichtigen, dass Schreib-E / A einfach zwischenzuspeichern ist - Sie müssen sie nicht sofort auf die Festplatte laden. Es arbeitet unter einer weichen Zeitbeschränkung - solange Ihre eingehenden Schreibvorgänge im Durchschnitt die Spindeldrehzahl nicht überschreiten, kann alles mit "Cache-Geschwindigkeit" ausgeführt werden.
Das Lesen von E / A unterliegt andererseits einer harten Zeitbeschränkung - Sie können einen Lesevorgang erst abschließen, wenn die Daten abgerufen wurden. Algorithmen zum Lesen von Caching und zum Laden des Caches werden an diesem Punkt wichtig - vorhersagbare Lesemuster (z. B. sequentiell, wie Sie sie von der Sicherung erhalten würden) können vorhergesagt und vorab abgerufen werden, zufällige Lesemuster jedoch nicht.
Für Datenbanken würde ich generell vorschlagen, dass Sie Folgendes annehmen:
Der größte Teil Ihrer 'Datenbank'-E / A wird zufällig gelesen. (zB schlecht für wahlfreien Zugriff). Wenn Sie sich den Overhead leisten können, ist RAID1 + 0 gut - da gespiegelte Festplatten zwei Lesequellen bieten.
Der größte Teil Ihrer 'Log'-E / A ist sequentielles Schreiben. (zB gut zum Zwischenspeichern und im Gegensatz zu dem, was viele Datenbankadministratoren vorschlagen, möchten Sie wahrscheinlich RAID50 anstelle von RAID10).
Das Verhältnis der beiden ist schwer zu sagen. Kommt darauf an, was die DB macht.
Da zufällige Lese-E / A-Vorgänge der schlechteste Fall für das Caching sind, kommt SSD hier wirklich zur Geltung - viele Hersteller kümmern sich nicht darum, SSD zwischenzuspeichern, da es sowieso ungefähr die gleiche Geschwindigkeit hat. Insbesondere für temporäre Datenbanken und Indizes bietet SSD einen guten Return on Investment.