(auf Google+ gepostet 07/2014)
Heutzutage sind Engpässe bei Dateiservern oft eher auf die Speicherleistung als auf die CPU-Leistung zurückzuführen. Dieser Artikel beschreibt Überlegungen zur Leistung und Zuverlässigkeit bei der Verwendung von RAID-Speicher, der mit einem Server verbunden ist. Das Ergebnis unserer Leistungsüberlegungen gilt für die meisten Server-Setups und ist unabhängig vom verwendeten Speichersystem und der Serverhardware sowie davon, ob der Server ein natives Betriebssystem oder eine VM-Serverumgebung wie VMWare ESX oder Microsoft Hyper-V mit mehreren VMs betreibt.
Überlegungen zum RAID-Level
In unserem Fall betreiben wir 24 Festplatten in einem RAID-Gehäuse/-Controller. Perfekt wäre es, nur RAID-1-gespiegelte Festplatten zu verwenden, d. h. 12 Festplatten, die alle gespiegelt werden. Dies würde zwölf unabhängige I/O-Kanäle bereitstellen, und ein Festplattenausfall würde nur 1/12 des gesamten Speichers betreffen. Solch eine RAID-1-Konfiguration würde allerdings 50% der Speicherkapazität „verschwenden“, und die sequentielle I/O ist auf die Leistung einer einzelnen Festplatte beschränkt.
Ein guter Kompromiss ist die Verwendung von RAID 5 (oder RAID 6) und die Verwendung von so vielen RAID-5-Gruppen wie möglich. Alle 24 Festplatten zu einer einzigen RAID-Gruppe zusammenzufassen, ist ein großer Fehler: Obwohl große RAID-Gruppen eine große sequentielle Lese-/Schreibleistung bieten, ist die Verarbeitung vieler gleichzeitiger (nicht-sequentieller) I/O-Anforderungen fürchterlich langsam. Dies liegt daran, dass jede Anforderung 24 Festplatten synchronisieren muss, bevor sie einen einzelnen Block lesen oder schreiben kann.
Nach umfangreichen Tests haben wir uns für vier RAID-5-Gruppen mit je 5 Festplatten (plus eine Ersatzplatte pro RAID-Gruppe) entschieden. Unsere 15k 300 GB SAS-Festplatten (Serial Attached SCSI) bieten ca. 200 MByte/s mit 1-2 ms Suchzeit. Bei fünf Platten würde die Kapazität pro Gruppe 1,2 TB betragen (nicht 1,5 TB, da RAID 5 die Kapazität der Anzahl der Platten minus 1 bietet). Die maximale sequentielle Lese-/Schreibleistung beträgt bis zu 800 MByte/s für eine RAID 5-Gruppe. Zufällige I/Os wären sinnvoll, da sie nur fünf Festplatten synchronisieren müssen und die drei anderen RAID-Gruppen unabhängige I/Os parallel ausführen können. Ein weiterer Vorteil ist, dass ein Ausfall einer RAID-5-Gruppe nur eine Wiederherstellung von 1,5 TB Daten gegenüber 7 TB mit einer einzigen RAID-5-Gruppe erfordert. Dies ist ein guter Kompromiss; noch besser wäre es allerdings, weniger Festplatten pro RAID-5-Gruppe zu verwenden.
RAID-Zusammenfassung:
Überlegungen zum HBA (Host Bus Adapter)-Controller
Die heutigen Unternehmensfestplatten sind über 6 Gbit/s SAS verbunden, was einen Datendurchsatz von bis zu 600 MByte/s erlaubt. Jeder SAS-Controller verfügt in der Regel über einen oder mehrere Mini-SAS-Host-Bus-Adapter (interne SFF 8087 oder externe SFF 8088 Anschlüsse). Ein SAS-Adapter verfügt über vier SAS-Kanäle mit je 6 Gbit. Ein HBA zu einem externen RAID nutzt alle vier Kanäle parallel über ein einziges Kabel, d. h. er bietet 24 Gbit/s (max. 2400 MByte/s). Das Problem ist, dass bei einer großen Datenmenge, z. B. bei der Sicherung auf Platte, dem Entpacken großer Archive oder dem Kopieren großer Datenmengen, der Controller sehr viele Daten in die Warteschlange stellen kann. Für LSI beträgt die „max_queue_depth“ in der Regel beispielsweise 600 I/O-Anfragen, kann aber noch höher konfiguriert werden. Darüber hinaus kann die I/O-Warteschlange des Betriebssystems Gigabytes an Daten umfassen. Dies bedeutet, dass eine einzelne HBA-Verbindung zum Speicher für viele Sekunden belegt sein kann, da die I/O-Warteschlange so groß ist, dass zusätzliche Anfragen ewig dauern können (z. B. 10 Sekunden Dauer für ein einzelnes ssh-Login oder 120 Sekunden Dauer für das Mounten eines AFP- oder SMB-Servervolumes). Um dieses Problem zu lösen, ist es am besten, mehrere HBA-Verbindungen zum Speicher zu haben. In der Regel verfügt ein RAID über mehrere SAS- oder Fibre-Channel-Ports. Konfigurieren Sie daher jede RAID-Gruppe auf einen dedizierten Port und verwenden Sie mehrere HBAs mit separaten Leitungen zum RAID, vorzugsweise eine Standleitung pro RAID-Gruppe. Das klingt zwar kompliziert, bietet aber die beste Leistung. Die Verwendung nur einer einzigen Leitung zwischen Server und Speicher funktioniert, ist aber ein ziemlicher Engpass, den alle I/Os durchlaufen müssen, was unter hoher Last noch kritischer wird. Wir haben mit mehreren Servern, die sowohl interne als auch externe RAIDs verwenden, über Wochen Tests durchgeführt. Unsere endgültige Konfiguration ist ein externes RAID, das über vier SAS-Leitungen (je 24 Gbit) mit dem Server verbunden ist.
Zusammenfassung:
Überlegungen zur Volumekonfiguration
Für Volumes sprechen wir von Dateisystemen, die als NFS-, AFP- und SMB-Volumes für Clients oder sogar als Speicher für eine VM dienen können. Es wird empfohlen, mehrere Volumes zu verwenden, die jeweils mit einer oder mehreren RAID-Gruppen verknüpft sind. Eine optimale Konfiguration gewährleistet, dass Volumes, die stark ausgelastet sind, verschiedenen RAID-Gruppen zugeordnet werden. Dies bietet unabhängige und parallele I/Os mit hoher Leistung. Ein auf die maximale Größe einer einzelnen RAID-Gruppe begrenzter Datenträger hat den Vorteil, dass Sicherungen und Wiederherstellungen einfacher und schneller durchgeführt werden können. Datenträgerverwaltungen wie LVM2 oder ZFS können jedoch bei Bedarf mehrere RAIDs zu einem einzigen größeren Volume zusammenfassen. All dies ist datei- und betriebssystemunabhängig und gilt für jedes Server-Betriebssystem oder jede VM-Serverumgebung.
Zusammenfassung:
HELIOS Desktop- und Indexserver-Datenbank
Es ist ratsam, die Einstellung „desktoplocation“ zu verwenden, um die Desktop-Datenbanken auf eine separate ungenutzte Platte zu verschieben. Dies hat den Vorteil, dass stark ausgelastete Volumes den Datenbankzugriff nicht verzögern. Ein weiterer Vorteil ist, dass ein Volume ohne Festplattenspeicher (AFP oder SMB) nicht zu Problemen beim Speichern von Datenbankinhalten führt. Die Desktop-Festplatte muss keine Flash-Disk sein, eine einzige ungenutzte Platte für alle Volumes wäre schon perfekt.
Zusammenfassung des Artikels
Die meisten Kunden verbinden wahrscheinlich einfach ihren Speicher mit der Serverhardware und verwenden ein einzelnes RAID, vielleicht sogar noch mit einer separaten Systemfestplatte. Später stellen sie dann unter Umständen fest, dass die Leistung zu wünschen übrig lässt. Für stark ausgelastete Server oder für eine VM-Serverlösung, die mehrere Server in mehreren VMs auf einer einzigen Hardware integriert, ist das Speicherdesign von größter Bedeutung. Selbst bei der ausschließlichen Verwendung von SSD-Festplatten können diese Leistungsdefizite auftreten. Für hochleistungsfähige Serverumgebungen kann es vorteilhaft sein, dedizierte Server mit jeweils eigenem Speicher einzusetzen, um eine vorhersehbare Leistung zu erzielen. Beachten Sie, dass sich die durchschnittliche Zugriffszeit auf die Festplatte in den letzten zwei Jahrzehnten nicht wesentlich verändert hat und dass RAID-Speicher zusätzliche Latenzzeiten bedeuten. Fibre Channel und iSCSI erhöhen die Latenzzeiten weiter. Bedenken Sie auch, dass ein einzelner Server mit einer einzigen Festplatte möglicherweise schneller ist als eine schlecht entwickelte Speicherlösung. Wir haben im Laufe der Jahre viel getestet und ausprobiert. Vor Kurzem haben wir unsere neuen Server ausführlich getestet, bevor diese in Produktion gingen. Dieser ganze Artikel basiert auf unserem Know-how und unserer Erfahrung. Wir hoffen, dass diese Informationen für Sie von Nutzen sind.