Hotplug-Fähigkeit von SATA-Raids

© photocase.com

Der Serial-ATA-Bus ist von Haus aus Hotplug-fähig. Wer aber glaubt, dass jeder SATA-Controller diese Eigenschaft erbt und man im laufenden Betrieb Platten entfernen und einstecken darf, hat weit gefehlt.

Serial ATA (SATA) ist der natürliche Nachfolge-Standard des seit über einem Jahrzehnt bewährten, 16 Bit breit übertragenden ATA, der zur besseren Unterscheidung heute gern Parallel ATA (PATA) genannt wird. Auf nahezu allen Motherboards neueren Typs prangen serienmäßig zwei bis acht SATA-Anschlüsse. SATA erreicht höhere Datentransferraten als PATA, seine Kabelführung ist praktischer [1] und er gestattet es, Geräte im laufenden Betrieb auszutauschen (siehe Kasten “SATA vs. PATA”).

SATA vs. PATA

Da der Bus seriell organisiert ist, reicht für SATA ein flexibles Kabel mit sieben Leitungen, an deren Enden flache, 8 Millimeter breite, verpolungssichere Stecker sitzen (siehe Abbildung 1). Seit SATA 2.0 besitzen die Stecker einen Verriegelungsclip. Interne SATA-Kabel dürfen bis zu 1 Meter lang sein, externe 2 Meter. Die schlanken Kabel behindern im PC- oder Server-Gehäuse im Vergleich zu dem P-ATA-Flachbandkabeln den kühlenden Luftfluss ungleich weniger. Auch lassen sich Laufwerke zeitverzögert einschalten, um das Netzteil zu entlasten (Staggered Spinup).

SATA benutzt statt des Master-Slave-Konzepts von Parallel-ATA die Punkt-zu-Punkt-Verbindungen: Jedes Gerät hat sein eigenes Kabel. Der Vorteil gegenüber dem parallelen ATA-Bus ist, dass Laufwerke Daten übertragen, ohne einander am Bus zu blockieren. Engpässe entstehen allenfalls beim Host-Adapter oder dem Datenbus der Hauptplatine. (Außer man setzt einen Port-Multiplier ein, um viele Geräte an einem Kabel anzuschließen. Die Laufwerke teilen sich die verfügbare Übertragungsbandbreite.)

Abbildung 1: Die Serial-ATA-Spezifikation definiert zwei neue Anschlüsse für Daten (links) und Stromversorgung (rechts); hier die Aufnahme einer Seagate Barracuda SATA V, die auf dem Kopf liegt.

Abbildung 1: Die Serial-ATA-Spezifikation definiert zwei neue Anschlüsse für Daten (links) und Stromversorgung (rechts); hier die Aufnahme einer Seagate Barracuda SATA V, die auf dem Kopf liegt.

Heiß her

Die Spezifikation umfasst auch Hotplugging, also das Anschließen und Abziehen aller Kabel beim Betrieb. Dazu sieht die Spezifikation vor, dass beim Einstecken des Stromkabels zuerst die Masseleitungen an Pin 4 und 12 Verbindung erhalten, danach die so genannten Pre-Charge-Leitungen der drei Spannungen (Pins 3, 7 und 13) zusammen mit den restlichen Masseleitungen, schließlich die übrigen Pins. Beim Datenkabel werden erst alle Masseleitungen und danach die Datenleitungen verbunden.

Ein anderes Hochverfügbarkeits-Feature ist der so genannte Port-Selector, der zwei Rechnern das Schalten zwischen redundanten Übertragungsstrecken auf eine Festplatte erlaubt. Die beiden Rechner müssen allerdings selbst bestimmen, wer aktiv ist.

Im Jahr 2002 einigten sich mehrere Firmen auf die Spezifikation Serial ATA 1.0 mit einem Datendurchsatz bis 150 MByte/s. SATA 2.0, das seit Anfang 2005 auf dem Markt ist, schafft maximal 300 MByte/s (auch als “SATA 3.0 Gbps” vermarktet). SATA 2.0 gestattet es Controllern und Massenspeichern, Schreib- und Lesevorgänge durch so genanntes Native Command Queuing zu optimieren (NCQ).

Unabhängig von SATA 1.0 oder 2.0 können die gleichen Kabel verwendet werden. Auch müssen nicht alle 2.0-Geräte alle Features und Geschwindigkeiten der offiziellen Spezifikation zwingend implementieren.

Dass SATA von Haus aus Hotplug-fähig ist, versetzt die Besitzer von Geräten der externen Variante E-SATA in die Lage, ihre Geräte im laufendem Betrieb ein- und ausstöpseln zu dürfen. Noch mehr Bedeutung kommt Hotplug aber im Zusammenhang mit SATA-Raids zu. Denn natürlich liegt es im Interesse eines jeden Administrators, ausgefallene Platten schnell im laufenden Betrieb wechseln zu können, um die Verfügbarkeit hoch zu halten. Doch um es gleich vorweg zu sagen: Die Sache ist so einfach nicht, der Teufel steckt wie immer im Detail, und zwar im Treiber.

