Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


RAID

Partitionierung ] [ RAID ] LVM ] RAID1 + LVM ] Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]


Die Abkürzung RAID steht für 'Redundant Array of Inexpensive Disks' bzw. 'Redundant Array of Independent Disks'. RAID ist eine Technologie, die entwickelt wurde, um Plattenzugriffe zu beschleunigen und gleichzeitig für Ausfallsicherheit zu sorgen. Die verschiedenen RAID-Level wurden an der 'University of California' in Berkeley entwickelt. Der Betrieb eines RAID-System setzt mindestens zwei Festplatten voraus. Die Festplatten werden zusammen betrieben und bilden so einen Verbund. Die genaue Art des Zusammenwirkens der Platten wird durch den RAID-Level spezifiziert. Die gebräuchlichsten RAID-Level sind im allgemeinen:

  • RAID0: Stripping - Beschleunigung ohne Redundanz
    Zugriffe werden gleichmäßig auf alle beteiligten Platten quasi parallel verteilt, die Performance wird so erheblich gesteigert. Jedoch ist mit RAID0 keine Redundanz zu erreichen.
  • RAID1: Mirroring - Spiegelung
    Beim RAID1 werden die Platten einfach gespiegelt, so ist ein großes Maß an Ausfallsicherheit gegeben, jedoch kein Performance-Gewinn.
  • RAID5: Performance + Parität
    Beim RAID5 werden mindestens drei Platten benötigt, die Daten werden inklusiv einer Paritäts-Information auf den Platten verteilt. Es ergibt sich so ein Kompromiss aus Performance und Redundanz.

Weiterhin gibt es zwei Arten von RAIDs:

  • Hardware-RAID
    Bei Hardware-RAID verwaltet, für einen PC gesprochen, ein spezieller Kontroller mit eigener Intelligenz die Festplatten. Der PC bleibt so entlastet und sieht eigentlich nur eine Platte, da das Management der Platten vom Kontroller aus erledigt wird. Nachteil beim Hardware-RAID ist der extrem hohe Preis der Kontroller. Bekannte namenhafte Hersteller solcher Hardware-Kontroller sind z.B. 'Adaptec' oder '3Ware'.
  • Software-RAID
    Beim Software-RAID wird das Zusammenwirken der Festplatten komplett vom Betriebssystem des Rechners aus realisiert. Moderne Betriebssysteme, wie z.B. 'MS Windows-XP' oder neuere Linux-Versionen können dies von Haus aus. Vorteil dieser Lösung ist, es können preiswerte eventuell vorhandene Schnittstellen des PCs genutzt werden. Nachteil ist, die zusätzliche Belastung des Prozessors durch den RAID-Betrieb.

Egal ob Hardware- oder Software-RAID, es können unterschiedlichste Standard-Schnittstellen bezüglich der Festplatten verwendet werden, wie z.B. IDE, ATA, S-ATA, SCSI.
Unter Linux gibt es zwei verschiedene Paket um eine RAID-Unterstützung zu gewährleisten, das sind 'raidtools2' und 'mdadm'. Mittlerweile sollte man nur 'mdadm' benutzen. In neueren Debian-Versionen ist das Paket: 'raidtools2' bereits entfernt worden.

Die folgende Skizze zeigt exemplarisch einen einfachen RAID1-Verbund mit nur zwei Partitionen, wobei die erste Primäre-Partitition als RAID1 betrieben wird (md0).

Im Folgenden wird eine Beispiel-Installation eines RAID1-Systems mittels 'Debian-Installer' während der Installation vorgestellt, dabei soll die obige Skizze nachgebildet werden.
In der Praxis, sollte wie im vorherigen Kapitel beschrieben, dass System aus mehrere Partitionen bestehen, die dann dann jeweils zu einen RAID-Verbund zusammengeschlossen werden. Auch ist es sinnvoll die Swap-Partition als RAID abzubilden um die Ausfallsicherheit zu erhöhen.

Installation RAID1-System mittels: 'Debian-Installer'

Mittels 'Debian-Installer' wird gezeigt wie die obige Skizze des RAID1-Verbundes während der Grundinstallation realisiert wird. Die folgenden Bilder können durch Anklicken vergrößert werden:

