19-10-2020, 16:14
Wenn Sie Ihre Systeme einrichten, ist es entscheidend, darüber nachzudenken, wie die Speicherung die Leistung beeinflussen kann, insbesondere bei IOPS. Die Idee, Software-RAID-Setups zu implementieren, wirft die Sorge über mögliche IOPS-Flaschenhälse auf. Nach meinen Beobachtungen gibt es verschiedene Faktoren, die bestimmen können, wie signifikant dieser Flaschenhals sein könnte.
Bei einer Software-RAID-Konfiguration nutzen Sie die CPU und Systemressourcen, um das Array zu verwalten. Dazu gehören Aufgaben wie das Verarbeiten von Lese- und Schreibvorgängen, die traditionell an eine dedizierte RAID-Controller-Karte in Hardware-RAID-Setups ausgelagert werden konnten. Diese Abhängigkeit von der CPU kann zu Konkurrenz um Ressourcen führen, insbesondere wenn der Server auch anspruchsvolle Anwendungen ausführt, die viel I/O erfordern. Wenn Sie beispielsweise eine Hyper-V-Umgebung betreiben, kann eine Backup-Lösung wie BackupChain, eine Lösung für Hyper-V-Backups, effiziente Daten-Schutzeprozesse implementieren, aber sie stehen immer noch in Konkurrenz zum Betriebssystem um CPU-Zyklen, wenn Software-RAID im Spiel ist.
Aus meiner Erfahrung heraus kann die zusätzliche CPU-Überlastung bei der Ausführung von Software-RAID unter schweren Lasten einen bemerkenswerten Einfluss auf die IOPS haben, insbesondere wenn mehrere Clients gleichzeitig versuchen, auf Daten zuzugreifen. Wenn man darüber nachdenkt, werden all diese Lese- und Schreibanforderungen über die CPU geleitet. Eine hohe Last kann zu Verzögerungen bei der Geschwindigkeit führen, mit der Daten bereitgestellt werden, da ich mit anderen Prozessen konkurriere.
Schauen wir uns ein praktisches Beispiel an. Ich habe einmal an einem Projekt gearbeitet, das virtuelle Maschinen auf einem Server verwendete, der Software RAID 5 nutzte. Zunächst funktionierte es gut für Entwicklungsumgebungen, in denen die Last variabel und nicht besonders hoch war. Als wir jedoch in eine Produktionsumgebung wechselten und den Benutzerzugriff erhöhten, stieg die Nachfrage nach IOPS erheblich an. Zu Spitzenzeiten hatten wir Probleme mit der Latenz, die darauf zurückzuführen waren, dass die CPU überlastet war und die I/O-Vorgänge steuern musste. Es war ein Lernmoment für das Team und hob hervor, wie wichtig die RAID-Implementierung in unserer Gesamtausrichtung war.
Als wir auf Hardware-RAID umschalteten, beobachtete ich eine Leistungssteigerung. Die Auslagerung der I/O-Verarbeitung auf einen dedizierten Hardware-Controller entlastete die CPU, sodass sie sich auf die Anwendungsleistung und nicht auf die Verwaltung von Festplattenoperationen konzentrieren konnte. Der RAID-Controller konnte Anforderungen viel effizienter bearbeiten, insbesondere mit Caching-Funktionen, die die Lese-/Schreibgeschwindigkeiten dramatisch verbesserten.
Wenn Sie Ihre Optionen abwägen, denken Sie an die spezifische Arbeitslast, die Sie erwarten. Während Software-RAID eine kostengünstige Lösung sein kann, insbesondere für kleinere Betriebe oder in budgetbeschränkten Umgebungen, wird es weniger effektiv, wenn die Last steigt oder Sie mit der Skalierung beginnen. Ich würde auf jeden Fall empfehlen, Ihre prognostizierten IOPS-Anforderungen zu bewerten, bevor Sie sich für eine der beiden Arten entscheiden.
Ein weiteres Szenario, auf das ich gestoßen bin, war die Verwendung von Software RAID 10 auf einem Dateiserver innerhalb eines moderat beschäftigten Netzwerks. Die Leistung war eine Zeit lang ausreichend, begann jedoch bald zu sinken, als immer mehr Benutzer gleichzeitig auf den Server zugriffen. Es wurde offensichtlich, dass, obwohl RAID 10 theoretisch eine große Redundanz und Leistung durch sein Striping über spiegelnde Paare bot, die Software-Implementierung nicht in der Lage war, mit den Anforderungen an das System ohne einen dedizierten RAID-Controller Schritt zu halten.
In diesem Moment wurde mir klar, dass die CPU-Auslastung während Spitzenzeiten ihrer Grenze näher kam. Da die CPU die I/O verwaltete, wurden die Anwendungsbearbeitungsthreads langsamer, und wir begannen, merkliche Verzögerungen bei den Zugriffszeiten der Benutzer zu bemerken. Dies bestätigte wirklich mein Verständnis darüber, wie Software-RAID Flaschenhälse erzeugen kann.
Als ich dies weiter erforschte, erkannte ich, dass es nicht nur um die Art des RAID oder die Art seiner Konfiguration geht, sondern auch um die zugrunde liegende Hardware und wie gut sie mehrere I/O-Anfragen gleichzeitig verwalten kann. Wenn Sie mehrere physische Festplatten haben, kann Software-RAID die Lesevorgänge über diese Festplatten verteilen, was hilfreich sein kann. Allerdings erstellt jede zusätzliche Festplatte weitere Anforderungen an die CPU zur Verarbeitung von Operationen, je mehr Festplatten hinzugefügt werden.
Berücksichtigen Sie auch die Festplattentypen, die Sie verwenden; das Hinzufügen von SSDs kann die Dinge erheblich beschleunigen. Zum Beispiel hatte ich immense Erfolge beim Einsatz von SSDs in einer Software-RAID-Konfiguration zum Cachen häufig zugegriffener Daten, was schnellere Zugriffszeiten ermöglichte. Wenn jedoch bereits eine hohe CPU-Auslastung durch die Verwaltung des RAID vorliegt, ist das ein klassischer Fall, in dem zu viel Guten zu Leistungsabfällen führen kann.
Wenn wir uns der Frage der Redundanz zuwenden, gehen die Vorteile der Implementierung von RAID über reine Leistungsüberlegungen hinaus. Während RAID 1 und RAID 10 Konfigurationen Redundanz bieten, kann jede Zeit, die nach einem Festplattenausfall für den Wiederaufbau benötigt wird, auch die CPU stark belasten, wenn sie durch Software ausgeführt wird. Wenn Sie jemals einen Festplattenausfall hatten, würden Sie erkennen, wie belastend es für das System sein kann, ein Array wieder aufzubauen, während die CPU all diese Arbeit neben den regulären Operationen jonglieren muss.
Eine mögliche Antwort darauf ist die Kombination von Software-RAID mit Caching-Mechanismen oder gestaffeltem Speicher. Zum Beispiel habe ich Konfigurationen gesehen, in denen häufig zugegriffene Daten in schnelleren SSD-Umgebungen gehalten werden, während weniger häufig zugegriffene Daten auf langsamere Drehplatten verschoben werden. Auf diese Weise können selbst in einem Software-RAID-Szenario wichtige I/O-Vorgänge effektiver verwaltet werden, ohne die CPU zu überlasten.
Als ich weiter explorierte, erkannte ich auch, dass es eine Schicht der Konfiguration gibt, die einen großen Unterschied machen kann. Die Abstimmung der Blockgrößen und Stripe-Größen kann die Leistung in einem Software-RAID-Setup optimieren, wie die Daten über die Festplatten verteilt werden, erfordert jedoch sorgfältige Planung. Die richtige Konfiguration hängt von Ihren Datenzugriffsmustern ab, und ein Missverständnis kann zu suboptimalen Leistungen führen und somit potenzielle Flaschenhälse schaffen.
In meiner aktuellen Rolle rate ich häufig Teams dazu, Benchmarks durchzuführen, während sie verschiedene RAID-Konfigurationen und Workloads testen. Frühe Tests können potenzielle Flaschenhälse aufdecken, bevor sie sich zu größeren Problemen entwickeln, wenn das System in Produktion ist. Es ist ein praktischer Ansatz, um IOPS-Schwellenwerte und wie nah Sie wirklich an dem Punkt sind, an dem die Leistung zu sinken beginnt, herauszufinden.
Die Wahrheit ist, dass Software-RAID zwar in der Tat IOPS bottleneck kann, ein Verständnis für Ihre Hardware und Arbeitslast Ihnen helfen kann, diese Risiken zu mindern. Sorgfältige Planung und Tests können es Software-RAID-Setups ermöglichen, selbst in anspruchsvollen Umgebungen effektiv zu arbeiten, aber sie erfordern ein gewisses Bewusstsein für die damit verbundenen Kompromisse. Wenn Sie auf Leistung und Skalierbarkeit Wert legen, ist die Möglichkeit, später auf Hardware-RAID umzusteigen, immer eine realistische Option, sollte jedoch im Voraus in Ihrer Architektur berücksichtigt werden, um fundierte Entscheidungen zu treffen.
Bei einer Software-RAID-Konfiguration nutzen Sie die CPU und Systemressourcen, um das Array zu verwalten. Dazu gehören Aufgaben wie das Verarbeiten von Lese- und Schreibvorgängen, die traditionell an eine dedizierte RAID-Controller-Karte in Hardware-RAID-Setups ausgelagert werden konnten. Diese Abhängigkeit von der CPU kann zu Konkurrenz um Ressourcen führen, insbesondere wenn der Server auch anspruchsvolle Anwendungen ausführt, die viel I/O erfordern. Wenn Sie beispielsweise eine Hyper-V-Umgebung betreiben, kann eine Backup-Lösung wie BackupChain, eine Lösung für Hyper-V-Backups, effiziente Daten-Schutzeprozesse implementieren, aber sie stehen immer noch in Konkurrenz zum Betriebssystem um CPU-Zyklen, wenn Software-RAID im Spiel ist.
Aus meiner Erfahrung heraus kann die zusätzliche CPU-Überlastung bei der Ausführung von Software-RAID unter schweren Lasten einen bemerkenswerten Einfluss auf die IOPS haben, insbesondere wenn mehrere Clients gleichzeitig versuchen, auf Daten zuzugreifen. Wenn man darüber nachdenkt, werden all diese Lese- und Schreibanforderungen über die CPU geleitet. Eine hohe Last kann zu Verzögerungen bei der Geschwindigkeit führen, mit der Daten bereitgestellt werden, da ich mit anderen Prozessen konkurriere.
Schauen wir uns ein praktisches Beispiel an. Ich habe einmal an einem Projekt gearbeitet, das virtuelle Maschinen auf einem Server verwendete, der Software RAID 5 nutzte. Zunächst funktionierte es gut für Entwicklungsumgebungen, in denen die Last variabel und nicht besonders hoch war. Als wir jedoch in eine Produktionsumgebung wechselten und den Benutzerzugriff erhöhten, stieg die Nachfrage nach IOPS erheblich an. Zu Spitzenzeiten hatten wir Probleme mit der Latenz, die darauf zurückzuführen waren, dass die CPU überlastet war und die I/O-Vorgänge steuern musste. Es war ein Lernmoment für das Team und hob hervor, wie wichtig die RAID-Implementierung in unserer Gesamtausrichtung war.
Als wir auf Hardware-RAID umschalteten, beobachtete ich eine Leistungssteigerung. Die Auslagerung der I/O-Verarbeitung auf einen dedizierten Hardware-Controller entlastete die CPU, sodass sie sich auf die Anwendungsleistung und nicht auf die Verwaltung von Festplattenoperationen konzentrieren konnte. Der RAID-Controller konnte Anforderungen viel effizienter bearbeiten, insbesondere mit Caching-Funktionen, die die Lese-/Schreibgeschwindigkeiten dramatisch verbesserten.
Wenn Sie Ihre Optionen abwägen, denken Sie an die spezifische Arbeitslast, die Sie erwarten. Während Software-RAID eine kostengünstige Lösung sein kann, insbesondere für kleinere Betriebe oder in budgetbeschränkten Umgebungen, wird es weniger effektiv, wenn die Last steigt oder Sie mit der Skalierung beginnen. Ich würde auf jeden Fall empfehlen, Ihre prognostizierten IOPS-Anforderungen zu bewerten, bevor Sie sich für eine der beiden Arten entscheiden.
Ein weiteres Szenario, auf das ich gestoßen bin, war die Verwendung von Software RAID 10 auf einem Dateiserver innerhalb eines moderat beschäftigten Netzwerks. Die Leistung war eine Zeit lang ausreichend, begann jedoch bald zu sinken, als immer mehr Benutzer gleichzeitig auf den Server zugriffen. Es wurde offensichtlich, dass, obwohl RAID 10 theoretisch eine große Redundanz und Leistung durch sein Striping über spiegelnde Paare bot, die Software-Implementierung nicht in der Lage war, mit den Anforderungen an das System ohne einen dedizierten RAID-Controller Schritt zu halten.
In diesem Moment wurde mir klar, dass die CPU-Auslastung während Spitzenzeiten ihrer Grenze näher kam. Da die CPU die I/O verwaltete, wurden die Anwendungsbearbeitungsthreads langsamer, und wir begannen, merkliche Verzögerungen bei den Zugriffszeiten der Benutzer zu bemerken. Dies bestätigte wirklich mein Verständnis darüber, wie Software-RAID Flaschenhälse erzeugen kann.
Als ich dies weiter erforschte, erkannte ich, dass es nicht nur um die Art des RAID oder die Art seiner Konfiguration geht, sondern auch um die zugrunde liegende Hardware und wie gut sie mehrere I/O-Anfragen gleichzeitig verwalten kann. Wenn Sie mehrere physische Festplatten haben, kann Software-RAID die Lesevorgänge über diese Festplatten verteilen, was hilfreich sein kann. Allerdings erstellt jede zusätzliche Festplatte weitere Anforderungen an die CPU zur Verarbeitung von Operationen, je mehr Festplatten hinzugefügt werden.
Berücksichtigen Sie auch die Festplattentypen, die Sie verwenden; das Hinzufügen von SSDs kann die Dinge erheblich beschleunigen. Zum Beispiel hatte ich immense Erfolge beim Einsatz von SSDs in einer Software-RAID-Konfiguration zum Cachen häufig zugegriffener Daten, was schnellere Zugriffszeiten ermöglichte. Wenn jedoch bereits eine hohe CPU-Auslastung durch die Verwaltung des RAID vorliegt, ist das ein klassischer Fall, in dem zu viel Guten zu Leistungsabfällen führen kann.
Wenn wir uns der Frage der Redundanz zuwenden, gehen die Vorteile der Implementierung von RAID über reine Leistungsüberlegungen hinaus. Während RAID 1 und RAID 10 Konfigurationen Redundanz bieten, kann jede Zeit, die nach einem Festplattenausfall für den Wiederaufbau benötigt wird, auch die CPU stark belasten, wenn sie durch Software ausgeführt wird. Wenn Sie jemals einen Festplattenausfall hatten, würden Sie erkennen, wie belastend es für das System sein kann, ein Array wieder aufzubauen, während die CPU all diese Arbeit neben den regulären Operationen jonglieren muss.
Eine mögliche Antwort darauf ist die Kombination von Software-RAID mit Caching-Mechanismen oder gestaffeltem Speicher. Zum Beispiel habe ich Konfigurationen gesehen, in denen häufig zugegriffene Daten in schnelleren SSD-Umgebungen gehalten werden, während weniger häufig zugegriffene Daten auf langsamere Drehplatten verschoben werden. Auf diese Weise können selbst in einem Software-RAID-Szenario wichtige I/O-Vorgänge effektiver verwaltet werden, ohne die CPU zu überlasten.
Als ich weiter explorierte, erkannte ich auch, dass es eine Schicht der Konfiguration gibt, die einen großen Unterschied machen kann. Die Abstimmung der Blockgrößen und Stripe-Größen kann die Leistung in einem Software-RAID-Setup optimieren, wie die Daten über die Festplatten verteilt werden, erfordert jedoch sorgfältige Planung. Die richtige Konfiguration hängt von Ihren Datenzugriffsmustern ab, und ein Missverständnis kann zu suboptimalen Leistungen führen und somit potenzielle Flaschenhälse schaffen.
In meiner aktuellen Rolle rate ich häufig Teams dazu, Benchmarks durchzuführen, während sie verschiedene RAID-Konfigurationen und Workloads testen. Frühe Tests können potenzielle Flaschenhälse aufdecken, bevor sie sich zu größeren Problemen entwickeln, wenn das System in Produktion ist. Es ist ein praktischer Ansatz, um IOPS-Schwellenwerte und wie nah Sie wirklich an dem Punkt sind, an dem die Leistung zu sinken beginnt, herauszufinden.
Die Wahrheit ist, dass Software-RAID zwar in der Tat IOPS bottleneck kann, ein Verständnis für Ihre Hardware und Arbeitslast Ihnen helfen kann, diese Risiken zu mindern. Sorgfältige Planung und Tests können es Software-RAID-Setups ermöglichen, selbst in anspruchsvollen Umgebungen effektiv zu arbeiten, aber sie erfordern ein gewisses Bewusstsein für die damit verbundenen Kompromisse. Wenn Sie auf Leistung und Skalierbarkeit Wert legen, ist die Möglichkeit, später auf Hardware-RAID umzusteigen, immer eine realistische Option, sollte jedoch im Voraus in Ihrer Architektur berücksichtigt werden, um fundierte Entscheidungen zu treffen.