Um auf der sicheren und unkomplizierten Seite zu sein, lohnt es sich, über die Anschaffung einer industriell gefertigten Storage-Appliance mit SATA-Raid nachzudenken, wie sie beispielsweise Accusys, American Megatrends, EMC, Fujitsu Siemens, Starline Computer, Storcase, Topmedia, Transtec und viele andere anbieten.

Um ein internes, Hotplug-fähiges Raid aufzubauen, ist zunächst einiges an Recherche nötig. Dieser Artikel fasst die Ergebnisse einer solchen zusammen.

Falsche und echte

Zunächst sind unechte und echte Raidcontroller zu unterscheiden. Letztere sitzen auf separaten Controllerplatinen, besitzen ein eigenes Bios und verwalten den Plattenverbund autonom. Die unechten, auch Fake- oder Software-Raid genannt, bürden dem Betriebssystem große Teile der Verwaltungsarbeit auf. Oft gaukelt das Rechner-Bios die Existenz eines Onboard-Raidcontrollers vor – in 99 Prozent der Fälle handelt es sich aber um ein Software-Raid.

Eine besondere Tücke für den Admin (und den IT-Beschaffer) geht von den Einsteckkarten aus, die sich als echte Hardware-Raidcontroller ausgeben, in Wirklichkeit aber Linux ein Software-Raid abverlangen. Fatalerweise sind das keine Einzelfälle, die falschen Fuffziger bilden die Mehrheit am Markt. Hinweise zur korrekten Unterscheidung kommen selten von den Herstellern selbst, sondern von Testberichten wie [2] und [3] oder Spezialseiten wie [4] und [5].

Alte und neue

Der Linux-Kernel enthält zwei konkurrierende ATA-Treibersets: Zum einen das traditionelle in »drivers/ide«, das Bartlomiej Zolnierkiewicz pflegt. Sein Vorgänger war Andre Hedrick. Entgegen der landläufigen Auffassung enthält es Low-Level-Treiber für viele gängige SATA-Controllerchips (in der Kernelkonfiguration unter »Device Drivers | ATA/ATAPI/MFM/RLL support | Support for SATA«). Auf diesen Layer lässt sich ein herstellerspezifisches Software-Raid aufsetzen, das unter der Ägide des Bios steht. Im 2.4er Kernel braucht es dafür das Treiberset Ataraid, das für mehrere Hersteller das jeweils passende Raid-Schema arrangiert. Seit Kernel 2.4.23 funktioniert das Ganze recht gut.

Wer die »drivers/ide«-ATA-Treiber aus Kernel 2.6 benutzt und ein Software-Raid aufbaut, braucht das Treiberset Dmraid (Device Mapper Raid, [6]). In [7] sind übrigens Live-CDs erwähnt, die mit Dmraid-Support starten und Reparaturarbeiten oder Backups auch von Windows-Systemen gestatten, die mit Bios-gesteuerten Software-Raids arbeiten.

Solche und solche

Die Konkurrenz zu »drivers/ide« ist Libata [8]. Dieses neuere Treiberset entstand extra für SATA. Maintainer ist Jeff Garzik. Zwar eignet sich der Code prinzipiell auch für PATA, er beißt sich aber mit dem aus »drivers/ide«. Libata greift auf den SCSI-Layer im Kernel zurück und residiert konsequent auch unter »Device Drivers | SCSI device support | SCSI low-level drivers«. Für den Anwender stellen sich SATA-Geräte darum wie SCSI-Geräte dar.

Libata ist ein Kind des Kernels 2.6, seit Kernel 2.4.27 gibt es aber einen Backport. Zusammen mit Libata kommen Chipsatz-spezifische Low-Level-Treiber, deren Namen, Produktionsstand und Features Tabelle 1 zeigt. Zum Einrichten eines Raid an einem Libata-Controller und für alle Wartungsarbeiten dienen die Raid-Tools oder Mdadm.

Tabelle 1: Libata-Treiber und
ihre Features

Echte Hardware-Raid-Karten benutzen Treiber, die weder »drivers/ide« noch Libata zuzuordnen sind. Sie tragen Bezeichnungen in der Kernelkonfiguration, die auf den Hersteller oder die Produkte hindeuten, zum Beispiel »3w-xxxx« und »3w-9xxx« (3Ware-Open-Source-SCSI-Treiber), »aacraid«, »cciss«, »dac960«, »dpt_i2o«, »gdth«, »hptiop«, »ips«, »megaraid«, »megaraid2«, »megaraid_mbox« (»megaraid-newgen« oder »mpt*«) [9]. Das Einrichten und Warten des Raid sowie alle Aktionen, die mit einem Plattentausch infolge Ausfall zu tun haben, erledigt der Admin mit Controller-spezifischen Kommandozeilentools oder einem entsprechenden integrierten Frontend.

Hotplug-Fähigkeit und -Unterstützung

Die meisten SATA-Controller sind Hotplug-fähig, wenn ihr Systembus (meist PCI) selbst auch Hotplug-fähig ist. SATA-Devices beherrschen sowieso alle Hotplug. So wurde im Linux-Magazin-Testlabor gerade der erste SATA-DVD-Brenner gesichtet. Doch es gibt Ausnahmen zu beklagen: Controller, die mit Intels ICH 5 bis 8 (nicht »ahci«) arbeiten, der Pacific Digital Talon (»pdc_adma«) oder Promise SATA SX4 (»sata_sx4«) unterstützen das heiße Rein-Raus nicht und werden es auch niemals tun.