klicken   klicken   klicken
klicken   klicken

Ausgehend vom Hauptmenü des 'Debian-Installer' ist der Punkt: 'Festplatte partitionieren' auszuwählen.
Danach sollten beide Festplatten sichtbar werden. Um nun die erste Platte zu partitionieren ist diese zu selektieren.
Auf der Festplatte können die Partitionen z.B. mit dem Unterpunkt: 'Freien Speicher automatisch partitionieren' eingetragen werden.
In diesem Bsp. wird der Einfachhalberheit der Punkt: 'Alle Daten auf eine Partition (für Anfänger empf.)' genutzt, in diesem Fall wird nur eine große 'Primäre-Partition' und ein Swap-Bereich als 'Logische-Partition' verwendet.
Wieder zurück zur Partitionsübersicht kann man jetzt schon die Partitionierung der ersten Platte erkennen. Mit der zweiten Festplatte ist genauso zu verfahren.

klicken   klicken   klicken   klicken
klicken   klicken   klicken   klicken

Nachdem nun beide Platten identisch eingeteilt sind, ist als nächstes die Partitions-Einstellungen zu korrigieren. Dabei ist bei beiden Primären-Partitionen der beiden Festplatten der Typ: 'Physical Volume für RAID' auszuwählen, auch sollte das 'Boot-Flag' auf  'Ein' stehen.
Der Swap-Bereiche wird nicht als RAID betrieben, er wird mit der Einstellung: 'Auslagerungsspeicher (Swap)' versehen.
Auch mit den Partitions-Einstellung der zweiten Platte ist genau so zu verfahren (vgl.: folgendes Bild).

klicken   klicken

Als nächstes ist aus dem Menü nun der Punkt 'Software-RAID konfigurieren' auszuwählen. Damit die Änderungen auf die Festplatten geschrieben werden, ist dieses zunächst mit '<Ja>' zu bestätigen.

klicken   klicken   klicken

Zunächst ist ein MD-Gerät (MD = MultiDisk) zu erstellen, Selektion von: 'MD Gerät erstellen'
Der Mulidisk Gerätetyp ist festzulegen, in diesem Fall: 'RAID1'.
Danach ist die Anzahl der aktiven Geräte für das RAID1-Array festzulegen: '2'.

klicken   klicken   klicken

Auch können Reserve-Geräte für das RAID1-Array angegeben werden, in diesem Fall: '0', da es nur zwei Platten gibt.
Danach sind die aktiven Geräte für das RAID1 Multidisk-Gerät festzulegen. Beide primären Teile sind zu selektieren.
Zum Schluss muss die Aktion noch mit: 'Fertigstellen' bestätigt werden.

klicken   klicken   klicken
klicken   klicken   klicken

Zurück in der Partitionsübersicht, sollte nun das RAID1-Gerät sichtbar sein.
Im Folgenden muss nun noch definiert werden, welches Dateisystem und welcher Einhängepunkt verwendet werden soll. In diesem Fall wird das Dateisystem: 'Ext3 Journaling Dateisystem' und als Einhängepunkt muss: '/ - Das Wurzeldateisystem' verwendet.

Wieder zurück in der Partitionsübersicht, ist nun der Punkt: 'Partitionierung beenden und Änderungen übernehmen' auszuwählen.

klicken    klicken    klicken

Nach einer Bestätigung mit: '<Ja>', werden nun die Änderungen auf der Festplatte geschrieben und das Dateisystem wird erzeugt.

Im weiteren Verlauf ist für das System noch der Bootloader zu installieren. Es empfiehlt sich den moderneren GRUB-Bootloader in den 'Master Boot Record' zu installieren. Danach ist das System neu zu booten.

Nach dem erneuten Hochlauf des Systems ist die menügeführte Fertigstellung der Installation durchzuführen, währenddessen sollte die Synchronisation des RAID-Verbundes schon parallel stattfinden. Der Fortschritt der Synchronisation kann wie folgt beobachtet werden:

debian:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid1 sda1[0] sdb1[1]
242878592 blocks [2/2] [UU]
[======>..............] resync = 32.0% (77958208/242878592) finish=48.3min speed=56834K/sec
unused devices: <none>
debian:~#

