  Linux Software-RAID HOWTO
  Niels Happel (nhappel@planet-interkom.de)
  v0.2.11-2, 5. April 2000

  Diese HOWTO beschreibt die Benutzung der RAID-Kernelerweiterungen,
  welche unter Linux den Linear Modus, RAID-0, 1, 4 und 5 als Software-
  RAID implementieren.


  1.  Einfhrung

  Ziel dieses Dokumentes ist es, das grundlegende Verstndnis der
  unterschiedlichen RAID-Mglichkeiten und das Erstellen von RAID-
  Verbunden anhand der - teilweise - neuen Mglichkeiten des 2.2er
  Kernels zu erklren.  Desweiteren wird auf die Besonderheiten mehrerer
  RAID-Verbunde, die Nutzung dieser als Root-Partition und deren
  Verhalten bei Fehlern eingegangen. Zu guter Letzt finden Sie noch
  einige Tips & Tricks rund um Linux allgemein sowie Software-RAID im
  speziellen.



  1.1.  Warnung

  Dieses Dokument beinhaltet keine Garantie fr das Gelingen der hier
  beschriebenen Sachverhalte. Obwohl alle Anstrengungen unternommen
  wurden, um die Genauigkeit der hier dokumentierten Informationen
  sicherzustellen, bernimmt der Autor keine Verantwortung fr Fehler
  jeglicher Art oder fr irgendwelche Schden, welche direkt oder als
  Konsequenz durch die Benutzung der hier dokumentierten Informationen
  hervorgerufen werden.

  RAID, obwohl es dafr entwickelt wurde, die Zuverlssigkeit des
  Systems zu steigern, indem es Redundanz gewhrleistet, kann auch zu
  einem falschen Gefhl der Sicherheit fhren, wenn es unsachgem
  benutzt wird. Dieses falsche Vertrauen kann dann zu wesentlich
  greren Disastern fhren. Im einzelnen sollte man beachten, da RAID
  konstruiert wurde, um vor Festplattenfehlern zu schtzen und nicht vor
  Stromunterbrechungen oder Benutzerfehlern.  Stromunterbrechungen,
  instabile Entwicklerkernel oder Benutzerfehler knnen zu
  unwiederbringlichen Datenverlusten fhren! RAID ist kein Ersatz fr
  ein Backup Ihres Systems.



  1.2.  Begrifflichkeiten

  Auf den folgenden Seiten werden Sie mit vielen Ausdrcken rund um
  Software-RAID, Festplatten, Partitionen, Tools, Patches und Devices
  bombardiert. Um als RAID-Einsteiger mit den oft gebrauchten Ausdrcken
  nicht ins Schleudern zu geraten, erhalten Sie hier eine Einfhrung in
  die Begrifflichkeiten.


     Chunk-Size
        Eine genaue Beschreibung, was die Chunk-Size ist, ist im
        Abschnitt ``Spezielle Optionen der RAID-Devices'' zu finden.


     Devices
        Devices sind unter Linux Stellvertreter fr Gerte aller Art, um
        sie beim Namen nennen zu knnen. Sie liegen alle unter /dev/
        in Ihrem Linux-Verzeichnisbaum. Beispiel dafr sind /dev/hda fr
        die erste (E)IDE-Festplatte im System (analog /dev/hdb,
        /dev/hdc), /dev/sda fr die erste SCSI-Festplatte oder /dev/fd0
        fr das erste Diskettenlaufwerk.


     Festplatten
        Festplatten sollten Ihnen bekannt sein. RAID nutzt mehrere
        Festplatten, um entweder deren Gesamtgeschwindigkeit, deren
        Sicherheit oder beides zu erhhen.


     MD-Device
        MD steht fr Multiple-Disk oder Multiple-Device und bedeutet
        dasselbe wie ein RAID-Device. Um Sie nicht weiter in die Irre zu
        fhren, wird im folgenden auf die Bezeichnung MD-Device bewut
        verzichtet.


     MD-Tools
        Die MD-Tools sind Hilfsprogramme, die Ihnen im Umgang mit den
        RAID-Devices helfen. Sie sind zwar lter und Ihre Entwicklung
        ist eingestellt.  Dennoch sind sie auf vielen lteren Linux-
        Distributionen vertreten. Die zur Verwaltung ntigen RAID-Tools
        haben die Versionsnummer 0.4x und werden im entsprechenden
        Kapitel abgehandelt.


     md0
        md0 ist ein Stellvertreter fr das erste RAID-Device in Ihrem
        System.  Das Verzeichnis /dev/ zeigt an, da es sich um ein
        Device handelt, md meint ein Multiple-Disk oder Multiple-Device
        und damit einen Verbund aus mehreren Partitionen Ihrer
        Festplatte(n). Das erste Device jeglicher Art ist immer entweder
        mit einer 0 gekennzeichnet und wird weiter aufsteigend
        nummeriert (also /dev/md0, /dev/md1 usw.) oder beginnt mit
        /dev/hda und wird alphabetisch aufsteigend durchgezhlt
        (/dev/hdb, /dev/hdc, usw.).

     Partitionen
        Partitionen bezeichnen die Einteilung Ihrer Festplatte in
        mehrere Segmente.  RAID-Verbunde knnen aus mehreren Partitionen
        derselben Festplatte oder aus mehrere Partitionen verschiedener
        Festplatten bestehen.


     Persistent-Superblock
        Eine Beschreibung, was ein Persistent-Superblock ist, ist im
        Abschnitt ``Weitere Optionen des neuen RAID-Patches''
        nachzulesen.


     RAID-Device
        RAID-Device ist die Bezeichnung fr einen neu erstellten RAID-
        Verbund, der jetzt unter einem eigenen Namen anzusprechen ist.
        Unter Linux entspricht jedes Gert letztendlich einem Device.
        Die RAID-Devices sind im Linux-Verzeichnisbaum auch unter /dev/
        abgelegt und heien md0-15.


     RAID-Partition
        RAID-Partition bezeichnet eine einzelne Festplattenpartition,
        die fr die Verwendung in einem RAID-Verbund genutzt werden
        soll.


     RAID-Patch
        RAID-Patch bezeichnet ein Paket aktueller RAID-Treiber, die
        neuer als die im Standardkernel enthaltenen sind. Sie weisen in
        ihrem Namen eine Zeichenfolge auf, die sich mit der von Ihnen
        verwendeten Kernel-Version decken sollte. Z.B.  braucht der
        Kernel 2.2.10 den RAID-Patch fr den 2.2.10er Kernel. Dieser
        RAID-Patch aktualisiert also im Endeffekt die originalen RAID-
        Treiber im Kernel-Sourcetree.


     RAID-Tools
        RAID-Tools sind neuere Hilfsprogramme im Umgang mit RAID-
        Verbunden als die MD-Tools, besitzen die Versionsnummer 0.9x und
        lsen diese langsam aber sicher ab. Der Funktionsumfang
        berwiegt gegenber den MD-Tools und erlaubt einen einfacheren
        Umgang mit den RAID-Systemen. Sie sollten bei der Verwendung der
        RAID-Tools prfen, ob sie auch die aktuellste Version haben.


     RAID-Verbund
        RAID-Verbund, oder synonym RAID-Array ist die Bezeichnung fr
        das Zusammenfgen mehrerer Partitionen von Festplatten, um sie
        nachher als eine Einheit ansprechen zu knnen. Ein anschauliches
        Beispiel wren zwei Partitionen jeweils einer Festplatte, welche
        als eine komplett neue Partition angesprochen werden.


     Redundanz
        Redundanz kommt aus dem Lateinischen, bedeutet berflle und
        meint auf einen RAID-Verbund bezogen das Vorhandensein
        zustzlicher Kapazitten, die keine neuen Daten enthalten, also
        speziell das ein Datentrger ausfallen kann, ohne den
        vorhandenen Datenbestand zu beeintrchtigen.


     Spare-Disk
        Informationen hierzu sind im Abschnitt ``Weitere Optionen des
        neuen RAID-Patches'' zu finden.

  1.3.  Literatur

  Obwohl in dieser HOWTO alles ntige Wissen zum Erstellen von Software-
  RAID Verbunden unter Linux vermittelt werden sollte, sei hier trotzdem
  zum besseren Verstndnis und als weiterfhrende Texte auf folgende
  HOWTOs und entsprechende Fachliteratur verwiesen:


    BootPrompt HOWTO

    Kernel HOWTO

    Root-RAID HOWTO

    Software-RAID mini-HOWTO


  1.4.  Wer hat dieses Dokument zu verantworten?

  Niels Happel hat zwar die Informationen zusammengetragen, getestet und
  neu geschrieben, jedoch beruht der grte Teil des Erfolgs dieser
  HOWTO natrlich auf der Arbeit der Programmierer der RAID-
  Kernelerweiterungen. Mein besonderer Dank gilt denen, die mir
  teilweise mit vielen Anregungen, Tips, Texten und Unermdlichkeit
  weitergeholfen haben und allen anderen, die mich dahingehend
  untersttzt haben. Die fleiigsten waren:

    Uwe Beck (ubeck@debis.com)

    Robert Dahlem (robert.dahlem@gmx.net)

    Ulrich Herbst (ulrich.herbst@debis.com)

    Werner Modenbach (modenbach@alc.de)


  1.5.  Copyright

  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr
  dieses Dokument liegt bei Niels Happel.

  Das Dokument darf gem der GNU General Public License verbreitet
  werden.  Insbesondere bedeutet dieses, da der Text sowohl ber
  elektronische wie auch physikalische Medien ohne die Zahlung von
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright-
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und ausdrcklich erwnscht. Bei einer Publikation in Papierform ist
  das Deutsche Linux HOWTO Projekt hierber zu informieren.


  1.6.  Info

  Wenn Sie irgendwelche Ideen zu dieser HOWTO haben, positive wie
  negative Kritiken, Korrekturen, oder Wnsche fr die nchste Version
  ... eine E-Mail ist wirklich schnell geschrieben.


       Niels Happel
       E-Mail: nhappel@planet-interkom.de


  Die jeweils aktuellste Version finden Sie unter:


    http://www.kinderwunsch.net/marvelinux/

    http://www.tu-harburg.de/dlhp/




  2.



  Was bedeutet RAID?

  RAID steht entweder fr Redundant Array of Independent Disks oder
  fr Redundant Array of Inexpensive Disks und bezeichnet eine
  Technik, um mehrere Partitionen miteinander zu verbinden. Das Ziel ist
  hierbei entweder eine Performancesteigerung, eine Steigerung der
  Datensicherheit oder eine Kombination aus beidem. RAID kann vor
  Festplattenfehlern schtzen und kann auch die Gesamtleistung im
  Gegensatz zu einzelnen Festplatten steigern. Dieses Dokument ist eine
  Anleitung zur Benutzung der Linux RAID-Kernelerweiterungen und den
  dazugehrigen Programmen. Die RAID-Erweiterungen implementieren den
  Linear (Append) Modus, RAID-0 (Striping), RAID-1 (Mirroring), RAID-4
  (Striping & Dedicated Parity) und RAID-5 (Striping & Distributed
  Parity) als Software-RAID. Daher braucht man mit Linux Software RAID
  keinen speziellen Hardware- oder Festplattenkontroller, um viele
  Vorteile von RAID nutzen zu knnen. Manches lt sich mit Hilfe der
  RAID-Kernelerweiterungen sogar flexibler lsen, als es mit
  Hardwarekontrollern mglich wre.

  Folgende RAID Typen werden unterschieden:

  Linear (Append) Mode

  Hierbei werden Partitionen unterschiedlicher Gre ber mehrere
  Festplatten hinweg zu einer groen Partition zusammengefgt und linear
  beschrieben. Hier ist kein Geschwindigkeitsvorteil zu erwarten. Fllt
  eine Festplatte aus, so sind alle Daten verloren.

  RAID-0 (Striping) Mode

  Auch hier werden zwei oder mehr Partitionen zu einer groen
  zusammengefgt, allerdings erfolgt hier der Schreibzugriff nicht
  linear (erst die 1.Platte bis sie voll ist, dann die 2.Platte usw.),
  sondern parallel. Dadurch wird ein deutlicher Zuwachs der Datenrate
  insbesondere bei SCSI-Festplatten erzielt, welche sich fr die Dauer
  des Schreibvorgangs kurzfristig vom SCSI Bus abmelden knnen und ihn
  somit fr die nchste Festplatte freigeben. Die erzielten
  Geschwindigkeitsvorteile gehen allerdings zu Lasten der CPU Leistung.
  Bei einer Hardware RAID Lsung wrde der Kontroller diese Arbeit
  bernehmen.  Allerdings steht der Preis eines guten RAID Kontrollers
  in keinem Verhltnis zur verbrauchten CPU Leistung eines
  durchschnittlichen Computers.

  RAID-1 (Mirroring) Mode

  Der Mirroring Mode erlaubt es, eine Festplatte auf eine weitere
  gleichgroe Festplatte oder Partition zu duplizieren. Dieses Verfahren
  wird auch als Festplattenspiegelung bezeichnet. Hierdurch wird eine
  erhhte Ausfallsicherheit erreicht - streckt die eine Festplatte die
  Flgel, funktioniert die andere noch. Allerdings ergibt das auch
  wieder nur Sinn, wenn die gespiegelten Partitionen auf
  unterschiedlichen Festplatten liegen. Die zur Verfgung stehende
  Festplattenkapazitt wird durch dieses Verfahren halbiert. Ein
  Geschwindigkeitsgewinn ist hierbei nur beim Lesezugriff zu erwarten,
  jedoch erbringt der aktuelle Stand der RAID-Treiber fr Linux nur beim
  nicht sequentiellen Lesen vom RAID-1 Geschwindigkeitsvorteile.

  RAID-4 (Striping & Dedicated Parity) Mode

  Entspricht dem RAID-0 Verfahren, belegt allerdings eine zustzliche
  Partition mit Parittsinformationen, aus denen eine defekte Partition
  wieder hergestellt werden kann. Allerdings kostet diese Funktion
  wieder zustzliche CPU Leistung.

  RAID-5 (Striping & Distributed parity) Mode

  Hier werden die Parittsinformationen zum Restaurieren einer defekten
  Partition zusammen mit den Daten ber alle Partitionen verteilt.
  Allerdings erkauft man sich diese erhhte Sicherheit durch
  Kapazittsverlust. Will man 5x1 GB zu einem RAID-5 zusammenfassen, so
  bleiben fr die eigentlichen Daten noch 4x1 GB Platz brig. Beim
  Schreibvorgang auf einen RAID-5 Verbund wird erst ein Datenblock
  geschrieben, dann erfolgt die Berechnung der Parittsinformationen,
  welche anschlieend auch auf den RAID-Verbund geschrieben werden.
  Hierher rhrt die schlechtere Schreibgeschwindigkeit der Daten. Der
  Lesevorgang hnelt allerdings dem RAID-0 Verbund. Das Resultat ist
  deshalb eine Steigerung der Lesegeschwindigkeit im Gegensatz zu einer
  einzelnen Festplatte.

  RAID-10 (Mirroring & Striping) Mode

  RAID-10 bezeichnet keinen eigenstndigen RAID-Modus, sondern ist ein
  Kombination aus RAID-0 und RAID-1. Hierbei werden zuerst zwei RAID-0
  Verbunde erstellt, die dann mittels RAID-1 gespiegelt werden. Der
  Vorteil von einem RAID-10 im Gegensatz zu einem RAID-5 ergibt sich aus
  der hheren Performance.  Whrend ein RAID-5 nur relativ wenig
  Geschwindigkeitsvorteile bringt, ist ein RAID-10 durch die beiden
  RAID-0 Verbunde fr den Fall besser geeignet, wenn man sowohl
  Redundanz als auch einen hohen Geschwindigkeitsvorteil erzielen will.
  Sogar die anschlieend notwendige RAID-1 Spiegelung bringt noch einen
  Vorteil bei der Lesegeschwindigkeit. Weiterhin fllt hierbei die
  notwendige Berechnung von Parittsinformationen weg. Erkauft wird dies
  allerdings durch eine sehr viel schlechtere Nutzung des vorhandenen
  Festplattenplatzes, da immer nur 50% der tatschlichen Kapazitt
  beschrieben werden kann.



  3.  Voraussetzungen


  3.1.  Hardware

  Zum Erstellen von RAID-Devices werden fr den Linear, RAID-0 und
  RAID-1 Modus mindestens zwei leere Partitionen auf mglichst
  unterschiedlichen Festplatten bentigt. Fr RAID-4 und RAID-5 sind
  mindestens drei Partitionen ntig und fr den RAID-10 Modus vier.
  Dabei ist es egal, ob die Partitionen auf (E)IDE- oder SCSI-
  Festplatten liegen.

  Will man Software-RAID mit (E)IDE-Festplatten benutzen, so empfiehlt
  es sich, jeweils nur eine (E)IDE-Festplatte an einem (E)IDE Kontroller
  zu benutzen.  Im Gegensatz zu SCSI beherrschen (E)IDE-Festplatten
  keinen Disconnect - knnen sich also nicht vorbergehend vom BUS
  abmelden - und knnen dementsprechend nicht parallel angesprochen
  werden. An zwei unterschiedlichen (E)IDE Kontrollern ist dies jedoch
  in Grenzen mglich, wenn auch immer noch nicht so gut wie bei SCSI
  Kontrollern. Besser als an einem Strang ist es aber auf jeden Fall.

  Desweiteren knnen Sie die berlegung, Hot Plugging mit (E)IDE-
  Festplatten zu benutzen, gleich wieder ad acta legen. Hierbei gibt es
  mehr Probleme als Nutzen. Wie das jedoch mit eigenen (E)IDE RAID
  Kontrollern aussieht, kann ich mangels passender Hardware nicht sagen.
  Das Software-RAID unter Linux bietet zwar die Mglichkeit einzelne
  Partitionen einer Festplatte in ein RAID einzubauen, um jedoch einen
  nennenswerten Geschwindigkeitsvorteil oder entsprechende Redundanz zu
  erzielen, sind generell die RAID-Partitionen auf unterschiedliche
  Festplatten zu verteilen. Sinnvoll wre es, das erste RAID zum
  Beispiel auf drei Partitionen unterschiedlicher Festplatten zu legen;
  /dev/md0 bestnde dann z.B. aus /dev/sda1, /dev/sdb1 und /dev/sdc1.
  Das zweite RAID wrde man ebenso verteilen: /dev/md1 wre dann also
  ein Verbund aus /dev/sda2, /dev/sdb2 und /dev/sdc2. Damit hat man zwei
  RAID-Verbunde (/dev/md0 und /dev/md1), die sich - als einzelnes Device
  angesprochen - jeweils ber alle drei Festplatten ziehen.

  Da es so gut wie immer unsinnig ist, innerhalb eines RAID-Verbundes
  mehrere Partitionen auf dieselbe Festplatte zu legen (z.B. /dev/md0
  bestehend aus /dev/sdb1, /dev/sdb2 und /dev/sdc1), kann oft der
  Begriff RAID-Festplatte mit RAID-Partition synonym verwendet werden.



  3.2.




  Software

  Die Prozedur wird hier zum einen mit Hilfe der alten RAID-Tools
  Version 0.4x anhand einer DLD 6.0 und DLD 6.01 beschrieben, zum
  anderen wird ein aktueller Installationsablauf erlutert, der sich auf
  den neuen RAID-Patch und die RAID-Tools Version 0.9x bezieht. Der neue
  Weg hlt sich an den Kernel 2.2.10 in Verbindung mit dem passenden
  RAID-Patch und den RAID-Tools und sollte unabhngig von der von Ihnen
  benutzten Distribution funktionieren. Im allgemeinen ist die Benutzung
  des neuen RAID-Patches dringend den alten MD-Tools vorzuziehen. Allein
  der unter Linux sonst unblich groe Versionssprung von 0.4x auf 0.9x
  zeigt die starken einhergegangenen Vernderungen. Allerdings kann auch
  das Verfahren mit Hilfe der MD-Tools fr ltere Distributionen von
  Vorteil sein, in denen diese bereits vorkonfiguriert sind.

  Generell sei hier schon gesagt, da die Lsung durch die MD-Tools und
  der aktuellen RAID-Patch unterschiedliche Wege gehen. Bitte beachten
  Sie das bei der Ihnen vorliegenden Distribution und entscheiden Sie
  sich frhzeitig fr eine Variante. Glauben Sie, zusammen mit einer
  guten Anleitung mit fdisk und patch zurecht zu kommen, so whlen Sie
  ruhig den neuen Weg.

  Fr den aktuellen Abschnitt, welcher die Verwendung der neuen RAID-
  Kernelerweiterungen Version 0.9x beschreibt, werden neben einem
  lauffhigen Linux-System zwei Archive bentigt. Zum einen der zur
  Kernelversion passende RAID-Patch und zum anderen die aktuellsten
  RAID-Tools. Beide Archive gibt es im Internet:


       ftp.kernel.org:/pub/linux/daemons/raid/alpha/


  Der RAID-Patch aktualisiert Ihren vorhandenen Linux Kernel-Source, die
  RAID-Tools stellen die zur Verwaltung von RAID-Verbunden bentigten
  Programme zur Verfgung. Die einzelnen Programme oder Kommandos der
  aktuellen RAID-Tools vom 24.08.1999 werden hier mit einer kurzen
  Erluterung zu Ihrem Verwendungszweck beschrieben:


     ckraid
        Dieses Programm testete in lteren Software-RAID Versionen, die
        noch mit den MD-Tools erstellt wurden, die Konsistenz eines
        RAID-Verbundes. Mit dem aktuellen Kernel-Patch bernimmt der
        Linux-Kernel diese Arbeit und behandelt die RAID-Verbunde
        genauso wie normale ext2-Partitionen. Dieses Programm ist aus
        Grnden der Rckwrtskompatibilitt noch vorhanden.


     mkraid
        Dies ist das zentrale Verwaltungsprogramm, um RAID-Verbunde
        aller RAID-Modi anhand einer Konfigurationsdatei - meist
        /etc/raidtab - zu initialisieren, erstellen oder upzugraden.


     raid0run
        Aus Grnden der Rckwrtskompatibilitt kann man mit Hilfe
        dieses Kommandos Linear und RAID-0 Verbunde starten, welche noch
        mit den alten MD-Tools erstellt wurden.


     raidhotadd
        Hiermit wird das sogenannte Hot Plugging, in diesem Fall das
        Hinzufgen einer RAID-Partition in einen laufenden RAID-Verbund,
        ermglicht.


     raidhotremove
        Dies ermglicht in Analogie zum Kommando raidhotadd das
        Entfernen einer RAID-Partition aus einem aktiven RAID-Verbund.


     raidsetfaulty
        Um raidhotremove z.B. auf ein laufendes RAID-Array mit ``Spare-
        Disks'' anwenden zu knnen, mu zuerst die zu entnehmende
        Festplatte als defekt markiert werden. Ist dies nicht von
        alleine korrekt geschehen, mu das Kommando raidsetfaulty dazu
        bemht werden.  Andernfalls erhlt man von raidhotremove
        lediglich eine Fehlermeldung.


     raidstart
        Ist ein RAID-Verbund erst einmal initialisiert, kann er mit
        diesem Programm gestartet werden. Durch den neuen RAID-Patch und
        mit den entsprechenden Optionen in der /etc/raidtab kann dies
        allerdings der Kernel beim Startup des Rechners bereits
        automatisch erledigen.


     raidstop
        Erlaubt das Deaktivieren eines RAID-Verbundes, um z.B. den
        Rechner sicher herunterfahren zu knnen. Auch dies lt sich mit
        den ntigen Eintrgen in der /etc/raidtab automatisch durch den
        Kernel erledigen.


     raidtab
        Dies ist die zentrale Konfigurationsdatei fr die gesamten RAID-
        Verbunde Ihres Systems, die erst neu erstellt werden mu. Die
        Parameter fr die einzelnen RAID-Verbunde werden in den
        entsprechenden Kapiteln dieser HOWTO beschrieben.  Standardmig
        suchen die RAID-Tools nach /etc/raidtab. Hier sollte also diese
        Datei auch erstmal mit diesem Namen erstellt werden.


  4.  Generelles zum Umgang mit Linux



  4.1.  Mglichkeiten des Bootens von Linux

  Linux kann auf vielfltige Weise gebootet werden. Gerade im Umgang mit
  zu testenden RAID-Verbunden und sptestens bei dem Versuch das Root-
  Verzeichnis auf einen RAID-Verbund verlegen zu wollen, stellt sich
  einem die Frage, ob und wie Linux bei einem Mierfolg wieder zum
  sauberen Startup zu bewegen ist.  Speziell in Bezug auf die
  Mglichkeit das Root-Verzeichnis auf einen RAID-Verbund zu legen, sind
  je nach Zielvorstellung unterschiedlich trickreiche Wege zu verfolgen.
  Diese zahlreichen Mglichkeiten sollen hier erlutert werden. Welche
  nun speziell fr einen beschriebenen RAID-Verbund ntig ist, wird
  nochmals in den jeweiligen Kapiteln genannt.


  4.1.1.  Linux von Diskette booten

  Zumindest als Notnagel sollte man sich eine Boot-Diskette mit einem
  aktuellen Kernel, der am besten noch alle ntigen Festplatten-Treiber
  und die RAID-Optionen fest einkompiliert hat, in eine sicher Ecke
  legen.

     DOS Bootdiskette mit Loadlin
        Den flexibelsten Weg im Umgang mit RAID-Verbunden bietet ein
        DOS-Bootdiskette.  Bentigt werden hierfr lediglich die DOS
        Systemdateien, Loadlin, ein aktueller Linux-Kernel und ein
        kleiner DOS-Editor. Der nicht zu unterschtzende Vorteil dieser
        Lsung liegt darin, da man die Konfigurationsdatei von loadlin
        ganz simpel an unterschiedliche Gegebenheiten anpassen kann, um
        zum Beispiel mal das Booten von einem RAID-Verbund zu testen.
        Klappt dies aus irgendeinem Grund nicht, knnen die nderungen
        an der Startdatei einfach mittels des DOS-Editors wieder
        rckgngig gemacht werden.


     Linux Bootdiskette mit LILO
        Eine Linux Bootdiskette sollte jeder echte Linuxer immer haben.
        Am einfachsten werden diese ber die distributionsspezifischen
        Verwaltungsprogramme erstellt. Eine weitere Mglichkeit bietet
        das Programm mkbootdisk. Zum Testen der Bootfhigkeit neuer
        RAID-Verbunde ist das stndige ndern allerdings zu umstndlich.
        Zum ndern einer auf Basis des ext2 Dateisystems erstellten
        Bootdiskette bentigt man nmlich erstmal ein laufendes Linux-
        System.



  4.1.2.  Linux von der Festplatte booten

  So normal sich das Booten von der Festplatte auch anhrt, so treten
  doch gerade in Verbindung mit RAID-Verbunden als Root-Partition einige
  Probleme zu Tage die es hierbei zu umschiffen gilt. Andererseits ist
  es auch oft gerade die Vielfalt der Bootmglichkeiten, welche den
  einen oder anderen in Verwirrung strzt.

     DOS Partition mit Loadlin
        Ein relativ sicherer und einfacher Weg zugleich Linux zu Booten
        und schnell die Bootkonfiguration zwischen einem RAID-Verbund
        und einer normalen ext2-Partition zu wechseln, stellt das Booten
        per loadlin von einer kleinen DOS-Partition dar. Auer den DOS
        Systemdateien, einem Linux-Kernel mit RAID-Untersttzung,
        loadlin und einer Loadlin-Konfigurationsdatei wird nur noch ein
        DOS Editor bentigt, um simpel die Root-Partition in der
        Loadlin-Konfigurationsdatei zu ndern.



     Extra-Partition fr LILO mit Root-RAID
        Root-RAID in Verbindung mit LILO braucht noch etwas mehr
        Frsorge. Zuerst mssen Sie wissen, ob Ihr LILO im MBR Ihrer
        Festplatte oder im Superblock Ihrer Root-Partition installiert
        ist. Ist Linux z.B. das einzige Betriebsystem auf Ihrem Rechner,
        ist LILO vermutlich im MBR installiert, booten Sie jedoch
        mittels eines fremden Bootmanagers (OS/2 Bootmanager, XFDisk,
        oder hnliche) wird LILO im Superblock Ihrer Root-Partition
        liegen. Noch einfacher kann das Ihre bisherige /etc/lilo.conf
        herausstellen: Der Parameter boot= gibt an, wo sich LILO
        aufhlt. Steht dort etwa



          boot = /dev/sda



     so residiert Ihr LILO im MBR der ersten SCSI-Festplatte, bei der
     Angabe


          boot = /dev/sda2



     handelt es sich um den Superblock Ihrer zweiten primren Partition.

     LILO braucht zum Booten die Information, wo der Linux-Kernel auf
     der Festplatte liegt. Da LILO das aber zu einer Zeit erfahren mu,
     zu der noch gar keine Partition gemountet ist, behilft sich LILO,
     indem er Plattengeometriedaten in den MBR oder Superblock schreibt,
     die die genaue Anfangslage des Linux-Kernel beschreiben. Die
     meisten Distributionen legen Ihre Kernel unter /boot ab. Diesen
     Umstand kann man nun dahingehend ausnutzen, da man sich ein kleine
     Extra-Partition (etwa 10-20 MB) erstellt, welche unterhalb der 1024
     Zylindergrenze liegt. Diese formatiert man mit ext2 und mountet sie
     als /boot in seinen Root-RAID-Device-Verzeichnisbaum, kopiert den
     gesamten Inhalt von dem originalen /boot Verzeichnis in das neue
     /boot Verzeichnis und ndert die Dateien /etc/lilo.conf und
     /etc/fstab dementsprechend:


     /etc/lilo.conf



          boot = boot-Partition-ohne-RAID (/dev/sda2),
                 oder: MBR-der-Festplatte (/dev/sda)
          image = /boot/vmlinuz-2.2.10
          root = /dev/md0
          read only




     /etc/fstab



          /dev/md0 / ext2 exec,dev,suid,rw 1 1
          /dev/sda2 /boot ext2 exec,dev,suid,rw 1 1




     Das Ausfhren von lilo sollte dann bescheinigen, da der Kernel
     vmlinuz-2.2.10 korrekt initialisiert wurde.

     Haben Sie nun LILO im Superblock Ihrer neuen /boot Partition
     angelegt, so mssen Sie dies noch Ihrem Bootmanager bekanntgeben
     und ihn eben diese booten lassen. Dem Beispiel zufolge wre das die
     Partition /dev/sda2. Liegt Ihr LILO im MBR der Festplatte, so
     brauchen Sie nichts weiter tun, als neu zu booten.

     Dieses Verfahren bootet zwar Linux mit einem Root-RAID, ist aber im
     Fehlerfall der ersten Festplatte nicht redundant!


     Extra-Partition fr LILO mit redundantem Root-RAID
        Die hier beschriebene Vorgehensweise bezieht sich auf die
        folgende Konstellation: Zwei (E)IDE-Platten sind beide als
        Master gejumpert und hngen an verschiedenen (E)IDE Kontrollern:
        /dev/hda und /dev/hdc.

        Die Partitionstabelle ist fr beide Festplatten gleich:


          /dev/hd?1   primary   Linux native (83)      ca. 10 MB (fr /boot)
          /dev/hd?2   primary   Linux swap (82)        128 MB (fr swap)
          /dev/hd?3   primary   Linux raid auto (fd)   den Rest (fr /dev/md0)




     Wenn im folgenden von Backup-Fall gesprochen wird, dann ist damit
     der Fall gemeint, da die erste Festplatte ausgefallen ist und
     irgendwie von der verbliebenen zweiten Festplatte gebootet werden
     soll.

     Wir gehen von folgender /etc/lilo.conf fr die erste Festplatte
     aus:


          boot=/dev/hda

          image=/boot/vmlinuz
                  root=/dev/md0
                  label=linux




     Nun mu auch auf der zweiten Platte eine Boot-Partition erzeugt
     werden. Dazu erstellt man auf der zweiten Festplatte eine
     identische Partition und kopiert mittels einer der im Abschnitt
     ``Mglichkeiten zum Kopieren von Daten'' beschriebenen Methoden das
     originale Boot-Verzeichnis auf die zweite Festplatte.

     Jetzt kopiert man die /etc/lilo.conf der zweiten Festplatte nach
     /etc/lilo.conf.backup und pat sie an die neuen Bedingungen an. Die
     endgltige /etc/lilo.conf.backup sollte dann wie folgt aussehen:










     boot=/dev/hdc
     disk=/dev/hdc bios=0x80
     map=/boot2/map
     install=/boot2/boot.b

     image=/boot2/vmlinuz
             root=/dev/md0
             label=linux




     Der Parameter disk=/dev/hdc bios=80 ist ntig, um LILO
     vorzuspiegeln, da die Festplatte /dev/hdc mit 0x80 eingeloggt ist.
     Der Grund dafr ist, da das BIOS normalerweise die ersten beiden
     Festplatten mit den Adressen 0x80 und 0x81 einloggt. Wir
     konfigurieren die Platte 0x81 (/dev/hdc).  Im Backup-Fall wird die
     Festplatte aber als 0x80 eingeloggt, da die ursprngliche erste
     Festplatte ja defekt ist.

     Ein

          lilo -C /etc/lilo.conf.backup

     schreibt die Bootinformationen in den MBR. Es erscheint eine War
     nung /dev/hdc is not on the first disk, aber das soll uns nicht
     stren, denn im Backup-Fall wird diese Festplatte ja zur ersten
     Festplatte im System. Dafr mu sie natrlich noch an den ersten
     (E)IDE Kanal gehngt werden.

     In komplexeren Fllen ist unter Umstnden noch die Optionen
     ignore-table hilfreich.

     Zu bedenken ist noch, da man nach dem Kompilieren eines neuen
     Kernels das Boot-Verzeichnis der zweiten Festplatte anpat und LILO
     auch mit dem entsprechenden Befehl

          lilo -C /etc/lilo.conf.backup

     fr die zweite Festplatte ausfhrt.


     LILO im MBR
        Benutzen Sie Linux als einziges Betriebsystem, bietet es sich
        an, LILO direkt im MBR Ihrer Festplatte unterzubringen.


     LILO im Superblock mit externem BootManager
        Um auch Betriebsysteme neben Linux zu starten, mit denen LILO
        nicht zurecht kommt, bietet es sich an, einen externen
        BootManager wie etwa den OS/2-Bootmanager oder XFDisk zu
        benutzen. Hierbei wird LILO im Superblock Ihrer Root-Partition
        untergebracht und der externe BootManager im MBR der Festplatte.


     LILO direkt vom RAID im MBR
        Das grundstzliche LILO Problem, die Geometriedaten des Kernels
        wissen zu mssen und somit nicht direkt von einem RAID-Device
        booten zu knnen, kann man umgehen, indem man LILO in der
        /etc/lilo.conf auf dem Root-RAID diese Parameter schon mit
        bergibt. Prinzipiell funktioniert dies fr alle RAID-Modi.
        Wirklich Sinn macht das aber nur fr RAID-Modi wie RAID-1,
        RAID-4 und RAID-5, welche auch irgendeine Form von Redundanz
        versprechen. Im Gegenzug ist das direkte Booten von einem
        RAID-0-Verbund schon deshalb einfacher zu realisieren, weil man
        sich beim Defekt einer Festplatte keine Gedanken mehr um die
        Datenrettung oder das Booten von der zweiten Festplatte zu
        machen braucht: Diese Daten sind dann ohnehin verloren.

        Wie funktioniert nun das direkte Booten von einem RAID-Verbund?
        Hier ein Beispiel der Datei /etc/lilo.conf fr den wohl
        sinnvollsten RAID-Modus fr einen Root-RAID Verbund: RAID-1 auf
        SCSI-Festplatten:



          disk=/dev/md15
                        bios=0x80
                        sectors=63
                        heads=255
                        cylinders=1106
                        partition=/dev/md0
                        start=1028160
          boot=/dev/sda
          image=/boot/vmlinux-2.2.10
                        label=autoraid
                        root=/dev/md0
                        read-only




     Der Eintrag disk=/dev/md15 mit seinen Parametern bergibt LILO die
     bentigten Geometriedaten einer fiktiven Festplatte /dev/md15.
     Hierbei ist es einerlei, ob dieses Device /dev/md15 oder /dev/md27
     heit. Wichtig ist nur, da es per mknod mit der Major-Number eines
     RAID-Devices erstellt wurde. Sind Sie sich nicht sicher, ob dies
     der Fall ist, lassen Sie sich einfach unter /dev/ alle Devices, die
     mit md anfangen, zeigen. Standardmig werden /dev/md0 bis
     /dev/md15 erstellt. Die Parameter der Sektoren, Kpfe und Zylinder
     unterhalb von disk=/dev/md15 geben die Geometriedaten der ersten
     Festplatte Ihres Systems an, welche man mittels


          fdisk -lu /dev/sda



     erhlt. Die Angabe der Partition soll Ihr Root-RAID Verbund sein.
     Der letzte Parameter start=1028160 bezeichnet den Sektor, in dem
     Ihre RAID-Partition auf der ersten Festplatte beginnt. Auch diese
     Information erhalten Sie durch:


          fdisk -lu /dev/sda



     Desweiteren mu als Sitz des LILO der MBR Ihrer ersten Festplatte
     angegeben werden. Hier geschehen durch den Eintrag: boot=/dev/sda.
     Der letzte Bereich beschreibt ganz normal die Lokalisation Ihres
     Kernels mit dem Verweis, als Root-Partition Ihren RAID-Verbund zu
     nutzen.

     Haben Sie den RAID-Verbund nach der weiter unten beschriebenen
     Methode erstellt und haben sowohl die Option persistent-superblock
     aktiviert als auch den Partitionstyp der Festplatten auf 0xfd
     gendert, fehlen dem Master-Boot-Record der SCSI-Festplatten nur
     noch die Boot-Informationen.  Mit dem Aufruf



     lilo -b /dev/sda



     werden die Informationen der Datei /etc/lilo.conf in den MBR der
     ersten SCSI-Festplatte geschrieben. Anschlieend mu man den Befehl
     ein zweites Mal aufrufen. Diesmal allerdings fr den MBR der
     zweiten Festplatte des RAID-1 Verbundes:



          lilo -b /dev/sdb




     Achtung: Hierbei wird davon ausgegangen, da die im RAID-Verbund
     laufenden Festplatten identisch sind und damit auch die gleichen
     Geometriedaten besitzen!  Ein RAID-0 so zu booten, funktioniert
     auch mit unterschiedlichen Festplatten, da hierbei nur die erste
     Festplatte bercksichtigt wird. In diesem Beispiel eines RAID-1
     liegen jedoch auf allen RAID-Partitionen die gleichen Daten und
     somit auch die gleiche /etc/lilo.conf. Haben die Festplatten
     unterschiedliche Geometriedaten und fllt im RAID-1 die erste
     Festplatte aus, so stehen im MBR der zweiten Festplatte Daten,
     welche nicht mit denen der zweiten Festplatte bereinstimmen. Ein
     Workaround knnte sein, zwei LILO Konfigurationsdateien zu pflegen
     und mit unterschiedlichen Geometriedaten in den MBR der jeweiligen
     Festplatten zu schreiben. Da mir aber nur mehrere Exemplare
     dergleichen Festplatte zum Testen von RAID-Verbunden vorliegen, ist
     dies ein ungesicherter Tip.


     Der Erfolg ist ein RAID-1 Verbund, den man auch nach einem erneuten
     Kernelkompilierungslauf durch zweimaliges Aufrufen des LILO mit den
     Parametern fr die unterschiedlichen MBRs von beiden beteiligten
     RAID-Festplatten booten kann.


     LILO direkt vom RAID-1 im MBR oder Superblock
        Will man die Root-Partition direkt von einem RAID-1 Verbund
        booten, bietet sich einem noch die weitaus eleganteste
        Mglichkeit: Die LILO-Version des aktuellen RPM-Archives
        lilo-0.21-10.i386.rpm kann bereits von sich aus mit RAID-1
        Verbunden umgehen. Andere RAID-Modi werden allerdings nicht
        untersttzt.




  4.2.  Mglichkeiten zum Kopieren von Daten

  Zu den ersten Methoden mu vorab gesagt werden, da je nach
  Distribution bei der Verwendung der Root-Partition als RAID einige
  Verzeichnisse entweder gar nicht kopiert werden drfen, oder aber nur
  als leere Verzeichnisse erstellt werden mssen. Im einzelnen sollte
  man auf folgende achten:


     proc
        Dieses Verzeichnis bitte nur als leeres Verzeichnis auf dem
        RAID-Device erstellen, da /proc ein Pseudo-Dateisystem
        darstellt, welches im Prinzip keinen Platz beansprucht - bitte
        nicht versuchen, /proc auf eine andere Partition zu kopieren.


     mnt
        Dieses Verzeichnis oder das, wo Ihr RAID-Device gemountet ist,
        darf nicht kopiert werden, sonst wrden die bereits vorhandenen
        Daten nochmals berschrieben werden.


     cdrom
        Die Daten der CDs selbst mchte man natrlich nicht kopieren. Es
        sollten daher nur die passenden Mountpoints erstellt werden.


     dos
        Auch die DOS-Partition, falls eine vorhanden ist, mchte man
        nicht mit rberkopieren. Es sollte also nur ein passender
        Mountpoint erstellt werden.


     floppy
        Das gleiche gilt auch fr eine gemountete Diskette.


  Als generelle Kopiermethoden bieten sich folgende Mglichkeiten an:


     cp Der normale Copy-Befehl eignet sich fr das Kopieren
        naheliegenderweise sehr gut und funktioniert problemlos.


     dd Auch eine saubere Mglichkeit, Verzeichnisse zu kopieren, bietet
        das Programm dd.


     dump und restore
        Mittels dump und restore lt sich ohne viel Aufwand z.B. das
        ganze Root-Verzeichnis kopieren oder auf Band-Streamer sichern,
        wobei die unntigen Verzeichnisse wie /proc oder /mnt fast
        automatisch ausgelassen werden. Zu diesem Zweck wechselt man
        in das Verzeichnis, in dem der neue RAID-Verbund gemountet ist
        und fhrt die folgenden Befehle aus, um z.B.  das Verzeichnis
        /usr zu kopieren:


          dump 0Bf 1000000000 - /usr | restore rf -
          rm restoresymtable





     Midnight Commander
        Zwar liegt der Midnight Commander zum Kopieren von
        Verzeichnissen auf ein neues RAID-Array sehr nahe, jedoch haben
        einige Versionen die bisweilen sehr unangenehme Eigenart,
        symbolische Links beim Kopieren zu stabilisieren. In den
        aktuellen Versionen sollte dieses Fehlverhalten jedoch behoben
        sein.


     tar
        Ebenso zuverlssig und mit einigen Extraoptionen kann man tar
        benutzen, um ganze Verzeichnisstrukturen zu kopieren.





  4.3.  Mglichkeiten zum Verndern ganzer Partitionen


     ext2resize
        Eine native Mglichkeiten unter Linux, ext2-Partitionen zu
        verndern, die noch dazu der GPL unterliegt, bietet das Programm
        ext2resize, das von folgender Adresse bezogen werden kann:

          http://ext2resize.sourceforge.net/


     Da es aber offiziell noch Beta-Status hat, ist beim Umgang mit
     diesem Programm Vorsicht geboten.


     Partition Magic
        Seit der Version 4.0 kann Partition Magic auch mit Linux
        ext2-Partitionen umgehen. Eine Version, die unter Linux selbst
        lauffhig ist, gibt es allerdings nicht. Das Produkt Partition
        Magic stammt von der Firma PowerQuest.


     resize2fs
        Dieses Programm ist eine Auskopplung aus Partition Magic, ist
        unter Linux lauffhig und ermglicht das Vergrern und
        Verkleinern von ext2-Partitionen.  Sollten Sie mal ber ein
        gleichnamiges tar-Archiv stolpern, stellt sich hier jedoch noch
        die Lizenzfrage. Registrierte Benutzer knnen sich das RPM-Paket
        von

          http://www.powerquest.com/


     herunterladen. Innerhalb der Firma berlegt man aber, diesen Teil
     eventuell frei zu geben.



  5.


  RAID-Verbunde mit den RAID-Tools Version 0.4x erstellen

  Dieses Kapitel bezieht sich nur auf die Erstellung von RAID-Verbunden
  unter Zuhilfenahme der alten MD-Tools. Die aktuellen RAID-Tools
  Version 0.9x und der RAID-Patch werden im Abschnitt ``RAID-Verbunde
  mit den RAID-Tools Version 0.9x                         erstellen''
  beschrieben.


  5.1.

  RAID-0 Device unter der DLD 6.0 erstellen


  5.1.1.  Vorbereiten des Kernels

  Der Standardkernel 2.0.36 der DLD 6.0 besitzt prinzipiell schon gleich
  nach der Installation alle Optionen, um RAID-Devices zu erstellen.
  Will man allerdings die Root-Partition als RAID-Device benutzen, so
  ist man auf den neueren 2.2er Kernel zwar auch nicht unbedingt
  angewiesen, jedoch erleichtert dieser Kernel die Bootprozedur durch
  zustzliche Parameter erheblich.

  Desweiteren ist noch das Paket md-0.35-2.i386.rpm ntig, welches auf
  der ersten DLD CD unter delix/RPMS/i386/ zu finden ist.
  Auch wenn der Standardkernel der DLD 6.0 bereits die RAID
  Untersttzung enthlt, wird hier trotzdem auf die ntigen Parameter
  hingewiesen:

  Nach der Anmeldung als root, dem Wechsel in das Verzeichnis
  /usr/src/linux und dem Aufruf von make menuconfig sollte sich Ihnen
  das Men mit den unterschiedlichen Kerneloptionen prsentieren. Bitte
  benutzen Sie nicht make config oder make xconfig, da sich diese
  Beschreibung ausschlielich auf make menuconfig sttzt.

  Kernel 2.0.36

  Unter dem Verweis Floppy, IDE, and other block devices ---> werden
  je nach RAID Wunsch folgende Optionen bentigt:



       [*] Multiple devices driver support
       <*> Linear (append) mode
       <*> RAID-0 (striping) mode
       <*> RAID-1 (mirroring) mode
       <*> RAID-4/RAID-5 mode




  Kernel 2.2.x bis einschlielich 2.2.10

  Hier stehen die RAID Optionen unter Block devices --->:



       [*] Multiple devices driver support
       <*> Linear (append) mode (NEW)
       <*> RAID-0 (striping) mode (NEW)
       <*> RAID-1 (mirroring) mode (NEW)
       <*> RAID-4/RAID-5 mode (NEW)
       [*] Boot support (linear, striped) (NEW)





  Zustzlich wird hier bei Auswahl von Linear oder RAID-0 Mode der Boot
  Support angeboten. Von RAID-1, 4 und 5 Devices kann mit den hier
  gegebenen Mglichkeiten nicht gebootet werden! Das funktioniert erst
  mit dem neuen RAID-Patch; siehe Abschnitt ``RAID-Verbunde mit den
  RAID-Tools Version 0.9x erstellen''.

  Nach Auswahl der ntigen Parameter erfolgt das Backen des Kernels
  mittels:

       make dep && make clean && make bzImage

  Das Kompilieren und Installieren der Module nicht vergessen:

       make modules && make modules_install

  Den Kernel zusammen mit der System.map umkopieren und zu guter Letzt
  den Aufruf von LILO nicht vergessen. Die Benutzer eines SCSI-Kon
  trollers mssen noch die initiale RAM-Disk mittels

       mkinitrd /boot/initrd Kernelversion

  erstellen, falls der SCSI-Kontroller als Modul eingeladen wird.

  Nach einem Neustart hat man nun alle Voraussetzungen erfllt, um ein
  RAID-Device zu erstellen.



  5.1.2.  Erstellen eines RAID-0 Devices

  Die Multiple Devices oder RAID-Devices, was dasselbe bezeichnet wie
  das RAID-Array oder den RAID-Verbund, werden nachher ber /dev/md*
  angesprochen. Bei der DLD 6.0 sind diese Devices bereits eingerichtet.

  Hier wird das Erstellen eines RAID-Devices anhand eines RAID-0 Devices
  erklrt.  Andere RAID-Modi lassen sich analog erstellen. Zuerst sollte
  man sich darber im klaren sein, welche und wieviele Partitionen man
  zusammenfassen mchte.  Diese Partitionen sollten leer sein; eine
  Einbindung von Partitionen, die Daten enthalten, welche nachher wieder
  zugnglich sein sollen, ist bisher meines Erachtens nicht mglich. Man
  sollte sich die Devices und ihre Reihenfolge nicht nur gut merken,
  sondern besser aufschreiben.

  Als Beispiel werden die zwei SCSI-Festplatten /dev/sda und /dev/sdb
  benutzt. Bei (E)IDE heien sie dann /dev/hda, /dev/hdb usw. Auf diesen
  Festplatten liegen nun zwei leere Partitionen im erweiterten Bereich
  /dev/sda6 und /dev/sdb6, welche zu einem RAID-0 Device zusammenfat
  werden sollen.



       mdadd /dev/md0 /dev/sda6 /dev/sdb6




  Sind diese Partitionen nicht gleich gro, so ist der zu erwartende
  Geschwindigkeitsvorteil nur auf dem Bereich gegeben, der von beiden
  Partitionen abgedeckt wird. Zum Beispiel sind eine 200 MB groe und
  eine 300 MB groe Partition als RAID-0 Device nur ber die ersten 400
  MB doppelt so schnell. Die letzten 100 MB der zweiten Festplatte
  werden ja nun nur noch mit einfacher Geschwindigkeit beschrieben.

  Allgemein heit das also, da man fr RAID-Devices jeder Art mglichst
  gleich groe Partitionen benutzen sollte. Die Aunahme bildet der
  Linear Modus, bei dem es wirklich egal ist, wie gro die einzelnen
  Partitionen sind.

  Nun mu Linux noch erfahren, als was fr ein RAID-Device es dieses
  /dev/md0 ansprechen soll:



       mdrun -p0 /dev/md0




  Hierbei steht -p0 fr RAID-0. Anschlieend mu auf diesem neuen RAID-
  Device ein Dateisystem erstellt werden:



       mke2fs /dev/md0





  Testweise kann man das RAID-Device nun nach /mnt mounten und ein paar
  kleine Kopieraktionen drberlaufen lassen:



       mount -t ext2 /dev/md0 /mnt




  Hat man an den unterschiedlichen Festplatten jeweils einzelne LEDs,
  sieht man jetzt schon sehr eindrucksvoll, wie das RAID arbeitet. Alle
  Daten, die ab jetzt auf /dev/md0 geschrieben werden, nutzen den RAID-0
  Modus.

  Bevor der Rechner runtergefahren wird, mssen die RAID-Devices jedoch
  noch gestoppt werden:



       umount /mnt
       mdstop /dev/md0






  5.1.3.  Automatisierung

  Um nicht nach jedem Bootvorgang diese Prozedur wiederholen zu mssen,
  bentigt man eine Datei /etc/mdtab, welche - analog zu /etc/fstab -
  die Mountparameter enthlt. Dies erledigt der Befehl:



       mdcreate raid0 /dev/md0 /dev/sda6 /dev/sdb6




  Dadurch wird die Datei /etc/mdtab erstellt, welche zustzlich noch
  eine Prfsumme enthlt und das Aktivieren des RAID-Devices durch den
  einfachen Befehl



       mdadd -ar




  erlaubt. Nun trgt man das RAID-Device (/dev/md0) noch unter
  /etc/fstab mit der Zeile



       /dev/md0 /mnt ext2 defaults 0 1




  ein, wobei natrlich /mnt durch jeden beliebigen Mountpoint ersetzt
  werden kann. Ein


       mount /mnt




  fhrt nun auch zum Mounten des RAID-0 Devices.

  Leider bercksichtigen die Init-Skripte der DLD 6.0 keine RAID-
  Devices, wodurch man noch einmal auf Handarbeit angewiesen ist.

  Zum Starten des RAID-Devices ist es unerllich den, Befehl mdadd -ar
  unterzubringen. Will man nicht von dem RAID-Device booten, so reicht
  es, den Befehl in die Datei /etc/init.d/bc.fsck_other eine Zeile ber
  den fsck Befehl einzutragen.



       #################################################
       # Filesystem check und u.U sulogin bei Problemen
       #################################################
       if [ ! -f /fastboot ]
       then
          mini_text="berprfe Filesysteme..."
          mini_startup "$mini_text" start
          log_msg_buf=`(


       mdadd -ar


             fsck -R -A -a
             ) 2>&1`
          fsck_result=$?
          old_fsck_result=$fsck_result

       [... Teile gelscht ...]

       #################################################




  Analog sollte der Befehl mdstop -a in die zuletzt ausgefhrte Datei
  nach dem umount Befehl eingetragen werden. Bei der DLD heit die Datei
  /etc/init.d/halt und sollte nach dem Eintrag an der richtigen Stelle
  so aussehen:




















  #################################################
  # Umount all FS
  #################################################
  mini_text="Die Filesysteme werden gelst"
  mini_shutdown "$mini_text" start
  LC_LANG=C
  LC_ALL=C
  export LC_LANG LC_ALL
  # Gib den sleeps der busy_wait_loops zeit sich zu beenden.
  # sonst gibt es :/usr device busy.
  sleep 1
  umount -a

  mdstop -a

  mini_shutdown "$mini_text" stop 0
  #################################################




  Damit kann man nun recht komfortabel das RAID-Device benutzen.

  Weitere RAID-Devices erstellt man auf dieselbe Weise, jedoch sind die
  Eintrge in den Init-Skripten nur einmal zu setzen.


  5.2.

  RAID-5 Device unter der DLD 6.01 erstellen

  Hier wird von einem frisch installiertem Linux DLD 6.01 ausgegangen.
  Die DLD 6.01 wird mit dem Kernel 2.2.3 ausgeliefert, der bereits die
  RAID Untersttzung im Kernel enthlt. Nhere Informationen zum
  Konfigurieren des Kernels unter der DLD finden Sie am Anfang dieses
  Kapitels.

  Zwar bringt die DLD 6.01 bereits einen Satz RAID-Tools mit, durch die
  man in der Lage wre, einen RAID-Verbund zu erstellen, jedoch ist das
  Erstellen eines RAID-Verbundes aufgrund eines Fehlers im RPM-Paket
  nicht mglich. Statt dessen sollten Sie sich von

       ftp.kernel.org:/pub/linux/daemons/raid/alpha/

  folgende Archive holen:


    raidtools-19990724-0.90.tgz

    raid0145-19990309-2.2.3

  Diese passen zu der Kernel Version der DLD 6.01. Nehmen Sie keine
  aktuelleren oder lteren Archive.

  Nun wird der RAID-Patch nach /usr/src/linux-2.2.3 kopiert und dort
  mittels


       patch -p1 < raidpatchfilename




  in den Sourcetree eingearbeitet. Es sollten nun etwa 20 Dateien
  kopiert und teilweise gendert werden.

  Nach dem Aufruf von



       make menuconfig





  sollte sich Ihnen das Men mit den unterschiedlichen Kerneloptionen
  prsentieren.  Bitte benutzen Sie nicht make config oder make xconfig,
  da sich diese Beschreibung ausschlielich auf make menuconfig sttzt.
  Hier aktivieren Sie unter Block devices ---> folgende Optionen:



       [*] Multiple devices driver support
       [*] Autodetect RAID partitions
       < > Linear (append) mode
       < > RAID-0 (striping) mode
       < > RAID-1 (mirroring) mode
       <*> RAID-4/RAID-5 mode
       < > Translucent mode
       < > Logical Volume Manager support (NEW)
       [*] Boot support (linear, striped)




  Da immer wieder einige Fehler durch modularisierte RAID-Optionen
  auftauchen, nehmen Sie sich an den obigen Einstellungen ein Beispiel
  und kompilieren Sie den bentigten RAID-Support erstmal fest in den
  Kernel ein.

  Passen Sie nun noch alle brigen Kerneleinstellungen Ihren Wnschen
  an, verlassen Sie das Men und kompilieren Sie Ihren neuen Kernel:



       make dep && make clean && make bzImage && make modules
       make modules_install




  Die Benutzer eines SCSI-Kontrollers sollten daran denken, die initiale
  RAM-Disk mittels



       mkinitrd /boot/initrd Kernelversion




  neu zu erstellen, falls der SCSI-Kontroller als Modul eingeladen wird.
  Anschlieend noch den neuen Kernel und die System.map Datei
  umkopieren, die /etc/lilo.conf bearbeiten, lilo ausfhren und das
  System neu starten.

  Ihr Kernel untersttzt nun alle ntigen RAID Optionen.

  Weiter geht es mit den RAID-Tools. Entpacken Sie die RAID-Tools z.B.
  nach /usr/local/src, fhren Sie das enthaltene Konfigurationsskript
  aus und kompilieren Sie die Tools:
       ./configure && make && make install




  Die RAID-Tools stellen Ihnen zum einen (unter anderem) die Datei
  mkraid zur Verfgung und erstellen zum anderen die /dev/md0-15
  Devices.

  Ob Ihr Kernel die RAID Optionen wirklich untersttzt, knnen Sie
  mittels



       cat /proc/mdstat




  in Erfahrung bringen. Diese Pseudodatei wird auch in Zukunft immer
  Informationen ber Ihr RAID System enthalten. Ein Blick hierher lohnt
  manchmal. Zu diesem Zeitpunkt sollte zumindest ein Eintrag enthalten
  sein, der Ihnen zeigt, das die RAID Personalities registriert sind.

  Die Multiple Devices oder RAID-Devices, was dasselbe bezeichnet wie
  das RAID-Array oder den RAID-Verbund werden nachher ber /dev/md*
  angesprochen.

  Zuerst sollte man sich darber im klaren sein, welche und wieviele
  Partitionen man zusammenfassen mchte. Diese Partitionen sollten leer
  sein; eine Einbindung von Partitionen, die Daten enthalten, welche
  nachher wieder zugnglich sein sollen, ist bisher meines Erachtens
  nicht mglich. Man sollte sich die Devices und ihre Reihenfolge nicht
  nur gut merken, sondern besser aufschreiben.

  Als Beispiel werden nun auf jeder Festplatte die in das sptere RAID
  aufgenommen werden soll eine Partition eingerichtet. Fr ein RAID-5
  sind dafr mindestens drei Partitionen ntig.

  Die Grundkonfiguration der zu erstellenden RAID-Devices werden nun
  unter /etc/raidtab gespeichert. Diese Datei enthlt alle ntigen
  Angaben fr ein oder mehrere RAID-Devices. Generelle Hilfe findet man
  in den Manual Pages von raidtab und mkraid. Eine /etc/raidtab Datei
  fr ein RAID-5 System mte so aussehen:



       raiddev /dev/md0
               raid-level              5
               nr-raid-disks           3
               nr-spare-disks          0
               persistent-superblock   1
               parity-algorithm        left-symmetric
               chunk-size              32

               device                  /dev/sdb1
               raid-disk               0
               device                  /dev/sdc1
               raid-disk               1
               device                  /dev/sdd1
               raid-disk               2





  Sind die Eintragungen in Ordnung, kann das RAID mittels




       mkraid /dev/md0




  gestartet werden. War auf diesen Partitionen bereits ein altes RAID-
  System vorhanden, dann mssen Sie mkraid mit der force Option
  benutzen:



       mkraid -f /dev/md0




  Die Einrichtung des RAID erfolgt im Hintergrund und kann mit



       cat /proc/mdstat




  verfolgt werden. Ist die Einrichtung erfolgt sollte ein cat
  /proc/mdstat etwa folgendes liefern:



       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[2] sdc1[1] sdb1[0] 782080 blocks level 5, 4k chunk,
       algorithm 2 [3/3] [UUU]
       unused devices: <none>




  Formatieren Sie Ihr neues Device:



       mke2fs /dev/md0




  Dieses Device kann nun - wie jedes andere Blockdevice auch - irgendwo
  in den Verzeichnisbaum gemountet werden:



       mount /dev/md0 /mnt




  Wenn das geklappt hat, mu noch die Systemeinrichtung fr shutdown und
  Aktivieren beim Booten eingebaut werden. Erstmal sollte man das per
  Hand testen:
       umount /mnt oder umount /dev/md0
       raidstop /dev/md0




  Ein cat /proc/mdstat mu jetzt so aussehen:



       Personalities : [raid5]
       read_ahead 1024 sectors
       unused devices: <none>




  Wenn das geht, dann war die Einrichtung erfolgreich und man kann den
  Vorgang in der Datei /etc/init.d/halt automatisieren:



       # Umount all FS
       #######################################
       mini_text="Die Filesysteme werden gelst"
       mini_shutdown "$mini_text" start
       LANG=C
       LC_ALL=C
       export LANG LC_ALL
       # Gib den sleeps der busy_wait_loops zeit sich zu beenden.
       # sonst gibt es :/usr device busy.
       sleep 5
       umount -a
       raidstop /dev/md0
       mini_shutdown "$mini_text" stop 0
       #######################################




  Sollten Sie doch gerne die RAID-Kernel-Option als Modul laden wollen,
  mssen Sie in /etc/conf.modules das raid5 Modul zum automatischen
  Laden eintragen:



       alias md-personality-4 raid5




  Das RAID mu nun noch in /etc/init.d/bc.fsck_other gestartet werden.














  #######################################
  if
  [ ! -f /fastboot ]
  then
  mini_text="berprfe Filesysteme..."
  mini_startup "$mini_text" start
  log_msg_buf=`(
  raidstart -a
  fsck -R -A -a
  ) 2>&1`
  fsck_result=$?
  old_fsck_result=$fsck_result
  if [ $fsck_result -eq 1 ]
  then
  mini_startup "$mini_text" stop 0
  else
  mini_startup "$mini_text" stop $fsck_result
  fi
  fi
  #######################################




  Nun kann man das System getrost neu booten.

  Alternativ kann man allerdings auch den im Kapitel ``RAID-Verbunde mit
  den RAID-Tools Version 0.9x erstellen'' beschriebenen Weg gehen und
  die neue Autodetect Option des RAID-Kernelpatches nutzen. Wie das
  genau funktioniert, erfahren Sie dort.


  6.


  RAID-Verbunde mit den RAID-Tools Version 0.9x erstellen


  6.1.  Vorbereiten des Kernels

  Sie bentigen hierfr den aktuellen, sauberen, ungepatchten
  Sourcetree des 2.2.10er Kernels. Bitte tun Sie sich selbst einen
  Gefallen und nehmen Sie keinen Sourcetree Ihrer Distribution. Diese
  sind meist schon mit Patches aller Art versehen und ein zustzliches
  ndern mit dem RAID-Patch wrde die Sourcen eventuell sogar zerstren.
  Die kompletten Kernel-Sourcen erhlt man auf:

       ftp.kernel.org:/pub/linux/kernel/v.2.2/


  Desweiteren bentigen Sie den fr diesen Kernel passenden RAID-Patch
  (raid0145-19990724-2.2.10) und die aktuellsten RAID-Tools
  (raidtools-19990724-0.90.tar.gz). Diese sind hier zu finden:


       ftp.kernel.org:/pub/linux/daemons/raid/alpha/


  Bitte achten Sie genau auf die passende Kernelversion!

  Zuerst mu der Kernel nach /usr/src/linux kopiert und mittels



       tar xvfz kernelfile.tar.gz

  entpackt werden. Alternativ und bei Benutzung mehrerer Kernel entpackt
  man ihn nach /usr/src/linux-2.2.10 und setzt den vermutlich schon
  vorhandenen symbolischen Link von /usr/src/linux auf
  /usr/src/linux-2.2.10. Dies ist fr das Patchen wichtig, da sonst der
  falsche Sourcetree gepatcht werden knnte. Auch ist es immer schlau,
  sich einen ungepatchten Original-Sourcetree aufzuheben, falls mal
  etwas schiefgeht.

  Nun wird der RAID-Patch nach /usr/src/linux-2.2.10 kopiert und dort
  mittels



       patch -p1 < raidpatchfilename




  in den Sourcetree eingearbeitet. Es sollten nun etwa 20 Dateien
  kopiert und teilweise gendert werden.

  Nach dem Aufruf von



       make menuconfig




  sollte sich Ihnen das Men mit den unterschiedlichen Kerneloptionen
  prsentieren. Bitte benutzen Sie nicht make config oder make xconfig,
  da sich diese Beschreibung ausschlielich auf make menuconfig sttzt.
  Hier aktivieren Sie unter Block devices ---> folgende Optionen:



       [*] Multiple devices driver support
       [*] Autodetect RAID partitions
       <*> Linear (append) mode
       <*> RAID-0 (striping) mode
       <*> RAID-1 (mirroring) mode
       <*> RAID-4/RAID-5 mode
       < > Translucent mode
       < > Logical Volume Manager support (NEW)
       [*] Boot support (linear, striped)




  Da immer wieder einige Fehler durch modularisierte RAID-Optionen
  auftauchen, nehmen Sie sich an den obigen Einstellungen ein Beispiel
  und kompilieren Sie den bentigten RAID-Support fest in den Kernel
  ein.

  Passen Sie nun noch alle brigen Kerneleinstellungen Ihren Wnschen
  an, verlassen Sie das Men und kompilieren Sie Ihren neuen Kernel:



       make dep && make clean && make bzImage && make modules
       make modules_install




  Die Benutzer eines SCSI-Kontrollers sollten daran denken, die initiale
  RAM-Disk mittels



       mkinitrd /boot/initrd Kernelversion




  neu zu erstellen, falls der SCSI-Kontroller als Modul eingeladen wird.
  Anschlieend noch den neuen Kernel und die System.map Datei
  umkopieren, die /etc/lilo.conf bearbeiten, lilo ausfhren und das
  System neu starten.

  Ihr Kernel untersttzt nun alle ntigen RAID Optionen.

  Weiter geht es mit den RAID-Tools. Entpacken Sie die RAID-Tools z.B.
  nach /usr/local/src, fhren Sie das enthaltene Konfigurationsskript
  aus und kompilieren Sie die Tools:



       ./configure && make && make install




  Die RAID-Tools stellen Ihnen zum einen (unter anderem) die Datei
  mkraid zur Verfgung und erstellen zum anderen die /dev/md0-15
  Devices.



  Ob Ihr Kernel die RAID Optionen wirklich untersttzt knnen Sie
  mittels



       cat /proc/mdstat





  in Erfahrung bringen. Diese Pseudodatei wird auch in Zukunft immer
  Informationen ber Ihr RAID System enthalten. Ein Blick hierher lohnt
  manchmal. Zu diesem Zeitpunkt sollte zumindest ein Eintrag enthalten
  sein, der Ihnen zeigt, da die RAID Personalities registriert sind.

  Die RAID-Devices, was dasselbe bezeichnet wie das RAID-Array oder den
  RAID-Verbund, werden nachher ber /dev/md* angesprochen.

  Zuerst sollte man sich darber im klaren sein, welche und wieviele
  Partitionen man zusammenfassen mchte. Diese Partitionen sollten leer
  sein und man sollte sich die Devices und ihre Reihenfolge nicht nur
  gut merken, sondern besser aufschreiben. Eine Einbindung von
  Partitionen, die Daten enthalten, welche nachher wieder zugnglich
  sein sollen, ist bisher nur ber einen Umweg mglich und das auch nur
  bei Verwendung eines RAID-0 Verbundes.

  Als Beispiel werden die zwei SCSI-Festplatten /dev/sda und /dev/sdb
  benutzt. Bei (E)IDE heien sie dann /dev/hda, /dev/hdb usw. Auf diesen
  Festplatten liegen nun zwei leere Partitionen im erweiterten Bereich
  /dev/sda6 und /dev/sdb6, welche zu einem RAID-0 Device zusammenfat
  werden sollen.
  6.2.

  Erstellen eines RAID-0 Devices

  Die Grundkonfiguration der zu erstellenden RAID-Devices werden hier
  unter /etc/raidtab gespeichert. Diese Datei enthlt alle ntigen
  Angaben fr ein oder mehrere RAID-Devices. Generelle Hilfe findet man
  in den Manuell Pages von raidtab und mkraid. Eine raidtab fr ein
  RAID-0 Sytem mit den oben beschriebenen zwei Partitionen mte so
  aussehen:



       raiddev /dev/md0
               raid-level              0
               nr-raid-disks           2
               persistent-superblock   1
               chunk-size              4

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1





  Sind die Eintragungen in Ordnung, kann das RAID mittels




       mkraid /dev/md0




  gestartet werden. Formatieren Sie Ihr neues Device:



       mke2fs /dev/md0




  Dieses Device kann nun - wie jedes andere Blockdevice auch - irgendwo
  in den Verzeichnisbaum gemountet werden.

  Um das RAID-Device wieder zu stoppen, unmounten Sie es und fhren Sie




       raidstop /dev/md0




  aus. Nach einem Reboot kann das Device mittels





  raidstart /dev/md0




  wieder aktivert und anschlieend berall hin gemountet werden.


  6.3.  Automatisierung

  Wieviel Komfort einem der neue RAID-Patch bringt, zeigt sich bei
  diesem Automatisierungsproze. Das bei der Verwendung der MD-Tools
  beschriebene Bearbeiten der Init-Skripte fllt vllig weg. Allerdings
  ist dafr der einmalige Umgang mit dem nicht ganz ungefhrlichen Tool
  fdisk vonnten. Bitte seien Sie sich absolut sicher mit der Einteilung
  Ihrer Festplattenpartitionen, bevor Sie sich damit beschftigen!

  Dieses Beispiel sieht nun vor, den RAID-0 Verbund /dev/md0 bestehend
  aus /dev/sda6 und /dev/sdb6 komfortabel bei jedem Startup zu mounten
  und automatisch auch wieder herunterzufahren.

  Der Trick liegt hierfr in der von Ihnen im Kernelmen gewhlten
  Option Autodetect RAID partitions. Der Kernel findet damit
  bestehende RAID-Arrays beim Booten automatisch und aktiviert sie.

  Voraussetzungen dafr sind:

  1. Autodetect RAID partitions ist im Kernel aktiviert.

  2. persistent-superblock 1 ist in der Datei /etc/raidtab fr Ihr
     Device gesetzt.

  3. Der Partitionstyp, der von Ihnen fr das RAID genutzten
     Partitionen, mu auf 0xFD gesetzt werden.

  Sind Sie dieser Anleitung bis hierher gefolgt, dann enthlt Ihr Kernel
  bereits die Autodetection und Sie haben Ihr RAID-Device auch mit dem
  persistent-superblock Modus erstellt. Bleibt noch das ndern des
  Partitionstyps.

  Stellen Sie sicher, da das RAID-Device gestoppt ist, bevor Sie
  anfangen, mit fdisk zu arbeiten:



       umount /dev/md0
       raidstop /dev/md0





  Bei der vorliegenden Konfiguration mten die Typen der Partitionen
  /dev/sda6 und /dev/sdb6 gendert werden. Dafr wird fdisk zuerst fr
  die erste SCSI-Festplatte aufgerufen:



       fdisk /dev/sda




  Man whlt nun die Option t fr toggle partition type und wird dann
  aufgefordert, den Hexcode oder einen Partitionstypen einzugeben.  l
  liefert eine Liste der untersttzten Codes, welche aber im Moment
  uninteressant ist. Geben Sie nun einfach fd ein und prfen Sie mit
  p, ob die Partition tatschlich gendert wurde. In der Id-Spalte
  sollte nun fd auftauchen. Beenden Sie anschlieend fdisk mit der
  Option w. Verfahren Sie analog mit den anderen zu Ihrem RAID
  gehrenden Partitionen. Um z.B. /dev/sdb6 zu ndern, rufen Sie fdisk
  so auf:



       fdisk /dev/sdb




  Haben Sie das erfolgreich hinter sich gebracht, wird Ihnen beim
  nchsten Startup der Kernel mitteilen, da er Ihr RAID-Device gefunden
  hat und es aktivieren. Schauen Sie ruhig nochmal mittels cat
  /proc/mdstat Ihr Device an. Es sollte nach diesem Neustart bereits
  aktiviert sein.

  Anschlieend knnen Sie Ihr /dev/md0 RAID-Device wie jede andere
  Partition in die /etc/fstab eintragen und so automatisch an einen
  beliebigen Ort mounten. Das Dateisystem auf dem RAID ist ext2, obwohl
  Sie den RAID-Verbund natrlich mit jedem beliebigen Dateisystem
  formatieren knnen.


  6.4.  Anmerkung

  Manche Distributionen sehen es innerhalb ihrer Init-Skripte bereits
  vor, eventuell vorhandene RAID-Devices beim Herunterfahren des Systems
  zu deaktivieren oder aber beim Booten zu aktivieren. Dieser Umstand
  kann zu Fehlermeldungen fhren, die Sie jedoch nicht weiter
  beeindrucken sollten. Diese Distributionen gehen meist davon aus, da
  Sie die alten MD-Tools in Verbindung mit den alten RAID-Tools Version
  0.4x benutzen. Ihr gepatchter Kernel bernimmt aber ab sofort das
  Aktivieren und Deaktivieren Ihrer mit den neuen RAID-Tools erstellten
  RAID-Devices fr Sie. Um die Fehlermeldungen zu unterdrcken,
  kommentieren Sie einfach in den passenden Init-Skripten (z.B.
  /etc/rc.d/init.d/halt) die Abfrage nach RAID-Devices und deren
  nachfolgender Deaktivierung mittels z.B.  mdstop -a - oder was auch
  immer dort angegeben ist - aus.



  7.

  Root-Partition oder Swap-Partition als RAID


  7.1.

  Root-Partition als RAID

  Eine existierende HOWTO beschftigt sich bereits mit dem Thema,
  allerdings ist Sie erstens auf Englisch und zweitens geht es durch
  neue Kerneloptionen auch eleganter als dort beschrieben.

  Bitte erleichtern Sie sich Ihre Arbeit und senken Sie das
  Frustnieveau, indem Sie vorab noch drei Tips beherzigen:


  1. Erstellen Sie ein Backup Ihrer Daten.

  2. Erstellen Sie sowohl eine funktionierende und getestete DOS als
     auch Linux Bootdiskette.
  3. Lesen Sie diese Ausfhrungen erstmal komplett durch, bevor Sie
     mittendrin feststellen mssen, etwas wichtiges vergessen zu haben,
     das Sie zu so sptem Zeitpunkt nicht mehr nachholen knnen.


  7.1.1.  DLD 6.0

  Fr dieses Verfahren wird noch eine DOS oder Win95 Partition in
  Verbindung mit dem Loadlin bentigt. Loadlin befindet sich - so das
  Programm nicht schon eingesetzt wird - auf der ersten DLD CD unter
  /delix/RPMS/i386/loadlin-1.6.2.i386.rpm.  Alternativ kann man sich
  auch eine Bootdiskette anfertigen.

  Der Hintergrund ist ganz einfach der, da LILO mit dem RAID-Device
  nicht zurechtkommt und man somit nicht explizit von diesem RAID-Device
  booten kann.  Daher behilft man sich hier entweder mit Loadlin, oder
  aber mit einem Mini Linux auf einer kleinen Extra-Partition. Weitere
  Mglichkeiten zum Booten von Linux auch von RAID-Verbunden wurden
  bereits im Abschnitt ``Mglichkeiten des Bootens von Linux''
  behandelt.

  Nichts desto trotz bleiben wir bei dem Verfahren mit Loadlin. Das
  Programm befindet sich nach erfolgreicher Installation des RPMS-
  Paketes unter /dos/loadlin/. Auf der oben genannten ntigen DOS
  Partition richtet man sich nun ein Verzeichnis wie z.B. Linux ein und
  kopiert die Dateien loadlin.bat und loadlin.exe zusammen mit dem
  frischen Kernel, in den die RAID-Parameter einkompiliert wurden,
  hinein.

  Um sicherzugehen, da auch wirklich nichts passiert, sollte man
  entweder die ntigen Treiber fr den (E)IDE Kontroller oder des
  passenden SCSI Kontroller auch mit in den Kernel einkompiliert haben.

  Die Batchdatei loadlin.bat wird nun dahingehend angepat, da wir die
  Parameter fr das zu bootende RAID-Device gleich mit angeben:



       md=<md device no.>,<raid level>,<chunk size>,dev0,...,devn





     md device no
        Die Nummer des RAID (md) Devices: 1 steht fr /dev/md1, 2
        fr /dev/md2 usw.


     raid level
        Welches RAID Level wird verwendet: -1 fr Linear Modus, 0
        fr RAID-0 (Striping).


     chunk size
        Legt die Chunk Size fest bei RAID-0 und RAID-1 fest.


     dev0-devn
        Eine durch Kommata getrennte Liste von Devices, aus denen das md
        Device gebildet wird, z.B. /dev/hda1,/dev/hdc1,/dev/sda1.

  Andere RAID-Modi auer Linear und RAID-0 werden im Moment nicht
  untersttzt.  Gem der vorher beschriebenen Anleitung wrde die Zeile
  in der linux.bat dann so aussehen:

       c:\linux\loadlin c:\linux\zimage root=/dev/md0 md=0,0,0,0,/dev/sda6,/dev/sdb6 ro




  Dies soll nur eine einzige Zeile sein; auerdem ist auch hier wieder
  auf die richtige Reihenfolge der Partitionen zu achten. Weiterhin
  men natrlich zwei oder mehrere Partitionen - zu entweder einem
  RAID-0 oder einem Linear Device zusammengefat - bereits vorliegen.
  Der Kernel mu die o.a. Bootoption und die ntigen RAID oder Linear
  Parameter in den Kernel einkompiliert haben; man beachte: Nicht als
  Module. Dann mountet man das RAID-Device, welches spter die Root-
  Partition werden soll, nach z.B. /mnt, kopiert mittels einer der im
  Abschnitt ``Mglichkeiten zum Kopieren von Daten'' beschriebenen
  Methoden die bentigten Verzeichnisse auf das RAID-Device.

  Speziell fr die DLD 6.0, aber auch fr alle anderen Distributionen
  sei hier gesagt, da beim Booten von einem RAID-Device der oben
  beschriebene Befehl mdadd -ar vor dem ersten mount Befehl auszufhren
  ist. Fr die DLD 6.0 heit das konkret, da der Befehl bereits in das
  Skript /etc/init.d/bc.mount_root eingetragen werden mu, da dort der
  erste mount Befehl ausgefhrt wird. Benutzer anderer Distributionen
  sind hier auf sich gestellt oder schauen sich zur Not die Methode mit
  den neueun RAID-Tools Version 0.9x an; siehe Abschnitt ``RAID-Verbunde
  mit den RAID-Tools Version 0.9x erstellen''.

  Jetzt fehlen nur noch die passenden Eintrge in /etc/fstab und
  /etc/lilo.conf, in denen man auf dem neuen RAID-Device die
  ursprngliche Root-Partition in /dev/md0 umndert - im Moment liegen
  diese Dateien natrlich noch unter /mnt.

  An dieser Stelle sollte man die obige Liste noch einmal in Ruhe
  durchsehen, sich vergewissern, da alles stimmt, und dann die DOS oder
  Win95 Partition booten. Dort fhrt man nun die Batchdatei linux.bat
  aus.



  7.1.2.  Generisch

  Im Abschnitt ``RAID-Verbunde mit den RAID-Tools Version 0.9x
  erstellen'' wurde bereits auf die vorzgliche Eigenschaft des
  automatischen Erkennens von RAID-Devices durch den Kernel-Patch beim
  Startup des Linux-Systems hingewiesen. Dieser Umstand legt die
  Vermutung nahe, da es mit dieser Hilfe noch einfacher ist, die Root-
  Partition als RAID-Device laufen zu lassen. Das ist auch wirklich so,
  allerdings gibt es auch hierbei immer noch einige Kleinigkeiten zu
  beachten.  Generell kann man Linux entweder mittels Loadlin oder mit
  Hilfe von LILO booten. Je nach Bootart ist die Vorgehensweise
  unterschiedlich aufwendig.

  Fr beide Flle braucht man jedoch erstmal ein RAID-Device. Um bei dem
  Beispiel des RAID-0 Devices mit den Partitionen /dev/sda6 und
  /dev/sdb6 zu bleiben, nehmen wir dieses Device und mounten es in
  unseren Verzeichnisbaum.

  Hier mu allerdings noch einmal darauf hingewiesen werden, da ein
  RAID-0 Device als Root-Partition ein denkbar schlechtes Beispiel ist.
  RAID-0 besitzt keinerlei Redundanz; fllt eine Festplatte aus, ist das
  Ganze RAID im Eimer.  Fr eine Root-Partition sollte man deshalb auf
  jeden Fall ein RAID-1 oder RAID-5 Device vorziehen. Auch das
  funktioniert Dank der neuen Autodetect Funktion und wird analog dem
  beschriebenen RAID-0 Verbund eingerichtet.

  Auf das gemountete RAID-Device /dev/md0 kopiert man nun ganz simpel
  mittels einer der im Abschnitt ``Mglichkeiten zum Kopieren von
  Daten'' beschriebenen Methoden das komplette Root-Verzeichnis.

  Danach mu auf dem RAID-Device noch die Datei /etc/fstab so angepat
  werden, das als Root-Partition /dev/md0 drinsteht und nicht mehr die
  originale Root-Partition (z.B. /dev/sda1).

  Erstellen Sie sich eine DOS-Bootdiskette - das pure DOS von Win95 tut
  es auch - und auf dieser ein Verzeichnis Linux. Hierher kopieren Sie
  nun aus dem passenden RPM-Paket Ihrer Distribution das DOS-Tool
  loadlin und Ihren aktuellen Kernel. Manchmal befindet sich loadlin
  auch unkomprimiert im Hauptverzeichnis der Distributions-CD. Der
  Kernel sollte natrlich die RAID-Untersttzung bereits implementiert
  haben. Nun erstellen Sie mit Ihrem Lieblingseditor in dem neuen Linux
  Verzeichnis eine loadlin.bat. Haben Sie Ihren Kernel z.B. vmlinuz
  genannt, sollte in der Datei loadlin.bat etwas in dieser Art stehen:



       a:\linux\loadlin a:\linux\vmlinuz root=/dev/md0 ro vga=normal




  Die Pfade mssen natrlich angepat werden. Ein Reboot und das Starten
  von der Diskette mit der zustzlichen Ausfhrung der linux.bat sollte
  Ihnen ein vom RAID-Device gebootetes Linux bescheren. Booten Sie
  generell nur ber Loadlin, so endet fr Sie hier die Beschreibung.

  Mchten Sie allerdings Ihr neues Root-RAID mittels LILO booten, finden
  Sie im Abschnitt ``Mglichkeiten des Bootens von Linux'' diverse
  Methoden aufgelistet und teilweise sehr genau beschrieben, mit denen
  Sie sich noch bis zum endgltigen Erfolg beschftigen mten.



  7.1.3.  Anmerkung zum redundanten Root-RAID

  Hat man sich bei einer anderen Distribution als SuSE 6.2 fr einen
  Root-RAID Verbund entschieden, der im Fehlerfall auch von der zweiten
  Festplatte booten soll, mu man noch folgendes beachten: Da auch auf
  der zweiten Festplatte eine Boot-Partition bentigt wird, die zwar
  ebenso in der /etc/fstab aufgenommen wurde, aber im Fehlerfall nicht
  mehr vorhanden ist, fllt die SuSE 6.2 Distribution in einen Notfall-
  Modus, in dem das root-Pawort eingegeben werden mu und das fragliche
  Dateisystem repariert werden soll. Dies kann Ihnen auch bei anderen
  Distributionen passieren.

  Es wird also ein Weg bentigt, die beiden Boot-Partitionen /boot und
  /boot2 nur dann zu mounten, wenn sie tatschlich krperlich im Rechner
  vorhanden sind. Hierbei hilft ihnen das Skript mntboot:
















  #!/bin/sh

  MNTBOOTTAB=/etc/mntboottab

  case "$1" in
    start)
      [ -f $MNTBOOTTAB ] || {
        echo "$0: *** $MNTBOOTTAB: not found" >&2
        break
      }

      PARTS=`cat $MNTBOOTTAB`

      for part in $PARTS ; do
        [ "`awk '{print $2}' /etc/fstab | grep "^$part$"`" == "" ] && {
          echo "$0: *** Partition $part: not in /etc/fstab" >&2
          continue
        }

        [ "`awk '{print $2}' </proc/mounts | grep "^$part$"`" != "" ] && {
          echo "$0: *** Partition $part: already mounted" >&2
          continue
        }

        fsck -a $part
        [ $? -le 1 ] || {
          echo "$0: *** Partition $part: Defect? Unavailable?" >&2
          continue
        }

        mount $part || {
          echo "$0: *** Partition $part: cannot mount" >&2
          continue
        }
      done

      exit 0
      ;;

    *)
      echo "usage: $0 start" >&2
      exit 1
      ;;
  esac




  Das Skript gehrt bei SuSE Distributionen nach /sbin/init.d, bei
  vermutlich allen anderen Linux Distributionen nach /etc/rc.d/init.d.
  Auf das Skript sollte ein symbolischer Link
  /sbin/init.d/rc2.d/S02mntboot zeigen. Fr alle anderen gilt es hier
  einen Link nach /etc/rc.d/rc3.d/S02mntboot zu setzen, da auer den
  SuSE Distributionen wohl alle im Runlevel 3 starten und Ihre Links
  dafr in diesem Verzeichnis haben. Das Skript prft ein paar
  Nebenbedingungen fr diejenigen Partitionen, die in /etc/mntboottab
  eingetragen sind (darin sollten /boot und /boot2 stehen) und ruft
  jeweils fsck und mount fr diese Partitionen auf. Da es bei allen
  anderen Distributionen keine /etc/mntboottab gibt, gilt es hier diese
  zu erstellen oder anzupassen.

  In der /etc/fstab sollten diese Partitionen mit noauto statt
  defaults eingetragen werden. Auerdem mu im sechsten Feld der Wert
  0 stehen, da die Distribution im Backup-Fall sonst in den Notfall-
  Modus fllt.

  7.2.

  RAID auch fr Swap-Partitionen?


  7.2.1.

  RAID-Technik mit normalen Swap-Partitionen

  Sie berlegen sich, RAID auch fr Swap Partitionen einzurichten? Diese
  Mhe knnen Sie sich sparen, denn der Linux-Kernel untersttzt das
  RAID-Verhalten auf Swap-Partitionen quasi von Haus aus. Legen Sie
  einfach auf verschiedenen Festplatten ein paar Partitionen an, nderen
  Sie den Partitionstyp mittels



       fdisk /dev/Ihre-Partition




  und der Option t auf 82 und erstellen Sie das Swap Dateisystem:



       mkswap /dev/Ihre-neue-Swap-Partition




  Nun fgen Sie diese in die /etc/fstab ein und geben allen Swap-
  Partitionen dieselbe Prioritt.



       /dev/hda3 swap swap defaults,pri=1    0 0
       /dev/hdb3 swap swap defaults,pri=1    0 0
       /dev/sda4 swap swap defaults,pri=1    0 0




  Vom nchsten Startup an werden die Swap Partitionen hnlich wie ein
  RAID-0 Device behandelt, da die Lese- und Schreibzugriffe ab jetzt
  gleichmig ber die Swap-Partitionen verteilt werden.

  Will man aus irgendwelchen Grnden zwei Swap-Partitionen hher
  priorisieren als eine Dritte, so kann man das auch ber den Parameter
  pri= ndern, wobei die Prioritt einen Wert zwischen 0 und 32767
  annehmen kann. Ein hherer Wert entspricht einer hheren Prioritt. Je
  hher die Prioritt desto eher wird die Swap-Partition beschrieben.
  Bei der folgenden Konfiguration wrde also /dev/hda3 wesentlich
  strker als Swap-Partition genutzt werden als /dev/hdb3.



       /dev/hda3 swap swap defaults,pri=5    0 0
       /dev/hdb3 swap swap defaults,pri=1    0 0







  7.2.2.  Swap-Partitionen auf RAID-1 Verbunden

  Erstellt man die Swap-Partition auf einem vorhandenen RAID-1 Verbund,
  formatiert sie dann mittels mkswap /dev/mdx und trgt sie als Swap-
  Partition in die /etc/fstab ein, so hat man zwar keinen, oder nur
  einen kleinen lesenden Geschwindigkeitsvorteil, jedoch den groen,
  nicht zu unterschtzenden Vorteil, da man bei einem Festplattendefekt
  nach dem Ausschalten des Rechners und dem Austausch der defekten
  Festplatte, ohne weitere manuelle Eingriffe wieder ein vollstndig
  funktionierendes System hat.  Der einzige Wermutstropfen betrifft
  hierbei die Freunde des Hot Plugging.  Erfahrungsgem verkraftet
  Linux das Hot Plugging eines dermaen gestalteten RAID-1 Verbundes
  nur, wenn vorher die Swap-Partitionen mittels swapoff -a abgeschaltet
  wurden.

  Als Warnung sei hier aber noch der schlimmste Fall genannt, ber den
  man sich Gedanken machen sollte: Hat man die Swap-Partition auf einen
  RAID-1 Verbund gelegt und zustzlich dafr eine Spare-Disk reserviert,
  so wrde diese Spare-Disk natrlich bei einem Festplattendefekt sofort
  eingearbeitet werden. Das ist zwar erwnscht und auch so gedacht,
  jedoch funktioniert das Resynchronisieren dieses RAID-1 Verbundes mit
  einer aktiven Swap-Partition nicht. Die Software-RAID Treiber nutzen
  beim Resynchronisieren den Puffer-Cache, die Swap-Partition aber
  nicht. Das Ergebnis ist eine defekte Swap-Partition.

  Als Lsung bleibt nur die Mglichkeit, keine Spare-Disks zu benutzen
  und nach einem Festplattenausfall swapoff -a per Hand auszufhren, die
  defekte Festplatte auszutauschen und nach dem Erstellen der
  Partitionen und des Swap-Dateisystems mit swapon -a wieder zu
  aktivieren.

  Ein Problem bleibt dennoch: Gesetzt den Fall der Linux-Rechner wrde
  aufgrund eines Stromausfalls nicht sauber heruntergefahren worden
  sein, so werden die RAID-Verbunde beim nchsten Startup automatisch
  resynchronisiert. Dies erfolgt mit einem automatischen ge-nice-ten
  Aufruf des entsprechenden RAID-Daemons im Hintergrund bereits zu
  Anfang der Bootprozedur. Im weiteren Bootverlauf werden aber
  irgendwann die Swap-Partitionen aktiviert und treffen auf ein nicht
  synchronisiertes RAID. Das Aktivieren der Swap-Partitionen mu also
  verzgert werden, bis die Resynchronisation abgeschlossen ist.

  Wie unter Linux blich lt sich auch dieses Problem mit einem Skript
  lsen.  Der Gedanke dabei ist, den Befehl swapon -a durch ein Skript
  zu ersetzen, welches die Pseudodatei /proc/mdstat nach der
  Zeichenfolge resync= durchsucht und im Falle des Verschwindens dieser
  Zeichenfolge die Swap-Partitionen aktiviert. Im folgenden finden Sie
  ein Beispiel abgedruckt:



















  #!/bin/sh
  #

  RAIDDEVS=`grep swap /etc/fstab | grep /dev/md|cut -f1|cut -d/ -f3`

  for raiddev in $RAIDDEVS
  do
  #  echo "testing $raiddev"
      while grep $raiddev /proc/mdstat | grep -q "resync="
      do
  #     echo "`date`: $raiddev resyncing" >> /var/log/raidswap-status
        sleep 20
       done
       /sbin/swapon /dev/$raiddev
  done

  exit 0





  8.  Spezielle Optionen der RAID-Devices


  8.1.


  Was bedeutet Chunk-Size?

  Mit dem Chunk-Size Parameter legt man die Gre der Blcke fest, in
  die eine Datei zerlegt wird, die auf einen RAID-Verbund geschrieben
  werden soll. Diese ist nicht mit der Blockgre zu verwechseln, die
  beim Formatieren des RAID-Verbundes als Parameter eines bestimmten
  Dateisystems angegeben werden kann. Vielmehr knnen die beiden
  verschiedenen Blockgren variabel verwendet werden und bringen je
  nach Nutzung unterschiedliche Geschwindigkeitsvor- wie auch
  -nachteile.

  Nehmen wir das Standardbeispiel: RAID-0 (/dev/md0) bestehend aus
  /dev/sda6 und /dev/sdb6 soll als angegebene Chunk-Size in der
  /etc/raidtab 4 kB haben. Das wrde heien, da bei einem Schreibproze
  einer 16 kB gren Datei der erste 4 kB Block und der dritte 4 kB
  Block auf der ersten Partition (/dev/sda6) landen wrden, der zweite
  und vierte Block entsprechend auf der zweiten Partition (/dev/sdb6).
  Bei einem RAID, das vornehmlich groe Dateien schreiben soll, kann man
  so bei einer greren Chunk-Size einen kleineren Overhead und damit
  einen gewissen Performancegewinn feststellen. Eine kleinere Chunk-Size
  zahlt sich dafr bei RAID-Devices aus, die mit vielen kleinen Dateien
  belastet werden. Somit bleibt auch der Verschnitt in einem
  ertrglichen Rahmen. Die Chunk-Size sollte also jeder an seine
  jeweiligen Bedrfnisse anpassen.

  Der Chunk Size Parameter in der /etc/raidtab funktioniert fr alle
  RAID-Modi und wird in Kilobyte angegeben. Ein Eintrag von 4 bedeutet
  also 4096 Byte. Mgliche Werte fr die Chunk-Size sind 4 kB bis
  128 kB, wobei sie immer einer 2er Potenz entsprechen mssen.

  Wie wirkt sich die Chunk-Size jetzt speziell auf die RAID-Modi aus?


     Linear Modus
        Beim Linear Modus wirkt sich die Chunk-Size mehr oder minder
        direkt auf die benutzten Daten aus. Allgemein gilt hier, bei
        vielen kleinen Dateien eher eine kleine Chunk-Size zu whlen und
        umgekehrt.
     RAID-0
        Da die Daten auf ein RAID-0 parallel geschrieben werden,
        bedeutet hier eine Chunk-Size von 4 kB, da bei einem
        Schreibproze mit einer Gre von 16 kB in einem RAID-Verbund
        aus zwei Partitionen die ersten beiden Blcke parallel auf die
        beiden Partitionen geschrieben werden und anschlieend die
        nchsten beiden wieder parallel. Hier kann man auch erkennen,
        das die Chunk-Size in engem Zusammenhang mit der verwendeten
        Anzahl der Partitionen steht. Eine generelle optimale
        Einstellung kann man also nicht geben. Diese hngt vielmehr vom
        Einsatzzweck des RAID-Arrays in bezug auf die Gre der
        hauptschlich verwendeten Dateien, der Anzahl der Partitionen
        und den Einstellungen des Dateisystems ab.


     RAID-1
        Beim Schreiben auf ein RAID-1 Device ist die verwendete Chunk-
        Size fr den parallelen Schreibproze unerheblich, da
        smtliche Daten auf beide Partitionen geschrieben werden mssen.
        Die Abhngigkeit besteht hier also wie beim Linear-Modus von den
        verwendeten Dateien. Beim Lesevorgang allerdings bestimmt die
        Chunk-Size, wie viele Daten zeitgleich von den unterschiedlichen
        Partitionen gelesen werden knnen. Der Witz ist hierbei, da
        alle Partitionen dieselben Daten enthalten (Spiegel-Partitionen
        eben) und dadurch Lesevorgnge wie eine Art RAID-0 arbeiten.
        Hier ist also mit einem Geschwindigkeitsgewinn zu rechnen.


     RAID-4
        Hier beschreibt die Chunk-Size die Gre der Parittsblcke auf
        der Paritts-Partition, welche nach dem eigentlichen
        Schreibzugriff geschrieben werden. Wird auf einen RAID-4 Verbund
        1 Byte geschrieben, so werden die Bytes, die die Blockgre
        bestimmen, von den RAID-4 Partitionen abzglich der Paritts-
        Partition (X-1, wobei X die Gesamtzahl der RAID-4 Partitionen
        ist) gelesen, die Paritts-Information berechnet und auf die
        Paritts-Partition geschrieben. Die Chunk-Size hat auf den
        Lesevorgang denselben geschwindigkeitsgewinnenden Einflu wie
        bei einem RAID-0 Verbund, da der Lesevorgang auf eine hnliche
        Weise realisiert ist.


     RAID-5
        Beim RAID-5 Verbund bezeichnet die Chunk-Size denselben Vorgang
        wie beim RAID-4. Eine allgemein vernnftige Chunk-Size lge hier
        zwischen 32 kB und 128 kB, jedoch treffen auch hier die Faktoren
        wie Nutzung des RAIDs und verwendete Partitionen auf den
        Einzelfall zu und die Chunk-Size sollte dementsprechend angepat
        werden.


     RAID-10
        Bei dieser Art des RAID-Verbundes bezieht sich die Chunk-Size
        auf alle integrierten RAID-Verbunde, also beide RAID-0 Verbunde
        und das RAID-1 Array.  Als Richtwert kann man hier 32 kB angeben
        - experimentieren ist hierbei natrlich wie bei allen anderen
        RAID-Modi auch ausdrcklich erlaubt.



  8.2.  Spezielle Optionen von mke2fs fr RAID-4 und RAID-5 Systeme

  Die Option -R stride=nn von mke2fs erlaubt es, verschiedene ext2
  spezifische Datenstrukturen auf eine intelligentere Weise auf das RAID
  zu verteilen. Ist die Chunk-Size mit 32 kB angegeben, heit das, da
  32 kB fortlaufende Daten als Block auf dem RAID-Verbund liegen. Danach
  wrde der nchste 32 kB Block kommen. Will man ein ext2 Dateisystem
  mit 4 kB Blockgre erstellen, erkennt man, da acht Dateisystemblcke
  in einem Verbundblock (Chunk Block; durch Chunk-Size angegeben)
  untergebracht werden. Diese Information kann man dem ext2 Dateisystem
  beim Erstellen mitteilen:



       mke2fs -b 4096 -R stride=8 /dev/md0




  Die RAID-4 und RAID-5 Performance wird durch diesen Parameter
  erheblich beeinflut. Das Benutzen dieser Option ist dringend
  anzuraten.


  8.2.1.


  raidtab Eintrge fr alle RAID-Modi

  Hier werden nur der neue RAID-Kernel-Patch in Verbindung mit den
  passenden RAID-Tools Version 0.9x und der entsprechenden Kernel-
  Version beschrieben.  Die lteren RAID-Tools der Version 0.4x finden
  keine Bercksichtigung. Der Kernel-Patch sollte installiert sein.
  Ebenso sollten die RAID-Optionen im Kernel aktiviert sein und der
  Kernel neu kompiliert und neu gebootet sein.


  8.3.  Linear (Append) Modus

  Der Linear Modus verbindet mehrere Partitionen unterschiedlicher Gre
  zu einem Gesamtverbund, der allerdings nicht parallel, sondern
  nacheinander beschrieben wird. Ist die erste Partition voll, wird auf
  der nchsten weitergeschrieben. Dadurch sind weder Performancevorteile
  zu erwarten noch eine gesteigerte Sicherheit. Im Gegenteil. Ist eine
  Partition des Linear-Verbundes defekt, ist meist auch der gesamte
  Verbund hinber.

  Die Parameter der /etc/raidtab fr einen Linear-Verbund sehen so aus:



       raiddev /dev/md0
               raid-level              linear
               nr-raid-disks           2
               persistent-superblock   1
               chunk-size              4

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1





  Zu beachten ist hier, da der Linear Modus keine Spare-Disks
  untersttzt. Was das ist und was man unter dem Persistent-Superblock
  versteht, finden Sie im Abschnitt ``Weitere Optionen der neuen RAID-
  Patches''. Der Parameter Chunk-Size wurde bereits in diesem
  Abschnitt weiter oben erlutert.

  Initialisiert wird Ihr neues Device mit folgendem Kommando:



       mkraid -f /dev/md0





  Danach fehlt noch ein Dateisystem:



       mke2fs /dev/md0




  Schon knnen Sie das Device berall hin mounten und in die /etc/fstab
  eintragen.


  8.4.  RAID-0 (Striping)

  Sie haben sich entschlossen, mehrere Partitionen unterschiedlicher
  Festplatten zusammenzufassen, um eine Geschwindigkeitssteigerung zu
  erzielen. Auf die Sicherheit legen Sie dabei weniger Wert, jedoch sind
  Ihre Partitionen alle annhernd gleich gro.

  Ihre /etc/raidtab sollte daher etwa so ausehen:



       raiddev /dev/md0
               raid-level              0
               nr-raid-disks           2
               persistent-superblock   1
               chunk-size              4

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1





  Hier werde genauso wie beim Linear Modus keine Spare-Disks
  untersttzt. Was das ist und was man unter dem Persistent-Superblock
  versteht, wird im Abschnitt ``Weitere Optionen der neuen RAID-
  Patches'' erlutert.

  Initialisiert wird Ihr neues Device mit folgendem Kommando:



       mkraid -f /dev/md0





  Danach fehlt noch ein Dateisystem:

       mke2fs /dev/md0




  Schon knnen Sie das Device berall hin mounten und in die /etc/fstab
  eintragen.


  8.5.  RAID-1 (Mirroring)

  Ein RAID-1 Verbund wird auch als Spiegelsystem bezeichnet, da hier
  der gesamte Inhalt einer Partition auf eine oder mehrere andere
  gespiegelt und damit eins zu eins dupliziert wird. Wir haben hier also
  den ersten Fall von Redundanz. Desweiteren knnen hier, falls es
  erwnscht ist, zum ersten mal Spare-Disks zum Einsatz kommen. Diese
  liegen pauschal erstmal brach im System und werden erst um Ihre
  Mitarbeit bemht, wenn eine Partition des RAID-1 Verbundes ausgefallen
  ist. Spare-Disks bieten also einen zustzlichen Ausfallschutz, um nach
  einem Ausfall mglichst schnell wieder ein redundantes System zu
  bekommen.

  Die /etc/raidtab sieht in solch einem Fall inkl. Spare-Disk so aus:



       raiddev /dev/md0
               raid-level              1
               nr-raid-disks           2
               nr-spare-disks          1
               chunk-size              4
               persistent-superblock   1

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1
               device                  /dev/sdc6
               spare-disk              0





  Weitere Spare- oder RAID-Disks wrden analog hinzugefgt werden.
  Fhren Sie hier nun folgendes Kommando aus:



       mkraid -f /dev/md0




  Mittels cat /proc/mdstat knnen Sie wieder den Fortschritt und den
  Zustand Ihres RAID-Systems erkennen. Erstellen Sie das Dateisystem
  mittels



       mke2fs /dev/md0





  sobald das RAID sich synchronisiert hat.

  Theoretisch funktioniert das Erstellen des Dateisystems bereits
  whrend sich das RAID-1 noch synchronisiert, jedoch ist es vorlufig
  sicherer, mit dem Formatieren und Mounten zu warten, bis das RAID-1
  fertig ist.


  8.6.  RAID-4 (Striping & Dedicated Parity)

  Sie mchten mehrere, aber mindestens drei etwa gleich groe
  Partitionen zusammenfassen, die sowohl einen Geschindigkeitsvorteil
  als auch erhhte Sicherheit bieten sollen. Das Verfahren der
  Datenverteilung beim Schreibzugriff ist hierbei genauso wie beim
  RAID-0 Verbund, allerdings kommt hier eine zustzliche Partition mit
  Parittsinformationen hinzu. Fllt eine Partition aus, so kann diese,
  falls eine Spare-Disk vorhanden ist, sofort wieder rekonstruiert
  werden; fallen zwei Partitionen aus, ist aber auch hier Schlu und die
  Daten sind verloren. Obwohl RAID-4 Verbunde eher selten eingestezt
  werden, mte Ihre /etc/raidtab dann so aussehen:



       raiddev /dev/md0
               raid-level              4
               nr-raid-disks           3
               nr-spare-disks          0
               persistent-superblock   1
               chunk-size              32

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1
               device                  /dev/sdc6
               raid-disk               2




  Mchten Sie Spare-Disks einsetzen, so werden sie analog der
  Konfiguration des RAID-1 Devices hinzugefgt, also:



               nr-spare-disks  1
               device          /dev/sdd6
               spare-disk      0




  Der Grund dafr, da RAID-4 Verbunde nicht oft eingesetzt werden,
  liegt daran, da die Paritts-Partition immer die gesamten Daten des
  restlichen - als RAID-0 arbeitenden - Verbundes schreiben mu. Denkt
  man sich einen Extremfall, wo zehn Partitionen als RAID-0 arbeiten und
  eine Partition nun die gesamten Parittsinformationen speichern soll,
  so wird unweigerlich deutlich, da die Paritts-Partition schnell
  berlastet ist.

  Initialisiert wird Ihr neues Device so:



       mkraid -f /dev/md0

  Danach fehlt noch ein Dateisystem:



       mke2fs /dev/md0




  Schon knnen Sie das Device berall hin mounten und in die /etc/fstab
  eintragen.


  8.7.  RAID-5 (Striping & Distributed Parity)

  Ein RAID-5 Verbund lst nun das klassische RAID-4 Problem elegant,
  indem es die Parittsinformationen gleichmig ber alle im RAID-5
  Verbund laufenden Partitionen verteilt. Hierdurch wird der
  Flaschenhals einer einzelnen Paritts-Partition wirksam umgangen,
  weshalb sich RAID-5 als Sicherheit und Geschwindigkeit bietender RAID-
  Verbund groer Beliebtheit erfreut. Fllt eine Partition aus, beginnt
  das RAID-5, falls Spare-Disks vorhanden sind, sofort mit der
  Rekonstruktion der Daten, allerdings kann RAID-5 auch nur den Verlust
  einer Partition verkraften. Genauso wie beim RAID-4 sind beim
  zeitgleichen Verlust zweier Partitionen alle Daten verloren. Eine
  /etc/raidtab fr ein RAID-5 Device she folgendermaen aus:




       raiddev /dev/md0
               raid-level              5
               nr-raid-disks           3
               nr-spare-disks          2
               persistent-superblock   1
               parity-algorithm        left-symmetric
               chunk-size              64

               device                  /dev/sda6
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1
               device                  /dev/sdc6
               raid-disk               2
               device                  /dev/sdd6
               spare-disk              0
               device                  /dev/sde6
               spare-disk              1




  Bei diesem Beispiel sind gleich zwei Spare-Disks mit in die
  Konfiguration aufgenommen worden.

  Der Parameter parity-algorithm legt die Art der Ablage der
  Parittsinformationen fest und kann nur auf RAID-5 Verbunde angewendet
  werden.  Die Auswahl left-symmetric bietet die maximale Performance.
  Weitere Mglichkeiten sind left-asymmetric, right-asymmetric und
  right-symmetric.

  Initialisiert wird Ihr neues Device so:




  mkraid -f /dev/md0




  Danach fehlt noch ein Dateisystem:



       mke2fs /dev/md0





  Schon knnen Sie das Device berall hin mounten und in die /etc/fstab
  eintragen.


  8.8.  RAID-10 (Mirroring & Striping)

  Die Kombination aus RAID-1 und RAID-0 Verbunden kann sehr flexibel
  eingesetzt werden, ist aber mit Vorsicht zu genieen. Man mu hierbei
  genau darauf achten, welche RAID-Partitionen in welchen RAID-Verbund
  eingebaut werden sollen. Um allerdings die ntige Redundanz
  gewhrleisten zu knnen, sind hierfr mindestens vier RAID-Partitionen
  auf unterschiedlichen Festplatten ntig. Als Beispiel erstellen wir
  zwei RAID-0 Verbunde ber jeweils zwei verschiedene RAID-Partitionen,
  die anschlieend per RAID-1 gespiegelt werden sollen. Eine passende
  /etc/raidtab ohne Spare-Disks she dann so aus:




































  raiddev /dev/md0
          raid-level              0
          nr-raid-disks           2
          nr-spare-disks          0
          persistent-superblock   1
          chunk-size              4

          device                  /dev/sda6
          raid-disk               0
          device                  /dev/sdb6
          raid-disk               1


  raiddev /dev/md1
          raid-level              0
          nr-raid-disks           2
          nr-spare-disks          0
          persistent-superblock   1
          chunk-size              4

          device                  /dev/sdc6
          raid-disk               0
          device                  /dev/sdd6
          raid-disk               1


  raiddev /dev/md2
          raid-level              1
          nr-raid-disks           2
          nr-spare-disks          0
          persistent-superblock   1
          chunk-size              4

          device                  /dev/md0
          raid-disk               0
          device                  /dev/md1
          raid-disk               1




  Jetzt gilt es aber ein paar Kleinigkeiten zu beachten, denn anders als
  bei den anderen RAID-Verbunden haben wir hier gleich drei RAID-Arrays
  erstellt, wobei man sich berlegen mu, welches denn nun nachher
  berhaupt gemountet und mit Daten beschrieben werden soll. Die
  Reihenfolge ergibt sich aus der Datei /etc/raidtab. /dev/md0 wird
  nacher auf /dev/md1 gespiegelt.

  Jedes Devices mu fr sich erstellt werden:



       mkraid -f /dev/mdx




  Ein Dateisystem per mke2fs wird nur auf /dev/md0 und /dev/md1
  erstellt.

  Die beste Reihenfolge ist, erst das Device /dev/md0 zu erstellen, zu
  formatieren und zu mounten. Dann wird /dev/md1 erstellt und
  formatiert. Dieses bitte nicht mounten, da ja hier keine Daten drauf
  geschrieben werden sollen. Zuletzt wird nun mittels


       mkraid -f /dev/md2




  das RAID-1 Array erstellt, jedoch sollte man hier wirklich kein
  Dateisystem erstellen. Ab jetzt kann man mittels



       cat /proc/mdstat




  die Synchronisation der beiden RAID-0 Verbunde /dev/md0 und /dev/md1
  verfolgen. Ist die Synchronisation abgeschlossen, werden alle Daten,
  die auf /dev/md0 geschrieben werden, auf /dev/md1 gespiegelt.
  Aktiviert, gemountet und in die Datei /etc/fstab eingetragen wird
  letzthin nur /dev/md0. Natrlich knnte man auch /dev/md1 mounten,
  jedoch sollte man sich fr ein Device entscheiden. Ausgeschlossen ist
  allerdings das Mounten von /dev/md2.


  9.  Weitere Optionen des neuen RAID-Patches


  9.1.

  Autodetection

  Die Autodetection beschreibt einen Kernel-Parameter, der in allen
  beschriebenen Kernel-Vorbereitungen als zu aktivieren gekennzeichnet
  wurde. Er erlaubt das automatische Erkennen und Starten der diversen
  im System vorhandenen RAID-Verbunde schon whrend des Bootvorganges
  von Linux und somit auch die Nutzung eines RAID-Verbundes als Root-
  Partition.

  Nheres zur Nutzung eines RAID-Verbundes als Root-Partition finden Sie
  im Abschnitt ``Root-Partition oder Swap-Partition als RAID''.


  9.2.


  Persistent-Superblock

  Diese beraus ntzliche Option ist uns nun in jeder /etc/raidtab
  Konfiguration ber den Weg gelaufen und mit dem Wert 1 eingetragen
  gewesen, doch was bedeutet er?

  Erinnern Sie sich noch an die MD-Tools oder gar an die mdtab? Mit
  diesen lteren Tools wurde eine Datei /etc/mdtab erstellt, die in
  lteren RAID-Untersttzungen die Konfiguration Ihres RAID-Verbundes
  inklusiv einer Prfsumme enthielt.

  Sollte nun ein RAID-Verbund gestartet werden, so mute der Kernel
  erstmal diese Datei auslesen, um berhaupt zu erfahren, wo er welches
  RAID mit welchen Partitionen zu starten hatte. Haben Sie den Abschnitt
  ber die Root-Partition als RAID gelesen, so ahnen Sie es schon: Um an
  diese Datei heranzukommen, mu aber erstmal das darunterliegende
  Dateisystem laufen. Eine Zeit lang war es mit der neueren
  Konfigurationsdatei /etc/raidtab genauso, aber hier nun tritt der
  Parameter persistent-superblock in Aktion. Die mglichen Werte dafr
  sind 0 und 1. Ist der Wert auf 0 gesetzt, so verhlt sich das
  Starten der RAIDs gem dem oben beschriebenen Vorgang. Ist er
  allerdings auf 1 gesetzt, wird beim Erstellen jedes neuen RAID-
  Verbundes an das Ende jeder Partition ein spezieller Superblock
  geschrieben, der es dem Kernel erlaubt, die bentigten Informationen
  ber das RAID direkt von den jeweiligen Partitionen zu lesen, ohne ein
  Dateisystem gemountet zu haben. Trotzdem sollten Sie immer eine
  /etc/raidtab pflegen und beibehalten. Ist im Kernel die Autodetection
  aktiviert, so werden die RAID-Arrays mit aktiviertem Persistent-
  superblock sogar direkt gestartet. Dies befhigt Sie, ganz simpel
  jedes RAID-Array als /dev/md0, /dev/md1 usw. einfach und problemlos in
  die /etc/fstab zu setzen. Der Kernel kmmert sich um das Aktivieren
  beim Startup, wodurch ein



       raidstart /dev/md0




  ebenso wie ein




       raidstop /dev/md0





  beim Systemhalt berflssig ist.

  Abgesehen davon ermglicht diese Option auch das Booten von einem
  RAID-4 oder RAID-5 Array als Root-Partition. Nheres zur Einrichtung
  eines RAID-Arrays als Root-Partition finden Sie im Abschnitt ``Root-
  Partition oder Swap-Partition als RAID''.


  9.3.


  Spare-Disks

  Spare-Disks bezeichnen Festplatten-Partitionen, die mit Hilfe der
  /etc/raidtab zwar schon einem bestimmten RAID-Verbund zugewiesen
  wurden, jedoch solange nicht benutzt werden, bis irgendwann mal eine
  Partition ausfllt. Dann allerdings wird die defekte Partition sofort
  durch die Spare-Disk ersetzt und die Rekonstruktion der Daten aus den
  Parittsinformationen wird gestartet. Den Fortschritt dieser
  Rekonstruktion knnen Sie - wie alles ber RAID-Devices - mittels



       cat /proc/mdstat




  nachvollziehen. Eine Spare-Disk sollte mindestens genauso gro oder
  grer sein als die anderen verwendeten RAID-Partitionen. Ist eine
  Spare-Disk kleiner als die verwendeten RAID-Partitionen und ist der
  RAID-Verbund fast voll mit Daten, so kann bei einem Ausfall einer
  RAID-Partition die Spare-Disk natrlich nicht alle Daten aufnehmen,
  was unweigerlich zu Problemen fhrt.


  9.4.  Spare-Disks und Hot Plugging

  Dank der neuen RAID-Tools ist es auch mglich, eine Spare-Disk
  nachtrglich in einen bereits vorhandenen RAID-Verbund einzufgen.
  Sinnvoll ist dieser Vorgang natrlich nur bei RAID-Modi, welche auch
  mit Spare-Disks umgehen knnen.  Erweitern Sie dazu erst Ihre
  /etc/raidtab um die neue Spare-Disk. Dies ist zwar fr den
  eigentlichen Vorgang nicht zwingend notwendig, jedoch empfiehlt es
  sich immer, eine sorgfltig gepflegte RAID-Konfigurationsdatei zu
  besitzen.  Fhren Sie dann zum Beispiel den Befehl


       raidhotadd /dev/md2 /dev/sde4




  aus, um in Ihren dritten RAID-Verbund die vierte Partition Ihrer
  fnften SCSI-Festplatte einzufgen. Der Befehl raidhotadd fgt die
  neue Partition automatisch als Spare-Disk ein und aktualisiert auch
  gleich die Superblcke aller in diesem RAID-Verbund befindlichen Par
  titionen. Somit brauchen Sie keine weiteren Schritte zu unternehmen,
  um die neue Spare-Disk Ihren anderen RAID-Partitionen als nutzbar
  bekannt zu geben.

  Diesen Befehl kann man sich auch zu Nutze machen, einen intakten RAID-
  Verbund dazu zu bewegen, die Superblcke neu zu schreiben oder sich zu
  synchronisieren.  Der in analog zu verwendende Befehl raidhotremove
  entfernt eine so hinzugefgte Spare-Disk natrlich auch wieder aus dem
  RAID-Array.


  10.


  Fehlerbehebung

  An dieser Stelle wird auf das Verhalten der unterschiedlichen RAID-
  Verbunde im Fehlerfall eingegangen. Die Szenarien zum Restaurieren
  defekter RAID-Verbunde reichen von den verschiedenen RAID-Modi bis hin
  zu Hot Plugging und Spare-Disks.

  Die folgenden Beschreibungen sttzen sich alle auf den Kernel 2.2.10
  mit den passenden RAID-Tools und Kernel-Patches, entsprechen also der
  Einrichtfunktionalitt des Abschnittes ber die neuen RAID-Tools
  Version 0.9x.  Die RAID-Verbunde, welche mit den MD-Tools unter der
  DLD 6.0 und DLD 6.01 eingerichtet und damit quasi auf die alte Art mit
  den RAID-Tools Version 0.4x erstellt wurden, werden mangels
  ausgiebieger Tests nicht bercksichtigt.

  Da sich viele Mglichkeiten der Synchronisation und der berwachung
  von RAID-Verbunden auf spezielle Funktionen und Optionen der neuen
  RAID-Tools beziehen, kann man die im folgenden geschilderten
  Prozeduren nicht mal nherungsweise auf RAID-Verbunde, die mit den
  alten RAID-Tools Version 0.4x eingerichtet wurden, beziehen. Solange
  das noch nicht getestet wurde, sind Sie hier auf sich gestellt.


  10.1.  Linear (Append) Modus und RAID-0 (Stripping)

  Hier ist die Mglichkeit der Rekonstruktion von Daten schnell erklrt.
  Da diese RAID-Modi keine Redundanz ermglichen, sind beim Ausfall
  einer Festplatte alle Daten verloren. Definitiv gilt das fr RAID-0;
  beim Linear Modus knnen Sie eventuell mit viel Glck noch einige
  Daten einer RAID-Partition sichern, so es denn die erste Partition ist
  und Sie irgendwie in der Lage sind, die Partition einzeln zu Mounten.
  Da RAID-0 die Daten parallel schreibt, erhalten Sie - auch wenn Sie
  eine Partition des RAID-0 Verbundes gemountet bekommen - niemals mehr
  als einen zusammenhngenden Block. Meiner Meinung nach ist an dieser
  Stelle eine Datenrettung von einem RAID-0 Verbund unmglich.


  10.2.  RAID-1, RAID-4 und RAID-5 ohne Spare-Disk

  Alle drei RAID-Modi versprechen Redundanz. Doch was mu gezielt getan
  werden, wenn hier eine Festplatte oder eine RAID-Partition ausfllt?
  Generell bieten sich einem zwei Wege, um die defekte Festplatte durch
  eine neue zu ersetzen.  Bedenken Sie bei dieser Beschreibung, da
  RAID-Partition und Festplatte synonym verwendet wird. Ich gehe von
  einer Partition je Festplatte aus. Die eine Methode beschreibt den
  heien Weg. Hierbei wird die Festplatte im laufenden Betrieb
  ausgetauscht. Die andere Methode beschreibt entsprechend den sicheren
  Weg. Beide Mglichkeiten haben fr die RAID-Modi 1, 4 und 5
  funktioniert.  Seien Sie insbesondere mit dem heien Weg trotzdem
  sehr vorsichtig, da die Benutzung dieser Befehle nicht Hot Plugging
  fhige Hardware zerstren knnte.


  10.2.1.

  Der heie Weg (Hot Plugging)

  Vorab mu gesagt werden, da Hot Plugging unter Linux auch vom SCSI-
  Treiber untersttzt werden mu, versuchen Sie Hot Plugging aber
  niemals mit (E)IDE Laufwerken. Zwar sollen alle Linux SCSI-Treiber des
  hier verwendeten 2.2.10er Kernels Hot Plugging untersttzen, jedoch
  ist dies nur bei dem Adaptec und Symbios Treiber sicher der Fall.

  Auch sollte Ihre Hardware und damit Ihr SCSI Kontroller und Ihre SCSI-
  Festplatten Hot Plugging untersttzen. Wie man das herausbekommt, ist
  schwer zu sagen, allerdings hat es auch mit einem fnf Jahre alten
  Symbios Kontroller und mehreren IBM-DCAS-UW Festplatten funktioniert.
  Generell ist die meiste im Consumer Bereich verfgbare Hardware nicht
  Hot Plugging fhig. Die zu Testzwecken eingesetzten UW-Wechselrahmen
  sind mit 250,- DM zwar recht gnstig, haben aber die Hot Plugging
  Tests alle klaglos verkraftet.

  Haben Sie irgendwelche Zweifel und sind nicht gezwungen, Hot Plugging
  zu nutzen, dann lesen Sie hier gar nicht erst weiter, sondern springen
  Sie sofort zu der sicheren Beschreibung. Auch ergeben sich aus
  meinen erfolgreichen Tests keine Garantien fr irgendeinen Erfolg. Mit
  allem Nachdruck mu daher an dieser Stelle auf die Mglichkeit der
  Zerstrung Ihrer Hardware durch die Benutzung von Hot Plugging mit
  ungeeigneter Hardware hingewiesen werden.

  Ihr RAID-1, 4 oder 5 ist gem einer der vorherigen Anleitungen
  erstellt worden und betriebsbereit. Um den ganzen Ablauf zu
  vereinfachen, wird ab jetzt nur noch von einem RAID-5 ausgegangen und
  auch die Beispielauszge mittels cat /proc/mdstat beschreiben ein
  RAID-5; RAID-1 und RAID-4 Benutzer knnen analog verfahren, richten
  aber bitte eine erhhte Aufmerksamkeit auf die Unterscheidung und
  Abstraktion der Meldungsparameter.

  Das Beispiel-RAID-5 ist in der /etc/raidtab so eingetragen:








  raiddev /dev/md0
          raid-level              5
          nr-raid-disks           4
          nr-spare-disks          0
          parity-algorithm        left-symmetric
          persistent-superblock   1
          chunk-size              32

          device                  /dev/sda5
          raid-disk               0
          device                  /dev/sdb6
          raid-disk               1
          device                  /dev/sdc6
          raid-disk               2
          device                  /dev/sdd1
          raid-disk               3





  cat /proc/mdstat meldet einen ordentlich laufenden RAID-5-Verbund:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
       unused devices: <none>




  Jetzt fllt die Festplatte /dev/sdd komplett aus. Beim nchsten
  Zugriff auf das RAID-5 wird der Mangel erkannt, der SCSI-Bus wird
  resetet und das RAID-5 luft relativ unbeeindruckt weiter. Die defekte
  RAID-Partition wird lediglich mit (F) gekennzeichnet und fehlt in
  den durch ein U markierten gestarteten RAID-Partitionen:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3](F) sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/3] [UUU_]
       unused devices: <none>






  Jetzt mchten Sie wieder ein redundantes System bekommen, ohne den
  Rechner neu booten zu mssen und ohne Ihr gemountetes RAID-5 stoppen
  zu mssen. Entfernen Sie dafr die defekte RAID-Partition (/dev/sdd1)
  mittels des bei den RAID-Tools beiliegenden Hilfsprogramms
  raidhotremove aus dem aktiven RAID-Verbund (/dev/md0):



       raidhotremove /dev/md0 /dev/sdd1




  Ein cat /proc/mdstat hat sich nun dahingehend verndert, da die
  defekte Partition komplett rausgenommen wurde und Ihnen eine fehlende
  Partition, um Redundanz zu gewhrleisten, mit [UUU_] angezeigt wird:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdc6[2] sdb6[1] sda5[0] 633984 blocks level 5,
        32k chunk, algorithm 2 [4/3] [UUU_]
       unused devices: <none>






  Tauschen Sie jetzt Ihre hoffentlich in einem guten Wechselrahmen
  befindliche defekte Festplatte gegen eine neue aus und erstellen Sie
  eine Partition darauf. Anschlieend geben Sie den Befehl, diese neue
  RAID-Partition wieder in das laufende Array einzubinden:



       raidhotadd /dev/md0 /dev/sdd1




  Der Daemon raid5d macht sich nun daran, die neue RAID-Partition mit
  den anderen zu synchronisieren:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[4] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/3] [UUU_] recovery=7%
       finish=4.3min
       unused devices: <none>




  Der Abschlu dieses Vorganges wird mit einem ebenso lapidaren wie
  beruhigendem resync finished quittiert. Eine Kontrolle ergibt
  tatschlich ein wieder vollstndig redundantes und funktionstchtiges
  RAID-5:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
       unused devices: <none>




  Als ob nicht gewesen wre.





  10.2.2.  Der sichere Weg

  Diese Methode sieht einen Wechsel einer defekten Festplatte in einem
  System vor, das ruhig fr einige Zeit heruntergefahren werden kann.

  Ihr RAID-1, 4 oder 5 ist gem einer der vorherigen Anleitungen
  erstellt worden und betriebsbereit. Um den ganzen Ablauf zu
  vereinfachen, wird ab jetzt nur noch von einem RAID-5 ausgegangen und
  auch die Beispielauszge mittels cat /proc/mdstat beschreiben ein
  RAID-5; RAID-1 und RAID-4 Benutzer knnen analog verfahren, richten
  aber bitte eine erhhte Aufmerksamkeit auf die Unterscheidung und
  Abstraktion der Meldungsparameter.

  Das Beispiel RAID-5 ist in der /etc/raidtab so eingetragen:



       raiddev /dev/md0
               raid-level              5
               nr-raid-disks           4
               nr-spare-disks          0
               parity-algorithm        left-symmetric
               persistent-superblock   1
               chunk-size              32

               device                  /dev/sda5
               raid-disk               0
               device                  /dev/sdb6
               raid-disk               1
               device                  /dev/sdc6
               raid-disk               2
               device                  /dev/sdd1
               raid-disk               3




  cat /proc/mdstat meldet einen ordentlich laufenden RAID-5-Verbund:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
       unused devices: <none>




  Jetzt fllt die Festplatte /dev/sdd komplett aus. Beim nchsten
  Zugriff auf das RAID-5 wird der Mangel erkannt, der SCSI-Bus wird
  resetet und das RAID-5 luft relativ unbeeindruckt weiter. Die defekte
  RAID-Partition wird lediglich mit (F) gekennzeichnet:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3](F) sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/3] [UUU_]
       unused devices: <none>




  Jetzt mchten Sie wieder ein redundantes System bekommen. Fahren Sie
  dazu Ihren Rechner herunter und tauschen Sie die defekte Festplatte
  gegen eine neue aus. Nach dem Startup mssen Sie auf der neuen
  Festplatte eine Partition einrichten. Ist die neue Partitionsangabe
  identisch mit der auf der defekten Festplatte, brauchen Sie nichts
  weiter zu machen, ansonsten mssen Sie noch Ihre /etc/raidtab
  anpassen. Nun stoppen Sie Ihren RAID-5 Verbund, falls er luft:



       umount /dev/md0
       raidstop /dev/md0




  Geben Sie den Befehl, um die neue RAID-Partition wieder in das RAID-5
  einzuarbeiten und die persistent-superblocks neu zu schreiben.
  Hierbei werden keine vorhandenen Daten auf dem bestehenden RAID-5
  Verbund zerstrt, es sei denn, Sie haben sich bei der eventuell
  ntigen Aktualisierung der /etc/raidtab vertan. Prfen Sie alles
  dringend nochmal.



       mkraid -f /dev/md0




  Inspizieren Sie anschlieend den Verlauf wieder mittels cat
  /proc/mdstat:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/4] [UUUU] resync=57%
       finish=1.7min
       unused devices: <none>




  Der Abschlu dieses Vorganges wird mit einem ebenso lapidaren wie
  beruhigendem resync finished quittiert. Eine Kontrolle ergibt
  tatschlich ein wieder vollstndig redundantes und funktionstchtiges
  RAID-5:



       Personalities : [linear] [raid0] [raid1] [raid5] [hsm]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[3] sdc6[2] sdb6[1] sda5[0] 633984 blocks
        level 5, 32k chunk, algorithm 2 [4/4] [UUUU]
       unused devices: <none>




  Das RAID-5 Array ist durch den mkraid Aufruf bereits aktiviert worden
  und mu lediglich wieder in den Verzeichnisbaum gemountet werden:



  mount /dev/md0 /mount-point




  Hiermit haben Sie wieder ein vollstndig redundantes und lauffhiges
  RAID-5 Array hergestellt.


  10.3.  RAID-1, RAID-4 und RAID-5 mit Spare-Disk


  10.3.1.  Der heie Weg (Hot Plugging)

  Um bei einem RAID-1, 4 oder 5 Verbund mit einer Spare-Disk per Hot
  Plugging, also ohne den RAID-Verbund auch nur herunterzufahren, eine
  RAID-Partition per raidhotremove aus dem laufenden Verbund zu
  entfernen und durch eine neue RAID-Partition zu ersetzen, sind die
  aktuellsten RAID-Tools erforderlich.  Erst diese haben durch das neue
  Programm raidsetfaulty die Mglichkeit, die ausgefallene RAID-
  Partition als defekt zu markieren und so den Befehl raidhotremove zu
  ermglichen. Zu beachten ist hier, da bei einem Festplattenausfall
  die Spare-Disk sofort eingearbeitet und das System anschlieend auch
  wieder Redundant ist und somit natrlich nicht die Spare-Disk, sondern
  die ausgefallene RAID-Partition als defekt markiert, ausgetauscht und
  als neue Spare-Disk wieder eingesetzt werden mu.

  Auch an dieser Stelle mu auf die Gefahr der teilweisen oder
  vollstndigen Zerstrung Ihrer Hardware hingewiesen werden, sollte
  diese nicht Hot Plugging fhig sein. Haben Sie die Mglichkeit zu
  whlen, benutzen Sie immer die sichere Methode.


  10.3.2.  Der sichere Weg

  Ein normal laufender RAID-5 Verbund mit Spare-Disk sollte bei einem
  RAID-Verbund /dev/md0 mit den RAID-Partitionen /dev/sdb1, /dev/sdc1
  und /dev/sdd1 plus der Spare-Disk /dev/sde1 unter /proc/mdstat
  folgendes zeigen:




       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0] 782080 blocks
        level 5, 32k chunk, algorithm 2 [3/3] [UUU]
       unused devices: <none>





  Durch das Entriegeln des Wechselrahmens wird ein Defekt der Partition
  /dev/sdc1 simuliert. Sobald wieder auf den RAID-5 Verbund zugegriffen
  wird, wird der Defekt bemerkt, der SCSI-Bus resetet und der Recovery-
  Proze ber den raid5d Daemon beginnt. Ein cat /proc/mdstat zeigt
  jetzt folgendes:








  Personalities : [raid5]
  read_ahead 1024 sectors
  md0 : active raid5 sde1[3] sdd1[2] sdc1[1](F) sdb1[0] 782080 blocks
   level 5, 32k chunk, algorithm 2 [3/2] [U_U] recovery=4%
   finish=15.4min
  unused devices: <none>




  Nach dem erfolgreichen Ende des Recovery-Prozesses liefert cat
  /proc/mdstat folgendes:



       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sde1[3] sdd1[2] sdc1[1](F) sdb1[0] 782080 blocks
        level 5, 32k chunk, algorithm 2 [3/2] [U_U]
       unused devices: <none>




  Den neuen Zustand sollte man nun sichern, indem man



       umount /dev/md0




  ausfhrt. Mit



       raidstop /dev/md0




  wird der aktuelle Zustand auf die RAID-Partitionen geschrieben. Ein



       raidstart -a
       cat /proc/mdstat




  zeigt dann:



       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sdd1[2] sde1[1] sdb1[0] 782080 blocks level 5,
        32k chunk, algorithm 2 [3/3] [UUU]
       unused devices: <none>





  Wie man erkennen kann, fehlt die defekte Partition /dev/sdc1[1](F),
  dafr hat die Spare-Disk /dev/sde1[1] deren Funktion bernommen.  Das
  ist jetzt der aktuelle Zustand des RAID-5. Nun wird die defekte
  Festplatte ersetzt, indem man den Rechner herunterfhrt und den
  Festplattenaustausch durchfhrt. Wenn man neu bootet, geht zunchst
  nichts mehr. Nun blo keine Panik kriegen, sondern erstmal der
  /etc/raidtab Datei den neuen Zustand beibringen:



       raiddev /dev/md0
               raid-level              5
               nr-raid-disks           3
               nr-spare-disks          1
               persistent-superblock   1
               parity-algorithm        left-symmetric
               chunk-size              32

               device                  /dev/sdb1
               raid-disk               0
               device                  /dev/sde1
               raid-disk               1
               device                  /dev/sdd1
               raid-disk               2
               device                  /dev/sdc1
               spare-disk              0




  Anschlieend bringt ein



       mkraid -f /dev/md0




  dem RAID-Verbund die neue Konstellation bei, ohne dabei die Daten auf
  dem RAID-5 Verbund zu beschdigen, solange Sie sich in der Datei
  /etc/raidtab nicht vertan haben. Schauen Sie sich die Eintrge in
  Ihrem eigenen Interesse bitte nochmal genau an. Ein cat /proc/mdstat
  zeigt jetzt die Resynchronisation. Man sieht jetzt die neue Zuordnung
  der RAID-Partitionen im RAID-Verbund, die exakt den neuen Stand der
  Zuordnung darstellen sollte.



       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sdc1[3] sdd1[2] sde1[19] sdb1[0] 782080 blocks
        level 5, 32k chunk, algorithm 2 [3/3] [UUU] resync=36%
        finish=6.7min
       unused devices: <none>




  Am Ende erscheint:



       raid5: resync finished


  Ein cat /proc/mdstat sieht nun so aus:



       Personalities : [raid5]
       read_ahead 1024 sectors
       md0 : active raid5 sdc1[3] sdd1[2] sde1[1] sdb1[0] 782080 blocks
        level 5, 32k chunk, algorithm 2 [3/3] [UUU]
       unused devices: <none>




  Nun ruft man



       raidstop /dev/md0




  auf, um alles auf die Platten zu schreiben. Hat der Kernel das RAID-
  Array bereits gestartet (persistent-superblock 1), kann man mit einem



       mount /dev/md0 /mount-point




  den RAID-Verbund wieder in das Dateisystem einhngen. Ansonsten ist
  vorher noch folgender Befehl notwendig:


       raidstart /dev/md0




  Hiermit haben Sie wieder ein vollstndiges laufendes RAID-5 Array
  hergestellt.



  11.  Nutzung & Benchmarks


  11.1.  Wofr lohnt das Ganze denn nun?


  11.1.1.  Performance

  Ein RAID-Device lohnt sich berall dort, wo viel auf die Festplatten
  zugegriffen wird. So kann zum Beispiel ein RAID-0 oder RAID-5 als
  /home Verzeichnis gemountet werden und das Nchste als /var oder /usr.
  Die Geschwindigkeitsvorteile sind gerade bei SCSI Hardware und
  festplattenintensiven Softwarepaketen wie KDE, StarOffice oder
  Netscape deutlich sprbar. Das ganze System fhlt sich erheblich
  performanter an.





  11.1.2.  Sicherheit

  Mit einem RAID-1 System kann man z.B. die Sicherheit seiner Daten
  erhhen.  Fllt eine Platte aus, befinden sich die Daten immer noch
  auf der gespiegelten Partition. hnliches gilt z.B. fr ein RAID-5
  System, welches zustzlich zur erhhten Sicherheit noch eine bessere
  Performance bietet.


  11.1.3.  Warum nicht?

  Hat man schon mehrere Festplatten in seinem System, stellt sich einem
  doch die Frage, warum man eigentlich solch ein kostenloses Feature wie
  Software-RAID nicht nutzen sollte. Man denke nur mal an die Preise fr
  gute Hardware-RAID Kontroller plus Speicher. Gerade der neue Kernel-
  Patch erleichtert einem vieles, was bisher nur auf Umwegen mglich
  war.

  Schreitet die Entwicklung der Software-RAID Untersttzung unter Linux
  weiterhin so gut fort und bedenkt man die stetig steigende Leistung
  und die fallenden Preise von CPUs, so kann man sich denken, da in
  naher Zukunft die CPU-Leistung, die eine Software-RAID Lsung
  bentigt, auch bei Standard-CPUs nicht mehr ins Gewicht fllt. Selbst
  heute reichen fr ein Software-RAID auf SCSI-Basis CPUs mit 200-300
  MHz vllig aus. Ein RAID-0 mit SCSI-Festplatten soll sogar auf einem
  486DX-2/66 halbwegs akzeptabel laufen.


  11.2.  Vorschlge und berlegungen zur RAID-Nutzung


  11.2.1.  Apache (Webserver allgemein)

  Aufgrund des hauptschlichen Lesevorgangs kann hier ein RAID-0 oder
  RAID-5 Verbund empfohlen werden. Die Log-Dateien sollten allerdings
  nicht auf einem RAID-5 Verbund liegen. Werden durch dynamische Seiten
  Daten mit einer Datenbank ausgetauscht, gelten dieselben berlegungen
  wie bei dem Datenbankabschnitt.


  11.2.2.  Log-Dateien

  Die typischen Sytem-Log-Dateien erbringen im allgemeinen keine hohe
  Dauerschreiblast. Hierbei ist es also egal, auf was fr einem RAID-
  Verbund sie liegen. Anders sieht es bei Log-Dateien aus, welche viele
  Accounting-Informationen enthalten. Diese sollte man aufgrund der
  allgemeinen Schreibschwche eines RAID-5 Verbundes eher auf schnellere
  RAID-Verbunde auslagern.


  11.2.3.  Oracle (Datenbank)

  Oracle kann mit Tablespaces, die aus mehreren Datenfiles auf
  unterschiedlichen Platten bestehen, umgehen. Um hier zu einer
  vernnftigen Lastverteilung ohne RAID zu kommen, ist allerdings
  einiges an Planung vorauszusetzen. Fr die Datenfiles und Controlfiles
  knnen RAID-0, RAID-1, RAID-10 oder auch RAID-5 Verbunde empfohlen
  werden; aus Sicherheitsgrnden ist allerdings von RAID-0 Verbunden
  abzuraten. Fr die Online-Redo-Log-Dateien empfiehlt sich aufgrund der
  Schreibschwchen kein RAID-5 System. Dafr knnten folgende Varianten
  konfiguriert werden:


    einfache Redo-Log-Dateien auf einem RAID-1 oder RAID-10 Verbund


    gespiegelte Redo-Log-Dateien jeweils auf einem RAID-0 Verbund;
     Oracle kann so konfiguriert werden, da mehrere parallele Kopien
     der Redo-Log-Dateien geschrieben werden.


  11.2.4.  Squid (WWW-Proxy und Cache)

  Fr Squid im speziellen gilt, da er von Haus aus mit mehreren Cache-
  Partitionen umgehen kann. Daher bringt ein darunterliegendes RAID-
  Array nicht mehr viel. Die Log-Dateien wiederrum ergeben auf einem
  RAID-0 Verbund durchaus Sinn. Fr andere WWW-Proxys wre hier ein
  RAID-0 Verbund angebracht.


  11.2.5.  Systemverzeichnisse

  Da hier verhltnismig wenig Schreibvorgnge stattfinden, jedoch auf
  jeden Fall die Redundanz gewhrleistet sein sollte, empfiehlt sich fr
  die Root-Partition ein RAID-1 Verbund und fr die /home, /usr, /var
  Verzeichnisse einer der redundanten RAID-Modi (RAID-1, RAID-5,
  RAID-10).


  11.3.  Benchmarks

  Um einen Vergleich zwischen den RAID-Verbunden mit ihren
  unterschiedlichen Chunk-Size Parametern ziehen zu knnen, findet das
  Programm Bonnie Anwendung, welches im Internet unter

       http://www.textuality.com/bonnie/


  residiert. Bonnie erstellt eine beliebig groe Datei auf dem RAID-Ver
  bund und testet neben den unterschiedlichen Schreib- und Lesestrate
  gien auch die anfallende CPU-Last. Allerdings sollte man die Testdatei
  mindestens doppelt so gro wie den real im Rechner vorhandenen RAM-
  Speicher whlen, da Bonnie sonst nicht die Geschwindigkeit des RAIDs,
  sondern das Cacheverhalten von Linux mit - und das ist garnicht mal
  so schlecht.

  Um die bei dem nicht sequentiellen Lesen von einem RAID-1 Verbund
  hhere Geschwindigkeit zu testen, eignet sich Bonnie aufgrund seiner
  einzelnen Testdatei allerdings nicht. Bonnie fhrt bei seinem Test
  also einen sequentiellen Schreib-/Lesevorgang durch, welcher nur von
  einer RAID-1 Festplatte beantwortet wird. Mchte man trotzdem einen
  RAID-1 Verbund geeignet testen, empfiehlt sich hierfr das Programm
  tiotest welches unter

       http://www.iki.fi/miku/


  zu finden ist.

  Da die Hardware wohl in jedem Rechner unterschiedlich ist, wurde
  darauf verzichtet, in der Ergebnistabelle absolute Werte einzutragen.
  Ein besserer Vergleich ergibt sich, wenn man die Geschwindigkeit einer
  Festplatte alleine als den Faktor eins zugrundelegt und bei Verwendung
  derselben Festplatten die RAID-Performance als Vielfaches dieses
  Wertes angibt. Da diese Konfiguration drei identische SCSI-Festplatten
  vorsieht, wre also maximal eine 3x1 fache Geschwindigkeit zu
  erwarten. Bedenken sollte man beim RAID-5 Testlauf auch, da hier nur
  2/3 der Kapazitt direkt von Bonnie beschrieben werden. Andererseits
  soll dieser Test ja zeigen, wieviel Geschwindigkeitseinbuen oder
  -gewinn bei einer Datei derselben Gre zu erwarten sind.


  |RAID-Modus  |  Chunk-Size  |  Blockgre ext2  |  Seq. Input      |  Seq. Output     |
  |            |              |                   |                  |                  |
  |Normal      |  %           |  4 kb             |  1 = Referenz    |  1 = Referenz    |
  |RAID-0      |  4 kb        |  4 kb             |  2,6 x Referenz  |  2,8 x Referenz  |
  |RAID-5      |  32 kb       |  4 kb             |  1,7 x Referenz  |  1,9 x Referenz  |
  |RAID-10     |  4 kb        |  4 kb             |  1,7 x Referenz  |  2,5 x Referenz  |


  Wie zu erwarten erreicht ein RAID-0 Verbund aus drei identischen
  Festplatten annhernd die dreifache Leistung. Auch die RAID-5
  Ergebnisse zeigen die bei drei Festplatten erwartete doppelte
  Leistung. Die Geschwindigkeit der dritten Festplatte kann ja aufgrund
  der Parittsinformation nicht gemessen werden. Die Leistung eines
  RAID-5 sollte also allgemein der aller verwendeten Platten minus eins
  fr die Parittsinformationplatte sein. Allerdings leidet RAID-5 an
  einer Art chronischer Schreibschwche, welche durch das Berechnen und
  Ablegen der Parittsinformationen zu erklren ist.

  Um sich die Belastung des Prozessors und die bentigte Zeit zum
  Schreiben einer Testdatei anzusehen, kann man sich auch wieder des
  Programmes dd befleiigen. Der folgende Aufruf von dd wrde eine
  100 MB groe Datei in das aktuelle Verzeichnis schreiben und die
  Ergebnisse anzeigen:


       time dd if=/dev/zero of=./Testdatei bs=1024 count=102400





  12.  Tips und Tricks

  Hier finden sowohl Tips und Tricks Erwhnung, die teilweise selbst
  getest wurden, als auch Besonderheiten, die nicht direkt durch die
  RAID-Kernelerweiterungen ermglicht werden, sondern allgemeiner Natur
  sind oder zustzlich integriert werden mssen. Einige der hier
  aufgelisteten Vorgnge sind mit allerhchster Vorsicht zu genieen und
  mehr oder minder ausdrcklich nicht fr eine Produktionsumgebung
  geeignet.


  12.1.  DRBD

  Drbd versteht sich als ein Block Device, um eine
  Hochverfgbarkeitslsung unter Linux zu bieten. Im Prinzip ist es eine
  Art RAID-1 Verbund, der ber ein Netzwerk luft. Nhere Informationen
  hierzu gibt es unter:

       http://www.complang.tuwien.ac.at/reisner/drbd/



  12.2.  Kernel 2.2.13 und der RAID-Patch

  Um Linux Software-RAID auch mit dem aktuellen 2.2.13er Kernel zu
  verwenden, kann man einfach den RAID-Patch fr den 2.2.10er Kernel auf
  den Sourcetree des 2.2.13er Kernels anwenden. Zweimal kommt vom patch
  die Frage, ob eine bereits gepatchte Datei nochmal gepatcht werden
  soll. Diese Fragen sollten alle mit no beantwortet werden. Der
  Erfolg ist, da der so gepatchte Kernel nach dem Kompilierlauf
  hervorragend mit allen RAID-Modi funktioniert. Wer sich den 2.2.10er
  RAID-Patch ersparen mchte, kann sich einen Kernel-Patch von Alan Cox
  fr den 2.2.13er Kernel aus dem Internet besorgen:


       ftp.kernel.org:/pub/linux/kernel/alan/




  12.3.  Entwicklerkernel 2.3.99-pre3 und der RAID-Patch

  Der aktuelle Entwicklerkernel 2.3.99-pre3 beinhaltet bereits die neue
  RAID-Untersttzung. Dieser Kernel lt sich mit den aktivierten RAID-
  Optionen einwandfrei kompilieren. Auch wenn das automatische Erkennen
  von RAID-Verbunden sich nicht explizit im Kernelauswahlmen anwhlen
  lt, funktioniert es ebenso wie die Linear- und RAID-0 Untersttzung.
  Leider werden RAID-1, RAID-4 und RAID-5 noch nicht untersttzt. Ein
  zustzliches Patchen des Kernels mit den 2.2.xer RAID-Patchen ist
  nicht nur unntig, sondern aufgrund des genderten Dateisystemcachings
  von vornherein zum Scheitern verurteilt. Hier hilft im Moment nur
  warten.


  12.4.

  SCSI-Festplatte zum Ausfallen bewegen

  Fr SCSI Devices aller Art - also nicht nur Festplatten - gibt es
  unter Linux die Mglichkeit, sie whrend des laufenden Betriebes quasi
  vom SCSI Bus abzuklemmen; dies allerdings ohne Hand an den
  Stromstecker oder Wechselrahmenschlssel legen zu mssen. Mglich ist
  dies durch den Befehl:



       echo "scsi remove-single-device c b t l" > /proc/scsi/scsi




  Die Optionen stehen fr:



       c = die Nummer des SCSI-Kontrollers
       b = die Nummer des Busses oder Kanals
       t = die SCSI ID
       l = die SCSI LUN




  Mchte man das 5. Device des 1. SCSI Kontrollers rausschmeien, mte
  der Befehl so aussehen:



       echo "scsi remove-single-device 0 0 5 0" > /proc/scsi/scsi




  Umgekehrt funktioniert das Hinzufgen einer so verbannten Festplatte
  natrlich auch:



       echo "scsi add-single-device c b t l" > /proc/scsi/scsi


  12.5.  berwachen der RAID-Aktivitten

  Um einen berblick ber den Zustand des RAID-Systems zu bekommen, gibt
  es mehrere Mglichkeiten:

     mdstat
        Mit einem



          cat /proc/mdstat





     haben wir uns auch bisher immer einen berblick ber den aktuellen
     Zustand des RAID-Systems verschafft.


     vmstat
        Ist man an der fortlaufenden CPU und Speicher-Belastung sowie an
        der Festplatten I/O-Belastung interessiert, sollte man auf der
        Konsole einfach ein



          vmstat 1




     ausprobieren.


     Mit grep oder perl mdstat abfragen
        Wie blich lt sich unter Linux auch eine Abfrage von
        /proc/mdstat mit einem Skript realisieren. Hier knnte man z.B.
        die Folge [UUUU] nach einem Unterstrich regelmig per cron
        abfragen - der Unterstrich signalisiert ja eine defekte RAID-
        Partition - und lt sich diese Information dann als E-Mail
        schicken. Lt man sich allerdings schon eine E-Mail schicken,
        kann man sich ebenso gut auch eine SMS an sein Handy schicken
        lassen. Dieser Weg ist dann auch nicht mehr weit. Ein passendes
        grep-Kommando zum Abfragen von /proc/mdstat knnte dieses
        Aussehen haben:



          grep '[\[U]_' /proc/mdstat





     xosview
        Die aktuelle Entwicklerversion dieses bekannten
        berwachungsprogrammes enthlt bereits eine Statussabfrage fr
        RAID-1 und RAID-5 Verbunde. Fr den ordnungsgemen Betrieb ist
        ein weiterer Kernel-Patch notwendig, der jedoch im tar-Archiv
        enthalten ist.





  12.6.

  Verndern des read-ahead-Puffers

  Um den read-ahead-Puffer jeglicher Major-Devices unter Linux einfach
  ndern zu knnen, gibt es ein nettes kleines Programm:




























































  /* readahead -- set & get the read_ahead value for the specified device
  */

  #include "stdio.h"
  #include "stdlib.h"
  #include "linux/fs.h"
  #include "asm/fcntl.h"

  void usage()
  {
    printf( "usage:  readahead <device> [newvalue]\n" );

  }/* usage() */


  int main( int args, char **argv )
  {
    int fd;
    int oldvalue;
    int newvalue;

    if ( args <= 1 ) {
      usage();
      return(1);
    }

    if ( args >= 3 && !isdigit(argv[2][0]) ) {
      printf( "readahead: invalid number.\n" );
      return(1);
    }

    fd = open( argv[1], O_RDONLY );
    if ( fd == -1 ) {
      printf( "readahead: unable to open device %s\n", argv[1] );
      return(1);
    }

    if ( ioctl(fd, BLKRAGET, &oldvalue) ) {
      printf( "readahead: unable to get read_ahead value from "
              "device %s\n", argv[1] );
      close (fd);
      return(1);
    }

    if ( args >= 3 ) {
      newvalue = atoi( argv[2] );
      if ( ioctl(fd, BLKRASET, newvalue) ) {
        printf( "readahead: unable to set %s's read_ahead to %d\n",
                argv[1], newvalue );
        close (fd);
        return(1);
      }
    }
    else {
      printf( "%d\n", oldvalue );
    }

    close (fd);
    return(0);

  }/* main */





  Damit kann man natrlich auch RAID-Devices tunen.

































































