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”).
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 |
|---|
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 |
|---|
|
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:
|
|
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] |