Sie liefern nämlich nicht genug Statusinformationen, um Linux über das Entfernen und Anklemmen von Devices in Kenntnis zu setzen. Wer vorhat ein Gerät austauschen, muss dem Treiber den Wunsch per Kommando mitteilen – den Namen Hotplug verdient das nicht.

Bei der Linux-Unterstützung von SATA-Hotplug sind zu unterscheiden:

  • Echte Hardware-Raidcontroller verarbeiten Hotplug-Aktionen
    intern. Entfernt also jemand eine Platte, merkt das die Firmware
    und reagiert entsprechend. Nach außen ändert sich auch
    beim Ausfall einer Platte nichts – alle (emulierten)
    SCSI-Devices verhalten sich normal. Sollte doch eine Änderung
    auftreten, zum Beispiel weil der Admin das Raid massiv
    aufrüstet und so ein »/dev/sdb« entsteht, greifen
    die bekannten Linux-internen SCSI-Hotplug-Mechanismen.
  • SATA-Controller, am Kernel 2.4 mit
    »drivers/ide«-Support betrieben, kommen nicht in den
    Genuss von Hotplug, da ein sauberes Hotplug für PATA nicht
    vorgesehen ist.
  • Bei SATA-Controllern mit Libata-Support funktioniert Hotplug,
    außer die Hardware liefert nicht genug Statusinformationen
    (siehe oben) oder der herstellerspezifische Treiber ist noch nicht
    so weit (siehe Tabelle 1). Wer sich als Controllerbesitzer an einer
    günstigen Kombination freuen kann, profitiert dann wieder vom
    SCSI-Hotplugging, denn Libata bildet alles auf SCSI ab.

Alles fließt

Ein internes Hotplug-fähiges SATA-Raid aufsetzen erfordert, die Hardware klug auszuwählen und die neueste Software einzusetzen. Die letzte Forderung visiert zudem ein bewegliches Ziel an. Seit längerem ändert sich von einer Kernelversion zur nächsten viel an den SATA-Treibern – in der Regel sind es Verbesserungen. Da heißt es auch für Admins, denen das Kunststück gelungen ist, ein Raid in Betrieb zu nehmen, stets am Ball zu bleiben – die in diesem Artikel genannten Links werden zum großen Teil liebevoll gepflegt. Als Lohn der Mühe winken Performance-Verbesserungen oder eine neue Teilfunktionalität.

Booten von
SATA-Geräten

Der Zugriff auf SATA-Laufwerke erfolgt bei den meisten Kernel-2.6-basierten Distributionen per SCSI-Layer, der sich selber beim darunter liegenden Hardware-nahen Libata-Treiber bedient. Das ist unproblematisch, wenn man nicht mit einem modularen Standardkernel von einer SATA-Platte booten muss.

Zwar hat zum Bootzeitpunkt das Bios die Regie – es gestattet den generischen Zugriff auf die Platte. Nachdem der Bootloader (Grub oder Lilo) aber einen Kernel oder einen Kernel und eine Initrd (Initial RAM-Disk) geladen hat, überlässt der Loader die Kontrolle dem Kernel. Der nun startende Kernel besitzt aber keine SATA- und SCSI-Treiber. Die möchte er dynamisch nachladen, doch seine Module liegen selber auf dem SATA-Device. Zwei Wege führen aus dem Henne-Ei-Dilemma:

  • Das für den vorliegenden Chipsatz passende SATA-Modul
    statisch in den Kernel einkompilieren.
  • Das für den Chipsatz passende SATA-Modul (oder gleich
    mehrere SATA-Module) in die Initrd integrieren.

Infos

[1] Holger Lubitz, “Serial ATA – ein kurzer Überblick über die Technik”: Linux-Magazin 07/03, S. 60

[2] Mirko Dölle, “SATA-Controller mit Raid-5-Unterstützung unter Kernel 2.6 im Test”: Linux-Magazin 11/04, S. 44

[3] Mirko Dölle, “Drei Serial-ATA-Raid-Controller im Test”: Linux-Magazin 07/03, S. 54

[4] SATA-Chipsets – Linux-Support: [http://linuxmafia.com/faq/Hardware/sata.html]

[5] FAQ Linux SATA Raid: [http://linux-ata.org/faq-sata-raid.html]

[6] Device Mapper (DM) und Dmraid – Software und Readme-Datei: [http://people.redhat.com/~heinzm/sw/dmraid/]

[7] Bios-Raid-Support auf Linux 2.6 mit Dmraid: [http://tienstra4.flatnet.tudelft.nl/~gerte/gen2dmraid/]

[8] Libata-Status: [http://linux-ata.org]

[9] Linux und Hardware-Raid: [http://wiki.debian.org/LinuxRaidForAdmins]

[10] SATA-Treiber-Status:[http://linux-ata.org/driver-status.html]

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben