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.13 und der RAID-Patch

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

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

12.3 Entwicklerkernel 2.3.99-pre3 und der RAID-Patch

Der aktuelle Entwicklerkernel 2.3.99-pre3 beinhaltet bereits die neue RAID-Unterstützung. Dieser Kernel läßt sich mit den aktivierten RAID-Optionen einwandfrei kompilieren. Auch wenn das automatische Erkennen von RAID-Verbunden sich nicht explizit im Kernelauswahlmenü anwählen läßt, funktioniert es ebenso wie die Linear- und RAID-0 Unterstützung. Leider werden RAID-1, RAID-4 und RAID-5 noch nicht unterstützt. Ein zusätzliches Patchen des Kernels mit den 2.2.xer RAID-Patchen ist nicht nur unnötig, sondern aufgrund des geänderten Dateisystemcachings von vornherein zum Scheitern verurteilt. Hier hilft im Moment nur warten.

12.4 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.5 Ü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.6 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.


InhaltWeiter