SelfLinux Systemverwaltung Linux Software-RAID HOWTO Abschnitt 12 | SelfLinux-0.13.0

| Linux Software-RAID HOWTO | Autor Formatierung GPL

#### 12 Tipps und Tricks

Hier finden sowohl Tipps und Tricks Erwähnung, die teilweise selbst getestet wurden, als auch Besonderheiten, die nicht direkt durch die RAID-Kernelerweiterungen ermöglicht werden, sondern allgemeiner Natur sind oder zusätzlich integriert werden müssen. Einige der hier aufgelisteten Vorgänge sind mit allerhöchster Vorsicht zu genießen und mehr oder minder ausdrücklich nicht für eine Produktionsumgebung geeignet.

#### 12.1 DRBD

Drbd versteht sich als ein Block Device, um eine Hochverfügbarkeitslösung unter Linux zu bieten. Im Prinzip ist es eine Art RAID-1 Verbund, der über ein Netzwerk läuft. Nähere 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 für 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 noch mal gepatcht werden soll. Diese Fragen sollten alle mit "no" beantwortet werden. Der Erfolg ist, dass der so gepatchte Kernel nach dem Kompilierlauf hervorragend mit allen RAID-Modi funktioniert. Wer sich den 2.2.10er RAID-Patch ersparen möchte, kann sich einen Kernel-Patch von Alan Cox für den 2.2.11er bis 2.2.13er Kernel aus dem Internet besorgen:

> ftp://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 hierfür 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-Unterstützung. Diese Kernel müssen nicht mehr gepatcht werden, lassen sich mit den aktivierten RAID-Optionen einwandfrei kompilieren und funktionieren problemlos.

#### 12.5 SCSI-Festplatte zum Ausfallen bewegen

Für SCSI Devices aller Art - also nicht nur Festplatten - gibt es unter Linux die Möglichkeit, sie während des laufenden Betriebes quasi vom SCSI Bus abzuklemmen; dies allerdings ohne Hand an den Stromstecker oder Wechselrahmenschlüssel legen zu müssen. Möglich ist dies durch den Befehl:

root@linux # echo "scsi remove-single-device c b t l" > /proc/scsi/scsi

Die Optionen stehen für:

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

Möchte man das 5. Device des 1. SCSI-Controllers rausschmeißen, müsste der Befehl so aussehen:

root@linux # echo "scsi remove-single-device 0 0 5 0" > /proc/scsi/scsi

Umgekehrt funktioniert das Hinzufügen einer so verbannten Festplatte natürlich auch:

root@linux # echo "scsi add-single-device c b t l" > /proc/scsi/scsi

#### 12.6 überwachen der RAID-Aktivitäten

Um einen überblick über den Zustand des RAID-Systems zu bekommen, gibt es mehrere Möglichkeiten:

mdstat

> Mit einem

root@linux ~# 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

root@linux ~# vmstat 1

> ausprobieren.

Mit grep oder perl mdstat abfragen

> Wie üblich lässt sich unter Linux auch eine Abfrage von /proc/mdstat mit einem Skript realisieren. Hier könnte man z.B. die Folge "[UUUU]" nach einem Unterstrich regelmäßig per cron abfragen - der Unterstrich signalisiert ja eine defekte RAID-Partition - und lässt sich diese Information dann als E-Mail schicken. Lässt 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 könnte dieses Aussehen haben:

root@linux ~# grep '[\[U]_' /proc/mdstat

xosview

> Die aktuelle Entwicklerversion dieses bekannten überwachungsprogramms enthält bereits eine Statusabfrage für RAID-1 und RAID-5 Verbunde. Für den ordnungsgemäßen Betrieb ist ein weiterer Kernel-Patch notwendig, der jedoch im tar-Archiv enthalten ist.

#### 12.7 Verändern des read-ahead-Puffers

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

read-ahead-Puffer

      /* 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 natürlich auch RAID-Devices tunen.

#### 12.8 Bestehenden RAID-0 Verbund erweitern

Um einen RAID-0 Verbund zu vergrößern, zu verkleinern oder aus einer einzelnen Festplatte ein RAID-0 zu erstellen, gibt es von Jakob Oestergaard einen Patch für die RAID-Tools:

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

Dieser Patch muss in den Source der RAID-Tools eingearbeitet werden und die RAID-Tools anschließend 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 zusätzliche Partition innerhalb desselben Verbundes eingearbeitet wird. Nach dem stoppen des zu verändernden RAID-Verbundes, erfolgt der Aufruf durch:

root@linux ~# raidreconf /etc/raidtab /etc/raidtab.neu /dev/md0

Hierbei muss in der /etc/raidtab.neu für 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 vergrößern. Die einzige Möglichkeit besteht darin, die Daten zu sichern, den RAID-5 Verbund neu aufzusetzen und die Daten anschließend zurück zu schreiben.