Linux Software-RAID für unternehmenskritische Anwendungen

Inhalt

Motivation

Seit den 80er Jahren (Erstes Paper zu RAID,PDF, Carnegie Mellon University) spielt RAID eine Rolle im Serverbetrieb. In den meisten Fällen wird dabei eine Menge von Festplatten durch eine weitere Abstraktionsebene (den RAID-Adapter) als eine Einheit ins Betriebssystem abgebildet (den RAID-Verbund) . Die selbe Funktion kann aber seit mindestens 13 Jahren (Software-RAID für Linux von Ingo Molnar) auch vom Linux-Kernel bewältigt werden.

In Servern und auch Desktops wird immer öfter über ein RAID nachgedacht und die bestehende Meinung in vielen Foren und Magazinen ist, dass in unternehmenskritischen Systemen Hardware-RAID besser geeignet ist, als Software-RAID. Stimmt das so, oder vollzieht sich eine Wende in diesem Bereich?

Probleme mit Hardware-RAID

Mit steigender Leistung von Prozessoren und steigendem Durchsatz von Arbeitsspeicher kann sich der Geschwindigkeitsunterschied zwischen RAID-Adaptern und Software-RAID relativieren. Die Vermutung, dass ein ausreichend schneller Prozessor mit genügend Arbeitsspeicher die notwendigen Operationen schneller ausführen kann, ist nicht neu (ZDNET: Can software RAID be faster than hardware RAID?).

Leider lassen die Entwickler von RAID (Patterson, Gibson und Katz) in ihrem Paper aus 1987 offen, welchem Standard das Format der Paritätsdaten (Sicherungsdaten) zu folgen hat. Das verkompliziert die im Desaster-Fall notwendigen Aufgaben für RAID-Verbünde mit Paritätsdaten. Ein Austausch des RAID-Adapters kann durch fehlende Interoperabilität zwischen den Herstellern unmöglich sein. Auch ein Austausch des RAID-Adapters gegen ein neueres Modell kann nach mehreren Jahren schon den Neuaufbau eines RAIDs erzwingen. Außerdem ist der Funktionsumfang der Hardware-RAID Adapter bestenfalls auf die zur Verfügung stehende Hardware begrenzt. Funktionen die andere Hardware benötigen oder bei der Entwicklung nicht bedacht wurden, können oder sollen im Nachhinein nicht hinzugefügt werden.

Eine weitere Gegenüberstellung von Software- und Hardware-RAID finden Sie hier: RedHat, engl.

Eigenschaften von Hardware-RAID

Jedes RAID ist auch ein Software-RAID, das Algorithmen ausführt. Allein der Ort, an dem es geschieht ist unterschiedlich. Klassische RAID-Adapter verfügen über einige Kernkomponenten die sie weniger anfällig und schneller im Vergleich zu Software-RAID machen sollen.

Dazu gehört ein eigener Speicher, um die notwendigen Berechnungen auszuführen. Viel RAID-Adapter verfügen auch über einen Spezialprozessor, der nur die RAID-Operationen ausführt, wie auch eine Pufferbatterie, um im Falle eines Stromausfalls den Speicherinhalt und RAID-Zustand nicht zu verlieren. Eine XOR-Engine um das Berechnen von Paritätsdaten zu beschleunigen ist auch oft verbaut.

Probleme mit Software-RAID

Software-RAID unter Linux unterliegt nicht den Limitierungen durch die RAID-Adapter Hardware oder die Firmware, erbt aber die Eigenschaften des Hosts, auf dem es betrieben wird. Im direkten Vergleich mit einem RAID-Adapter fallen einige konzeptuelle “Nachteile” von Software-RAID auf.

Ein Software-RAID muss die Festplatten direkt ansprechen. Das führt im Vergleich zu erhöhter Belastung des Systembusses. Besonders deutlich wird diese Schwäche bei großen RAID-5 Systemen. Eine E/A-Operation muss mindestens an alle Festplatten des Verbunds gesendet werden, dazu kommen die E/A-Operationen zum speichern der Paritätsdaten. Dem RAID-Adapter wird nur die eine E/A-Operation gesendet.

