InhaltWeiter

12. Tips und Tricks

Hier finden sowohl Tips und Tricks Erwähnung, die teilweise selbst getest 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 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 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.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:

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

Die Optionen stehen für:

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

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

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

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

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

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 läßt 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äßt sich diese Information dann als E-Mail schicken. Läßt 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:

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

xosview

Die aktuelle Entwicklerversion dieses bekannten Überwachungsprogrammes enthält bereits eine Statussabfrage 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:

/* 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 muß 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:

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

Hierbei muß 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.


InhaltWeiter