  Linux Software-RAID HOWTO
  Niels Happel (happel@resultings.de)
  v0.2.32, 3. Februar 2002

  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.


     Hot Plugging
        Hot Plugging bezeichnet die Mglichkeit, einzelne Festplatten
        ohne ein Abschalten oder Herunterfahren des Rechners innerhalb
        eines redundanten RAID-Verbundes abzuschalten, auszutauschen und
        wieder einzufgen. Im gnstigsten Fall bietet einem Hot Plugging
        also die Mglichkeit, eine defekte Festplatte auszutauschen,
        ohne den Rechner neu starten zu mssen und ohne die
        Verfgbarkeit Ihres Servers zu beeintrchtigen. Fr die Benutzer
        wrde ein Austausch einer defekten Festplatte absolut
        transparent erfolgen.


     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 die Mglichkeit zur
        Einrichtung oder nderung von RAID-Verbunden zur Verfgung
        stellen, welche mit denen im Standardkernel Version 2.0.x oder
        2.2.x enthaltenen RAID-Treibern erstellt wurden. Sie beinhalten
        als MD-Tools bis einschlielich Version 0.4x fr ltere RAID-
        Verbunde dieselbe Grundfunktionalitt wie die RAID-Tools Version
        0.9x fr die aktuellen RAID-Treiber. Ihre Entwicklung ist zwar
        eingestellt worden, dennoch sind sie auf vielen lteren Linux-
        Distributionen vertreten. Die einzelnen Programme dieses MD-
        Tools Paketes zur Verwaltung von lteren RAID-Verbunden der
        Version 0.4x werden im entsprechenden Abschnitten abgehandelt.


     md0
        /dev/md0 ist ein Stellvertreter fr den erste RAID-Verbund 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 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
        Der 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 in Ihrem Kernel-Sourcetree.


     RAID-Tools
        Die RAID-Tools sind Hilfsprogramme, um den Umgang mit RAID-
        Verbunden in Form von Einrichtung, Wartung und nderung
        berhaupt zu ermglichen. Sie existieren fr die im
        Standardkernel 2.0.x und 2.2.x vorhandenen RAID-Treiber als MD-
        Tools in der Version 0.4x, fr die aktuellen RAID-Treiber als
        RAID-Tools mit der Versionsnummer 0.9x. Der Funktionsumfang der
        RAID-Tools Version 0.9x berwiegt gegenber dem der MD-Tools und
        erlaubt einen einfacheren Umgang mit den RAID-Systemen. Sie
        sollten bei der Verwendung der RAID-Tools prfen, ob sie auch
        die passende Version haben.


     RAID-Verbund
        RAID-Verbund, oder synonym RAID-Array ist die Bezeichnung fr
        eine Zusammenfgung von mehrerer Partitionen einzelner
        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 und damit als ein neuer RAID-Verbund zur Verfgung
        stehen wrden. ber den Stellvertreter /dev/md0 wrde dieser
        RAID-Verbund auf Linux Ebene als ein RAID-Device angesprochen
        werden, der als eine einzelne Zuweisung fr zwei
        darunterliegende Partitionen fungiert.


     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

    The Software RAID 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 und Marco Budde.

  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: happel@resultings.de


  Die jeweils aktuellste Version finden Sie unter:


    http://www.resultings.de/linux/

    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. Die beiden
  verschiedenen Bezeichnungen und teilweise auch die Grundidee von RAID-
  Systemen rhren daher, da Festplattenkapazitt zu besitzen frher
  eine durchaus enorm kostspielige Angelegenheit werden konnte. Kleine
  Festplatten waren recht gnstig, groe Festplatten aber unangemessen
  teuer. Man suchte also eine Mglichkeit, mehrere Festplatten
  kostengnstig zu einer groen zu verbinden.  Aufgrund der pltzlichen
  sprunghaften Erweiterung der erreichbaren Festplattenkapazitten und
  der unaufhaltsam sinkenden Preise pro Megabyte Festplattenplatz hat
  sich das Erreichen des damaligen wichtigsten Zieles eines RAID-
  Verbundes von selbst erledigt. Dennoch war man gewillt, den bis dahin
  erzielten Entwicklungsstand eines RAID-Systems auch anderweitig zu
  nutzen.

  Das Ziel eines RAID-Verbundes ist heutzutage deshalb 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 mit Software-RAID.

  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

  RAID-4 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 tatschlichen Daten ber alle Partitionen
  verteilt.  Allerdings erkauft man sich diese erhhte Sicherheit durch
  einen 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 bietet, 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 mit
  den eigentlichen Daten 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.

  SCSI Kontroller werden entweder als PCI Steckkarte zustzlich in den
  Computer eingebaut, oder sind in Form eines SCSI Chips bereits auf dem
  Mainboard integriert. Letztere so genannte On Board Controller
  hatten bei lteren Mainboards die unangenehme Eigenart, die Interrupt
  Leitungen fr den AGP Steckplatz und den SCSI Chip zusammenzulegen und
  waren so die Ursache fr manche Konfigurations-, Stabilitts- und
  daraus resultierend auch Geschwindigkeitsprobleme. Inzwischen
  funktionieren Mainboards mit integriertem SCSI Chip meist ebenso gut
  wie externe SCSI Kontroller und stehen in ihrer Leistung einander in
  nichts nach. Aktuelle Probleme knnen lediglich aus der mangelnden
  Treiberuntersttzung der verwendeten Distribution resultieren und auf
  diese Weise eine Linux Installation erschweren.

  Das Software-RAID unter Linux bietet zwar die Mglichkeit, einzelne
  Partitionen einer Festplatte in einen RAID-Verbund 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 Linux-Distribution funktionieren. Dieser Weg gilt vom Ablauf
  her auch fr alle neueren Kernel der 2.2.xer Reihe. In die Kernel der
  2.4.xer Reihe hat der neue RAID-Patch bereits Einzug in den Standard
  Kernel-Sourcetree erlangt, wodurch diese Kernel nicht mehr
  aktualisiert werden mssen.

  Im allgemeinen ist, vor allem durch die Tatsache, da die 2.4.xer
  Kernel nicht mehr gepatcht werden mssen, 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 oder fr eine
  Situation, in der bereits mit den lteren MD-Tools Version 0.4x
  eingerichtete RAID-Verbunde vorhanden sind.

  Generell sei hier schon gesagt, da die Lsung durch die MD-Tools und
  die mit dem 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/


  Aktuelle Distributionen, welche bereits auf einem 2.4.xer Kernel
  basieren, enthalten neben den aktuellen RAID-Treibern meistens auch
  ein RPM-Paket mit den aktuellen RAID-Tools. Im Falle einer RedHat 7.2
  Linux Distribution heit das entsprechende Paket
  raidtools-0.90-23.i386.rpm und ist bei einer Standardinstallation
  bereits eingerichtet. Der gesamte Einrichtungsteil zur Kernel-
  Aktualisierung fllt dann angenehmer Weise weg. Alles andere
  funktioniert allerdings genauso wie mit dem als Beispiel angefhrten
  Kernel 2.2.10.

  Generell aktualisiert der RAID-Patch Ihren vorhandenen Linux Kernel-
  Sourcetree wobei die RAID-Tools die zur Verwaltung von RAID-Verbunden
  bentigten Programme zur Verfgung stellen. 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 Version 0.4x 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 alle anderen 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 Version 0.4x 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.  Je nach Zielvorstellung sind dafr
  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 (fuer /boot)
          /dev/hd?2   primary   Linux swap (82)        128 MB (fuer swap)
          /dev/hd?3   primary   Linux raid auto (fd)   den Rest (fuer /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 unter /proc ein Pseudo-Dateisystem
        erstellt wird, 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 ltere 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 Mglichkeit 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 auf die Erstellung von RAID-Verbunden
  unter Zuhilfenahme der alten MD-Tools Version 0.4x. Die aktuellen
  RAID-Tools Version 0.9x und der RAID-Patch werden in allen
  Einzelheiten im Abschnitt ``RAID-Verbunde mit den RAID-Tools Version
  0.9x erstellen'' beschrieben.


  5.1.  Vorbereiten des Kernels

  Der Standardkernel Ihrer Distribution besitzt prinzipiell schon gleich
  nach der Installation alle Optionen, um RAID-Devices zu erstellen.

  Desweiteren ist noch das Paket md-0.35-2.i386.rpm ntig, welches zum
  Beispiel fr die DLD auf der ersten DLD CD unter delix/RPMS/i386/ zu
  finden ist. Auch wenn dieses Paket bei Ihrer Distribution eine andere
  Versionsnummer haben sollte, knnen Sie es ruhig benutzen.

  Der Vollstndigkeit halber wird hier trotzdem auf die ntigen Kernel-
  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 bei den 2.2.xer Kerneln bei der Auswahl des Linear
  oder RAID-0 Modes 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.2.  Erstellen eines RAID-0 Devices

  Die RAID-Arrays oder RAID-Verbunde werden nachher ber /dev/md*
  angesprochen. Bei der DLD 6.0 sind diese Devices bereits eingerichtet.
  Schauen Sie zur Sicherheit unter /dev/ nach.

  Jetzt wird das Erstellen eines RAID-Verbundes 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 wrden sie dann /dev/hda, /dev/hdb heien. Auf
  diesen Festplatten liegen nun zwei leere Partitionen im erweiterten
  Bereich /dev/sda6 und /dev/sdb6, welche zu einem RAID-0 Device
  zusammengefat 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.

  Wieder anders sieht das bei der Einrichtung eines RAID-1 Verbundes
  aus. Hierbei wird der berschige Platz von der greren Partition
  nicht genutzt und liegt damit brach auf der Festplatte.

  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.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.
  Inwieweit andere Distributionen bereits RAID-Verbunde bercksichtigen,
  sollten Sie durch einen Blick in die Startskripte feststellen und
  gegebenenfalls hnlich den hier abgedruckten Beispielen anpassen.

  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-Verbunde erstellt man auf dieselbe Weise, jedoch sind die
  Eintrge in den Init-Skripten nur einmal zu setzen.



  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 Manual Pages von raidtab und mkraid. Eine raidtab fr ein
  RAID-0 System 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
  Version 0.4x 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 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 benutzt wird und nicht mehr
  die originale Root-Partition.

  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 ein
  RAID-Verhalten auf Swap-Partitionen hnlich dem RAID-0 Modus 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 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 seien hier aber noch zwei der schlimmsten Flle genannt,
  ber die man sich Gedanken machen sollte und die noch dazu voneinander
  abhngig sind:

  Der erste Fall beschreibt die Situation, Swap auf einem RAID-1 Verbund
  mit den alten RAID-Tools und damit den sowohl in den 2.0.xer als auch
  in den 2.2.xer orginal im Kernel vorhandenen RAID Treibern zu
  benutzen. Hierbei knnen nach einer gewissen Laufzeit des Linux-
  Systems unweigerliche Abstrze auftreten. Der Grund dafr liegt in der
  Problematik der unterschiedlichen Cachestrategie von Software-RAID
  einerseits und Swap-Partitionen andererseits. Erst mit den aktuellen
  RAID-Treibern ist der Betrieb einer Swap-Partition auf einem RAID-
  Verbund stabil geworden. Wollen Sie also einen sicheren RAID-Verbund
  erstellen, der nachher aus Grnden der Ausfallsicherheit auch die
  Swap-Partition beinhalten soll, benutzen Sie bitte immer die aktuellen
  RAID-Treiber in Form des aktuellen RAID-Patches.  Dies entspricht dann
  der Einrichtfunktionalitt der RAID-Tools Version 0.9x.

  Der zweite Fall beschreibt die generelle Problematik, mit der Sie sich
  bei der Einrichtung von Swap-Partitionen in Bezug auf Software-RAID
  auseinandersetzen mssen:

  Hat man die Swap-Partition auf einen RAID-1 Verbund gelegt und
  zustzlich dafr eine Spare-Disk reserviert, 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 dazu 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 Version 0.9x


  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 groen 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.3.


  Beispiel-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.1.  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.3.2.  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.3.3.  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.3.4.  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.3.5.  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.3.6.  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 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 sehr sehr schwierig.


  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
  kosten etwa 125,- EUR und haben alle Hot Plugging Tests 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 entsprechende Partition mglichst auch mit der RAID-
  Autostart Option durch das fd Flag 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. Weiterhin ist es erforderlich, da Ihr RAID-
  Verbund luft. Ist das nicht bereits whrend des Bootvorganges
  erfolgt, mssen Sie selbiges jetzt nachhlen:



       raidstart /dev/md0




  Jetzt fehlt noch der 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. Ansonsten:



       raidhotadd /dev/md0 /dev/sdd1




  Dieser Befehl suggeriert zwar, da hier eine Art Hot Plugging
  stattfindet, heit in diesem Zusammenhang aber nichts anderes, als da
  eine RAID-Partition in ein vorhandenes RAID-Array eingearbeitet wird.
  Wrden Sie stattdessen den Befehl mkraid mit seinen Parametern
  aufrufen, wrde dies zwar auch zu dem Erfolg fhren, ein neues RAID-
  Array zu erstellen, jedoch dummerweise ohne Daten und damit natrlich
  auch und vor allem ohne die bisher vorhandenen Daten.

  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 mu nun lediglich wieder in den Verzeichnisbaum
  gemountet werden, falls Ihr RAID-Array nicht bereits innerhalb der
  /etc/fstab whrend des Bootvorganges gemountet wurde:



       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 sollten Sie nun sichern, indem Sie



       umount /dev/md0




  ausfhren. 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 Sie erkennen knnen, 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 Sie den Rechner herunterfahren und den
  Festplattenaustausch durchfhrt. Wenn Sie neu booten, 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



       raidhotadd /dev/md0 /dev/sdc1




  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.11 bis 2.2.13 und der RAID-Patch

  Um Linux Software-RAID auch mit dem aktuelleren Kerneln zu verwenden,
  kann man einfach den RAID-Patch fr den 2.2.10er Kernel auf den
  Sourcetree der 2.2.11er bis 2.2.13er Kernel 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.11er bis 2.2.13er Kernel aus dem Internet besorgen:


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


  Diese enthalten auch die jeweils aktuellen RAID-Treiber.


  12.3.  Kernel 2.2.14 bis 2.2.16 und der RAID-Patch

  Auch in den aktuellsten 2.2.xer Linux Kerneln ist der aktuelle RAID-
  Patch noch nicht enthalten. Passende Patches hierfr findet man im
  Internet bei Ingo Molnar:


       http://people.redhat.com/mingo/raid-patches/





  12.4.  Kernel der 2.4.xer Reihe und der RAID-Patch

  Alle aktuellen Kernel der 2.4.xer Reihe beinhalten bereits die neue
  RAID-Untersttzung. Diese Kernel mssen nicht mehr gepatcht werden,
  lassen sich mit den aktivierten RAID-Optionen einwandfrei kompilieren
  und funktionieren problemlos.


  12.5.

  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.6.  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.7.

  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.



  12.8.  Bestehenden RAID-0 Verbund erweitern

  Um einen RAID-0 Verbund zu vergrern, zu verkleinern oder aus einer
  einzelnen Festplatte ein RAID-0 zu erstellen, gibt es von Jakob
  Oestergaard einen Patch fr die RAID-Tools:


       http://ostenfeld.dk/~jakob/raidreconf/raidreconf-0.0.2.patch.gz


  Dieser Patch mu in den Source der RAID-Tools eingearbeitet werden und
  die RAID-Tools anschlieend neu kompiliert und installiert werden. Das
  Erweitern eines RAID-0 Verbundes funktioniert dann durch zwei
  unterschiedliche /etc/raidtab Dateien, die miteinander verglichen
  werden und eine zustzliche Partition innerhalb desselben Verbundes
  eingearbeitet wird. Nach dem stoppen des zu verndernden RAID-
  Verbundes, erfolgt der Aufruf durch:



       raidreconf /etc/raidtab /etc/raidtab.neu /dev/md0




  Hierbei mu in der /etc/raidtab.neu fr den Verbund /dev/md0 eine
  weitere Partition im Gegensatz zu /etc/raidtab eingetragen sein.



  12.9.  Bestehenden RAID-5 Verbund erweitern

  Einen bereits initialisierten und laufenden RAID-5 Verbund kann man
  derzeit leider nicht mit weiteren Festplatten vergrern. Die einzige
  Mglichkeit besteht darin, die Daten zu sichern, den RAID-5 Verbund
  neu aufzusetzen und die Daten anschlieend zurck zu schreiben.


