In diesem Auszug während der Fertigstellung des RAIDs ist die Synchronisation zu '32.0%' abgeschlossen. Die Synchronisation kann je nach Plattengröße und Geschwindigkeit mehrere Stunden dauern, während dieser Zeit sollte das System nicht heruntergefahren werden.
Nach der Fertigstellung des RAID-Verbunds sollte der Inhalt von: 'mdstat' wie folgt aussehen:

debian:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid1 sda1[0] sdb1[1]
242878592 blocks [2/2] [UU]

unused devices: <none>
debian:~#

Bei der Installation des Bootmanagers: 'GRUB' wurde dieser nur auf die erste Festplatte installiert. Damit auch beim Ausfall der ersten Platte immer noch das Booten von der zweiten Platte möglich ist, sollte 'GRUB' auch auf der zweiten Platte installiert werden. Dazu ist als Benutzer: 'root' auf der Kommandozeile: 'grub' aufzurufen. 'GRUB' sollte sich daraufhin als interaktives Programm präsentieren:


GNU GRUB version 0.95 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 16 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.

grub> quit

Durch Eingabe von 'root (hd1,0)' und 'setup (hd1)' wird der GRUB-Bootloader auch in dem 'Master Boot Record' der zweiten Festplatte installiert. 'GRUB' kann dann durch Eingabe von: 'quit' verlassen werden. Soll 'GRUB' nachträglich aus irgendeinen Grund auf der ersten Festplatte installiert werden, so kann dieses mit: 'root (hd0,0)' und 'setup (hd0)' erfolgen.

Damit bei Problemen mit dem RAID-Verbund auch ein E-Mail versandt wird, sollte noch folgende Einstellung (gelbe Markierung) in der Datei: 'mdadm.conf' eingefügt werden:

/etc/mdadm/mdadm.conf

DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a25e4885:3942712c:e7302688:4705ef47
devices=/dev/sda1,/dev/sdb1

MAILADDR root@localhost

In diesem Fall bekommt der 'root' des Systems, bei Problemen mit dem RAID eine E-Mail, parallel werden Probleme in die Logdatei: 'var/log/syslog' einfließen.

Test des RAID1-Verbundes

Nach dem Aufbau des RAID1-System sollte die korrekte Funktionalität bezüglich der Redundanz ausgiebig getestet werden. Weiterhin wird auch die Vorgehensweise bei späteren Problemen deutlicher. Beim Test des RAID1-Arrays sollten beide Platten nacheinander außer Betrieb genommen werden um einen Festplattenausfall zu simulieren, dabei sollte das System auf jeden Fall bootfähig und einsatzbereit bleiben.

Zunächst sollte die zweite Festplatte außer Betrieb genommen werden. Am einfachsten kann man das erreichen. indem die Spannungsversorgung der Platte im ausgeschalteten Zustand gezogen wird. Nach dem Einschalten sollte das RAID-System (nun mit nur einer Platte) einwandfrei hochlaufen. Ein cat-Kommando auf: '/proc/mdstat' zeigt an, dass nur eine Platte in Betrieb ist (grüne Markierung):

debian:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid1 sda1[0]
242878592 blocks [2/1] [U_]

unused devices: <none>
debian:~#

Weiterhin sollte eine E-Mail und Einträge in der log-Datei: '/var/log/syslog' darüber informieren, dass das RAID ein Problem hat.
Das System kann nun wieder herunter gefahren werden, die Festplatte ist wieder anzuschließen und das System ist anschließend wieder hochzufahren.
Ein 'cat' auf '/proc/mdstat' nach dem Hochlauf zeigt das gleiche Ergebnis wie zuvor; das ist korrekt so, da die zweite Platte richtigerweise noch nicht wieder ins RAID1-Array eingefügt ist. Das Einfügen muss per Hand geschehen:

debian:~# mdadm --manage -a /dev/md0 /dev/sdb1
mdadm: hot added /dev/sdb1
debian:~#

Danach wird ein Synchronisationsvorgang gestartet, ein 'cat' auf '/proc/mdstat' zeigt dieses an:

