RAID-Technologie verspricht höhere Performance und mehr Sicherheit beim permanenten Speichern von Daten. Die ADMIN-Redaktion gibt einen Überblick über ... (mehr)

Boot-Partition

Der folgende Aufruf startet mit drei zusätzlichen Festplatten die Konvertierung zu einem RAID-5, das die Daten über die Festplatten verteilt, aber durch Parity-Informationen absichert, also hohe Performance und Sicherheit vereint:

raider -R5 sda sdb sdc sdd

Weil es im aktuellen Fall schon eine Boot-Partition gibt, wandelt Raider sie wieder in ein RAID um. Fehlt eine solche Partition, und der Anwender wählt ein anderes RAID als Level 1, ändert Raider die Partitionierung. Weil die Linux-Bootloader üblicherweise nur von RAID-1 booten können, jedenfalls, wenn das RAID degraded ist, legt Raider dann auf jeder neuen Festplatte eine Boot-Partition mit etwa 500 MByte an, die es später zu einem RAID-1 vereint. Fällt eine Platte aus, kann das System also auf jeden Fall von einer der verbliebenen Platten booten. Nach dem Durchlauf des Kommandos muss man wieder den Rechner ausschalten und dieses Mal die erste mit der letzten Festplatte am Bus vertauschen, die anderen beiden können bleiben, wo sie sind.

Nach dem Booten startet »raider --run« wieder den Rebuild des RAID. Weil es bei einem laufenden System keine zwei Volume Groups mit gleichem Namen geben kann, hat Raider auf dem neuen RAID eine Volume Group mit einem ähnlichen aber leicht veränderten Namen gegeben (siehe Listing 2 ). Er kommt zustande, indem Raider hinter den Originalnamen »__raider« setzt. Dies lässt sich aber mit der Kommandozeilenoption »-l« ändern.

Listing 2

Raider-LVM

 

Bei vielen Tests ging mit Raider alles gut, aber einmal weigerte sich das Programm, in der zweiten Phase die verbliebene Platte dem neuen RAID-Verbund hinzuzufügen, mit dem lapidaren Hinweis:

Failed to add a device in /dev/md1 array

Auch das Logfile, das »raiderl« anzeigt, schwieg sich aus. Mehr Informationen sind dafür in weiteren Logdateien zu finden, die in »/var/log/raider« liegen. So protokolliert »/var/log/raider/raider_debug_STEP3_.log« minutiös jedes einzelne Kommando, das Raider im Lauf seiner Arbeit aufruft. Hier fand sich schließlich die Zeile:

mdadm: Cannot open /dev/sdd1: Device or resource busy

Typischerweise ist es unter Linux nicht immer einfach, die Ursache für eine solche Fehlermeldung zu finden. Das Mount-Kommando zeigte an, dass die Partition nicht eingebunden war, auch »lsof« lieferte keine neuen Erkenntnisse. Schließlich verriet »swapon -s« , dass das System, aus welchen Gründen auch immer, die komplette Festplatte zum Swappen verwendete ( Abbildung 4 ).

Abbildung 4: Fälschlicherweise wurde die letzte Festplatte als Swap-Bereich verwendet. Dies zu deaktivieren und sie manuell ins RAID aufzunehmen, löst das Problem.

Das Abschalten des Swap mit »swapoff /dev/sdd « brachte schließlich die Lösung. Nun ließ sich zuerst das Device »sdd1« dem RAID-1 »md0« hinzufügen. Ein Blick in »/proc/mdstat« zeigte, dass sich das Boot-RAID in etwa einer Minute synchronisierte. Auch die zweite Partition die zu dem RAID-5 mit der Volume Group gehört, wurde mit dem folgenden Befehl Teil des Verbunds:

mdadm --add /dev/md1 /dev/sdd2

Die anschließende, automatisch ablaufende Synchronisierung dauerte wieder etwa eineinhalb Stunden. Alle Variablen und Arbeitsdaten legt Raider im Verzeichnis »/var/lib/raider« und Unterverzeichnissen wie »DB« ab, wo der kundige Administrator gegebenfalls auch manuell eingreifen kann.