Durch aktuelle Hardware ist der Systembus immer weniger ein Flaschenhals. Es könnten bei einem angenommenen Durchsatz von ungefähr 6 Gigabit/sec einer modernen SATA-Festplatte mehr als 80 Festplatten an einem PCI-Express 2.0 Bus mit vier Lanes (PCIe x4) oder mehr als 300 Festplatten an einen PCI-Express Bus mit sechzehn Lanes (PCIe x16) angebunden werden, bevor die Kapazitätsgrenze des Busses erreicht ist.

Außerdem muss der Prozessor mit allen Anwendungen geteilt werden. Das hat zur Folge, dass die RAID-Operationen möglicherweise nicht vorhersehbare Laufzeiten haben, weil rechenintensive Prozesse die CPU blockieren. Die Vorhersagbarkeit des RAID-Durchsatzes lässt sich mit Prozess-Priorisierung eindämmen oder durch Hardware-Skalierung auf modernen Mehrkern-Prozessoren lösen.

Weiter hat ein Software-RAID keine Pufferbatterie für Zwischenspeicher. Dieser Nachteil kann durch eine Unterbrechungsfreie Stromversorgung oder durch ein robustes Journaling-Dateisystem wie XFS ausgeglichen werden.

Die gerade genannten Nachteile lassen sich weiter relativieren, wie im Artikel von Robin Harris dargestellt, sollten aber bedacht werden.

Eigenschaften von Software-RAID

Software-RAID kann aber nicht nur als Ersatz für Hardware-RAID eingesetzt werden, sondern bringt eine Reihe von Vorteilen mit sich, weil es flexibel ist.

Besonders hervorzuheben sind die folgenden Eigenschaften:

  • Abwärtskompatibel: Software-RAID im aktuellen Linux-Kernel 2.6 kann auch RAID-Verbünde einbinden, die zu Zeiten von Kernel 2.2 oder früher erstellt wurden.
  • Aufwärtskompatibel: Je nach verwendetem Metadaten-Format lassen sich auf einem aktuellen System erstelle RAID-Verbünde in alten Kernel-Versionen einbinden.
  • Vergrößern: Wie bei vielen Hardware-RAID Adaptern möglich.
  • Reshaping: Ein Verbund kann das RAID-Level wechseln. Zum Beispiel von RAID-5 auf RAID-6, oder von RAID-1 auf RAID-5

    Neben diesen besonders interessanten Funktionen bringt Software-RAID einige weitere mit, die im Unternehmensumfeld heute und in Zukunft sehr von Vorteil sind. Dazu gehört die Quelloffenheit, um im Problemfall nicht vom Hersteller abhängig zu sein und die Übertragbarkeit der konkreten Administrations-Prozesse. Gerade das spart Schulungskosten.Und natürlich verringert es letzten Endes auch die Anschaffungskosten.

    Zukunft

    Die Vergangenheit hat gezeigt, dass es einen Trend zur Abstraktion gibt. Programme werden nicht mehr in Assembler implementiert und Funktionen wie Gleitkomma-Operationen werden im Prozessor erledigt. Darum scheint es sehr wahrscheinlich, dass in Zukunft auch RAID-Funktionen nicht mehr von spezialisierter Hardware erledigt werden müssen. Mit den Vorteilen der Verwaltbarkeit und Verfügbarkeit von Software-RAID befasst sich auch eine bereits 2001 veröffentliche Master-Arbeit.

    Weiterführender Lesestoff zu Linux Software-RAID:
    Benchmark: HW-RAID vs. Linux SW-RAID (Englisch)
    Benchmark: HW-RAID vs. Linux SW-RAID (Englisch, 2004)
    Benchmarks: Linux RAID Wiki
    Benchmarks: HW-RAID, SW-RAID und einzelne Festplatten (Englisch, 2003)
    Software-RAID HowTO (Englisch, 1999)
    Master-Arbeit: Towards Availability and Maintainability Benchmarks (Englisch, 2001)
    Fallstudie: SW-RAID Fortschritt zwischen Linux 2.4.26 und 2.6.8 (Englisch)
    Webseite des Linux Software-RAID Maintainers N. Brown (Englisch)

  • 5 comments

    Hinterlasse eine Antwort

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

    Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>