debian:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid1 sdb1[2] sda1[0]
242878592 blocks [2/1] [U_]
[>....................] recovery = 1.0% (2447488/242878592) finish=67.8min speed=59063K/sec
unused devices: <none>
debian:~#

Nach Abschluss der Synchronisation sollte der RAID1-Verbund wieder voll einsatzbereit sein:

debian:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid1 sdb1[1] sda1[0]
242878592 blocks [2/2] [UU]

unused devices: <none>
debian:~#

Anschließend sollte nun im ausgeschaltetem Zustand die zweite Festplatte getrennt werden und das System sollte wieder hochgefahren werden. Wenn alles gut läuft, bootet das System auch hier anstandslos und man kann ähnlich wie zuvor beschrieben verfahren.

Anmerkungen

Obwohl ein RAID-System über wesentlich mehr Sicherheit und Redundanz verfügt, sollte auf keinen Fall auf eine traditionelle Datensicherung verzichtet werden. Beim Einsatz von IDE-Festplatten sollte jede Platte als einziges Gerät am Bus betrieben werden. Werden S-ATA-Festplatten eingesetzt, sollte auf jedem Fall ein Kernel der Version 2.6. verwendet werden.
Auch sollten die Daten des RAIDs (Partitionierung und Konfiguration) immer griffbereit sein. Weiterhin ist es ratsam einen Ausfall einer Festplatte zuvor zu simuliert, bevor das RAID produktiv eingesetzt wird.
Da ein RAID1- oder RAID5-Array auch beim Ausfall einer einer Festplatte oder Defekt einer Partition weiter Funktionsfähig ist, kann es vorkommen, das dieses Problem nicht erkannt wird. Gerade bei Systemen die im Dauerbetrieb über Monate oder Jahre ohne Reboot durchlaufen, wird der Warnhinweis während des Starts nicht ausgegeben. Es sollte daher regelmäßig in der Datei: '/proc/mdstat' der Zustand des RAIDs überprüft werden. Im Fall einer defekten Festplatte sollte diese unverzüglich ausgetauscht werden.

Erstellen eines RAID-Verbundes auf Kommandozeilenebene

Sollten die Tools zur RAID-Verwaltung unter Debian-Linux fehlen, so können diese mit 'apt-get install mdadm' nachinstalliert werden.

Zum Schluss noch das Erstellen eines RAID1-Arrays auf Kommandozeilenebene, dabei soll die obige Skizze nachgebildet werden:

Zunächst ist die Festplatte z.B. mit 'fdisk' oder 'cfdisk' partitionstechnisch einzuteilen. Für die RAID-Partitionen ist als Partitions-ID: 'FD Linux raid autodetec' auszuwählen, welches der Partitions-ID: 'fd' entspricht.

Anschließend können die MultiDisk (MDs) erstellen werden:

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

Das Filesystem kann nun auf der MultiDisk erstellt werden.

mkfs.ext3 /dev/md0

Danach kann der Swap-bereich angelegt werden:

mkswap /dev/hda5
swapon /dev/hda5

Weitere Infos

Linux Software-RAID HOWTO http://www.linuxhaven.de/dlhp/HOWTO/DE-Software-RAID-HOWTO.html
The Software-RAID HOWTO http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
Linux-RAID FAQ http://www.tldp.org/FAQ/Linux-RAID-FAQ/
RAID und Linux http://www.infodrom.north.de/~joey/Linux/raid/paper.html
RAID and Data Protection Solutions for Linux http://linas.org/linux/raid.html
RAID1 on Debian Sarge http://www.epimetrics.com/topics/one-page?page_id=421
GRUB + RAID howto http://www.linuxsa.org.au/mailing-list/2003-07/1270.html
Forum storage & raid http://storage-raid-forum.de/
Manualseiten zu: mdadm man mdadm
System-Dokumentation: mdadm /usr/share/doc/mdadm
Sarge Installations-Handbuch http://d-i.alioth.debian.org/manual/

Home ] Nach oben ] Partitionierung ] [ RAID ] LVM ] RAID1 + LVM ] Disk-Quotas ] Hardware-Information/Diagnose ] Kernel ]

letzte Änderung: 07. März 2006

 

Copyright © 2004 Norbert Eusterholz