Dieses Beispiel zeigt bereits, wie man ausgefallene Platten in einem RAID einfach ersetzt, solange es noch grundsätzlich funktioniert, also die minmal nötige Anzahl von Platten vorhanden ist. Fällt eine Platte aus, nimmt das RAID-Subsystem sie automatisch aus dem Verbund heraus.

Nötig ist es aber, das RAID mit einem Monitoring-Paket wie Nagios zu überwachen, um einen solchen Ausfall auch mitzubekommen. Sonst arbeitet das RAID mit einer ausgefallenen Platte in Minimalkonfiguration einfach stillschweigend weiter, und die Katastrophe ist programmiert.

Will man eine Festplatte bereits vor dem Totalschaden austauschen, etwa weil sich die mit SMART gemeldeten Fehler häufen, kann man den Ausfall dem RAID auch vortäuschen. Hierzu bietet »mdadm« einen Befehl:

mdadm --fail /dev/md0 /dev/sda1

Nun meldet das RAID die Platte als defekt. Mit mdadm »--remove« lässt sie sich aus dem Verbund entfernen. Nach dem Einbau einer neuen Platte fügt »--add« sie wie gezeigt wieder hinzu, und die Synchronisierung beginnt von selbst. Eine Übersicht der wichtigsten Mdadm-Befehle zeigt Tabelle 2 .

Tabelle 2

RAID-Kommandos

Befehl

Funktion

mdadm --fail RAID-Device Partition

Schaltet eine Partition auf Ausfall

mdadm --add RAID-Device Partition

Fügt eine Partition dem RAID hinzu

mdadm --remove RAID-Device Partition

Entfernt eine Partition

mdadm --stop RAID-Device

Stoppt ein RAID

mdadm --query Device

Infos über Device oder RAID

mdadmin --examine Device

Mehr Details

mdadm -D RAID-Device

Zeigt detallierte Infos

Handarbeit

Zum Abschluss noch kursorisch die Vorgehensweise, um ein neues RAID anzulegen, das beispielsweise nur zur Speicherung von Nutzerdaten in einem Dateiserver dienen soll, ohne die Root-Partition anzutasten. Zuerst legen Sie die passenden Partitionen an, die optimalerweise die komplette Platte umfassen und auf allen Platten gleich groß sind. Bei den verschiedenen RAID-Leveln funktionieren zum Teil auch unterschiedlich große Partitionen, aber der Verbund verwendet dann den kleinsten gemeinsamen Nenner, und Sie verschenken Platz.

Platten des gleichen Typs vereinfachen die Konfiguration. Erfahrene Administratoren empfehlen aber andererseits auch, Platten unterschiedlicher Hersteller oder Baureihen zu verwenden, um die Wahrscheinlichkeit zu minimieren, dass alle an dem gleichen Fehler leiden.

Mit dem Partitionierungs-Tool ( »fdisk« , »sfdisk« und so weiter) stellen Sie den Typ der Partition auf »Linux raid autodetect« , das den Code »fd« besitzt. Von einer Platte lassen sich die Partitions-Infos etwa mit »sfdisk« übertragen:

sfdisk -d /dev/sda | sfdisk /dev/sdd

Zum Anlegen des RAID dient dann der Mdadm-Befehl »--create« , zusammen mit dem gewünschten RAID-Level und den erforderlichen Partitionen.:

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Alternativ lässt sich ein RAID auch mit weniger Platten als nötig erstellen, wenn man »--devices« entsprechend reduziert oder statt einer Partition »missing« angibt. Ist die eingestellte Anzahl an Devices erreicht, synchronisiert das RAID-Subsystem den neuen Verbund, auch wenn noch keine Daten gespeichert sind. Ein Dateisystem oder Logical Volumes lassen sich aber jetzt bereits anlegen. Mehr Informationen zu letzterem Thema bietet ein LVM-Workshop von Charly Kühnast, der unter [3] frei zugänglich ist.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023