Debian Soft-Raid: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 247: Zeile 247:


===Präparieren der Festplatten===
===Präparieren der Festplatten===
# '''Hardware/Partitions on Logical Discs''' aufrufen
# Menü '''Hardware/Partitions on Logical Discs''' aufrufen
# Zu formatierende IDE- oder SCSI-Festplatte aus der Liste auswählen
# Zu formatierende IDE- oder SCSI-Festplatte aus der Liste auswählen
# '''add primary partition''' auswählen
# '''add primary partition''' auswählen
Zeile 257: Zeile 257:


===Raid Array anlegen===
===Raid Array anlegen===
* '''Hardware/Linux RAID''' aufrufen
* Menü '''Hardware/Linux RAID''' aufrufen
* '''Redundant (RAID5)''' aus der Pulldown-Liste auswählen
* '''Redundant (RAID5)''' aus der Pulldown-Liste auswählen
* '''Create RAID device of level''' auswählen
* '''Create RAID device of level''' auswählen
Zeile 269: Zeile 269:
* Button '''Create''' anwählen
* Button '''Create''' anwählen
* Nach dem Anlegen des Arrays (Mauszeiger erscheint als Sanduhr; dauert etwas) wird automatisch ins RAID-Hauptmenü zurückgekehrt.
* Nach dem Anlegen des Arrays (Mauszeiger erscheint als Sanduhr; dauert etwas) wird automatisch ins RAID-Hauptmenü zurückgekehrt.
Verhindern, dass Linux versucht eine Partition des Raid-Array's automatisch als Einzelpartition zu mounten. Dies würde zu einem degraded Array führen.
* Menü '''Others/Command Shell''' aufrufen
* In Eingabezeile neben '''Execute Command'''' eingeben:
vol_id /dev/sdb1
* Ausgabe z.B.
ID_FS_USAGE=raid
ID_FS_TYPE=linux_raid_member
ID_FS_VERSION=0.90.0
ID_FS_UUID='''80ce1168:8077513e:9d4deba6:47ca997f'''
ID_FS_UUID_ENC=80ce1168:8077513e:9d4deba6:47ca997f
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=
* In Eingabezeile neben '''Execute Command'''' der Reihe nach die beiden Befehle eingeben (UUID mit eben ermittelter ID_FS_UUID ersetzen):
echo "#No RAID Automount" >> /etc/fstab
echo "UUID='''80ce1168:8077513e:9d4deba6:47ca997f'''  none auto nouser,noauto 0 0" >> /etc/fstab




Zeile 282: Zeile 300:


===LVM Einrichten===
===LVM Einrichten===
* Menü '''Hardware/Logical Volume Management'''
Volume Group anlegen:
* '''Add a new volume group.''' anwählen
* Folgende Eingaben vornehmen:
Volume group name: vgraid5
Initial physical device: RAID device 0
Allocation block size: default
* Button '''create''' anklicken
Logical Volume anlegen:
* Reiter'''Logical Volumes''' anwählen
* '''Create a logical volume in vgraid5.''' anklicken
* Folgende Eingaben vornehmen:
Volume name: lvm0
Volume size: Vorgabewert übernehmen, sodass die komplette Volume group ausgenutzt wird
Volume access: read /write
Volume striping: Disabled
* Button '''create''' anklicken


Dateisystem anlegen und mounten:
* Menü '''Hardware/Logical Volume Management/Logical Volumes''' anwählen, falls nicht bereits angewählt (sollte der Fall sein, wenn dieser Schritt unmittelbar nach dem anlegen des logical volumes ausgeführt wird)
* '''lvm0''' anklicken
* Im unteren Bereich '''Linux Native (ext3)''' aus der Dropdown-Liste auswählen
* '''Create filesystem of type:''' anklicken
* Im folgenden Fenster alle Einstellungen auf den vorgegebenen Einstellungen belassen und '''create''' anklicken
* nachdem das Filesystem erstellt ist, '''return to volume groups''' anwählen
* '''lvm0''' nochmals anklicken
* Im unteren Bereich in dem Textfeld neben '''Mount LV on:''' den Mountpoint eingeben: /home/shares
* '''Mount LV on:''' anklicken
* Im folgenden Fenster sind normalerweise keine Änderungen nötig. Button '''create''' anklicken
* '''Return to Filesystem list''' anwählen.





Version vom 26. Juli 2009, 11:08 Uhr

Einleitung

Linux bietet mächtige Tools um ein Software-Raid zu betreiben. Es ist dazu kein besonderer Raid-Controller erforderlich. Es können sämtliche Festplatten verwendet werden, die vom Linux Kernel erkannt werden. Es ist dabei egal, ob diese an IDE, SATA, USB oder Firewire Schnittstellen (auch gemischt) hängen. Auch die Größe und Typ der Festplatten ist unerheblich. Die Größe des Raid-Array wird von der kleinsten zur Verfügung stehenden Partition bestimmt. Es können auch mehrere Array's auf den zur Verfügung stehenden Festplatten eingerichtet werden, z.B. Raid0 für SWAP und Raid5 für Daten.

Im folgenden wird beschrieben wie ein Raid5 einzurichten ist, da dieses wohl am häufigsten für Fileserver verwendet wird.

Um Raid-Array's zu verwalten, kommt mdadm zum Einsatz. Damit die Array-Größe und Dateisystem-Größe später problemlos durch hinzufügen einer weiteren Festplatte erweitert werden kann, kommt der Logical Volume Manager (lvm) zum Einsatz.

Das komplette Vorgehen incl. Ersetzen defekter und Erweiterung um weitere Festplatten ist einmal Kommandozeilen- und einmal Webmin basiert beschrieben.


Kommandozeile

Installation

apt-get install initramfs-tools mdadm lvm2

Nach dem Download startet ein Script. In diesem OK anwählen . Arryas: all und Return betätigen


Präparieren der Festplatten

Annahme: 3 Festplatten /dev/sdb /dev/sdc /dev/sdd

Die Devicenamen (/dev/sdb ...) können mit Hilfe des Befehls ermittelt werden

fdisk -l

Partitionieren der Festplatten (alle Daten gehen verloren)

fdisk /dev/sdb

Fdisk ist über Buchstaben zu bedienen (m für Hilfe)

checken, ob korrekte Fesplatte gewählt wurde

p

Die Partitionen der Festplatte werden aufgelistet

Falls Partitionen bestehen, alle entfernen

 d
 Partitionsnummer die gelöscht werden soll eingeben (z.B. 1)
 Wiederholen für alle Partitionen, die gelöscht werden sollen

Eine neue Partition anlegen:

n
p (primäre Partition)
Partitionsnummer (1-4) : 1
Erster Zylinder:  enter um Vorgabewert zu übernehmen
letzter Zylinder: enter um Vorgabewert zu übernehmen, dh. komplette Festplatte. Bei Bedarf evtl. anpassen

Den Dateisystemtyp festlegen:

t
Hexcode (L um Liste anzuzeigen): fd
Nochmals p aufrufen, um die neue Partitionstabelle zu prüfen.
Wenn OK, dann mit w die Partitionierung auf die Festplatte zu schreiben.

Sämtliche Schritte für die anderen Festplatten (dev/sdc und /dev/sdd) wiederholen.


Raid Array anlegen

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Eine Auflistung der beteiligten Festplatten erscheint. Wenn alles OK, dann die Frage "continue creating array?" mit y beantworten.

Hinweis:
Es kann passieren, dass beim mdadm-Befehl "Device Busy" oder ähnliche Fehler ausgegeben werden. Dies kann auftreten, wenn Debian versucht auf eine der neu partitionierten Festplatten zuzugreifen, um diese ins Dateisystem einzubinden. Dies ist hier nicht weiter schlimm, es muß dann später lediglich der Rechner neu gebootet werden und obiger mdadm-Befehl wiederholt werden (siehe unten). Damit Debian in Zukunft nicht versucht auf die Einzel-Festplatten, sondern später nur auf das Array zuzugrefen, folgende Schritte ausführen (auch wenn kein Fehler auftrat):

durch den mdadm-Befehl haben alle beteiligten Festplatten den selben Volume Identifier UUID erhalten, sodass es genügt die folgenden Schritte für eine der beteiligten Festplatten (dev/sdb1, /dev/sdc1 oder /dev/sdd1) auszuführen:

vol_id /dev/sdb1

Ausgabe:

ID_FS_USAGE=raid
ID_FS_TYPE=linux_raid_member
ID_FS_VERSION=0.90.0
ID_FS_UUID=c84cf171:c72b4da5:e368bf24:bd0fce41
ID_FS_UUID_ENC=c84cf171:c72b4da5:e368bf24:bd0fce41
ID_FS_LABEL=
ID_FS_LABEL_ENC=

/etc/fstab bearbeiten:

vi /etc/fstab

Folgendes einfügen (UUID mit der UUID des vol_id-Befehls ersetzen):

#No Automount for Raid Devices
UUID=ab7e3bf8:ec404b79:e368bf24:bd0fce41 none auto nouser,noauto 0 0 
Hinweis:
Die folgenden beiden Schritte sind nur erforderlich, wenn beim ersten mdadm-Befehl ein Fehler auftrat. Ansonsten überspringen.

Rechner rebooten Raid Array anlegen (falls vor dem Reboot ein Fehler auftrat):

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Eine Auflistung der beteiligten Festplatten erscheint. Wenn alles OK, dann die Frage "continue creating array?" mit y beantworten.


Status des Arrays abfragen

mdadm --detail /dev/md0

Neben der Anzahl der Platten, dem Raid-Level (5) wird der Status angegeben. Dieser ist nach dem anlegen "clean, degraded, recovering". Das Array muß erst komplett initialisiert werden (Recovering). Das Recovery kann je nach Größe und Geschwindigkeit der Platten einige Stunden in Anspruch nehmen.

Während der Regenerierung kann der Fortschritt und die restliche Dauer angezeigt werden:

cat /proc/mdstat

Obwohl das Array degraded ist und während es regeneriert wird, ist es bereits verwendbar.

LVM Einrichten

Auf diesem Raid-Array könnte nun einfach "ganz normal" ein EXT3-Filesystem angelegt werden. Deutlich flexibler ist das Array allerdings, wenn LVM (Logical Volume Management) zum Einsatz kommt. Damit ist es relativ einfach, das Array um eine weitere Platte zu erweitern, ohne das Array neu anlegen zu müssen.

Initialisieren des Arrays für die Verwendung mit LVM:

pvcreate /dev/md0

Volume Group vgraid5 anlegen:

vgcreate vgraid5 /dev/md0

Die tatsächliche Größe des Arrays ermitteln:

vgdisplay vgraid5 | grep Free

Ausgabe von vgdisplay z.B:

Free  PE / Size       190775/ 745.21 GB

Anlegen des Volumes (FREE_PE mit eben ermittelten PE-Wert - im Beispiel 190775 - ersetzen):

lvcreate -l FREE_PE vgraid5 -n lvm0

EXT3 Filesystem anlegen:

mkfs.ext3 /dev/vgraid5/lvm0

Mounten des Arrays bzw. lvm Volumes in den Ordner /home/shares. In der Anleitung Samba wird standardmäßgi dieses Verzeichnis benutzt, um Netzwerkfreigaben anzulegen. D.h. die Netzwerkfreigaben werden auf dem Raid5-Array angelegt:

mkdir -p /home/shares
mount /dev/vgraid5/lvm0 /home/shares

Mount beim Systemstart:

vi /etc/fstab

Folgende Zeile anhängen:

/dev/mapper/vgraid5-lvm0 /home/shares ext3 rw,noatime 0 0


Array Überwachung

Achtung: Folgende Schritte erst ausführen, nachdem das Raid Array vollständig hergestellt ist. Ansonsten könnte es passieren, dass das Raid-Array als ein degraded Array aus zwei Festplatten und ein Hotspare in die mdadm.conf eingetragen wird. Deshalb unbedingt vor dem Weitermachen mit folgenden Befehl überprüfen, ob das Raid5-Array vollständig (State: clean) aufgebaut wurde:

mdadm --detail /dev/md0

Wenn Array komplett hergestellt:

mdadm --detail --scan >> /etc/mdadm/mdadm.conf 
dpkg-reconfigure mdadm

Folgende Fragen beantworten:

OK anwählen
MD-Arrays nötig für root Filesystem: no
Monatliche Redundanzprüfung: Ja
Überwachungsdämon starten: ja
Email-Empfänger für Emailbenachrichtigungen: Email-Adresse eingeben z.B. root@domain.org

Überwachungsdämon neu starten:

/etc/init.d/mdadm restart


Array erweitern

Ein laufendes Array kann folgendermaßen um eine Festplatte erweitert werden, um die Kapazität zu erhöhen. Das Array und Dateisystem bleibt dabei komplett intakt.

Neue Festplatte (/dev/sde) einbauen und Rechner einschalten. neue Festplatte partitionieren:

fdisk /dev/sde

Neue Raid-Partition entsprechend obiger Anleitung anlegen

Neue Festplatte dem Array hinzufügen:

mdadm --add /dev/md0 /dev/sde1

Staus abfragen:

mdadm --detail /dev/md0

Ausgabe:

...
Number   Major   Minor   RaidDevice State
   0       8        1        0      active sync   /dev/sdb1
   1       8       17        1      active sync   /dev/sdc1
   2       8       33        2      active sync   /dev/sdd1

   3       8       49        -      spare   /dev/sde1

Die neue Festplatte wurde als Hot Spare ins Array eingebunden. D.h. wenn nun eine Festplatte ausfallen würde, würde die Hot Spare Festplatte sofort automatisch ins Array eingebunden und neu initialisiert. Es soll aber hier die Kapazität des Array's erweitert werden. Dies erfolgt mit folgendem Befehl:

mdadm --grow --raid-devices=4 /dev/md0

Staus abfragen:

mdadm --detail /dev/md0

Ausgabe:

...
State : clean, recovering
...
Number   Major   Minor   RaidDevice State
   0       8        1        0      active sync   /dev/sdb1
   1       8       17        1      active sync   /dev/sdc1
   2       8       33        2      active sync   /dev/sdd1
   3       8       49        3      active sync   /dev/sde1

LVM Physical Volume vergrößern:

pvresize /dev/md0

Logical Volume vergrößern:

lvresize /dev/vgraid5/lvm0 /dev/md0

Dateisystem erweitern:

resize2fs /dev/vgraid5/lvm0


Festplatte ersetzen

Falls eine Festplatte ausgefallen ist, muß diese ersetzt werden. Mit dem Befehl ===LVM Einrichten===

mdadm --detail /dev/md0

zunächst ermitteln, welche Festplatte ausgefallen ist. Ausgabe z.B. :

...
Number   Major   Minor   RaidDevice State
  0       8        1        0      active sync   /dev/sdb1
  1       8       17        1      active sync   /dev/sdc1
  2       0        0        2      removed

=> /dev/sdd ist ausgefallen

Den Rechner ausschalten und die entsprechende Festplatte austauschen. Rechner neu starten.

Neue Festplatte partitionieren

fdisk /dev/sdd

Neue Raid-Partition entsprechend obiger Anleitung anlegen

Neue Festplatte dem Array hinzufügen:

mdadm --add /dev/md0 /dev/sdd1

Status checken:

mdadm --detail /dev/md0

Ausgabe:

...
Number   Major   Minor   RaidDevice State
   0       8        1        0      active sync   /dev/sdb1
   1       8       17        1      active sync   /dev/sdc1
   3       8       33        2      spare rebuilding   /dev/sdd1

=> Raid5 Array wird neu initialisiert


Array neu initialisieren

Falls das Betriebssystem neu installiert werden muss, kann das Array folgendermaßen ohne Datenverlust neu eingerichtet werden (zunächst die Pakete gemäß obiger Anleitung installieren):

mdadm --assemble --scan

Anschließend die Arrayüberwachung gemäß obiger Anleitung neu einrichten.


Webmin

Voraussetzung: webmin ist installiert

Webbrowser starten und in webmin einloggen.


Installation

apt-get install hdparm initramfs-tools mdadm lvm2

Nach dem Download startet ein Script. In diesem OK anwählen Arrays: all und Return betätigen


Präparieren der Festplatten

  1. Menü Hardware/Partitions on Logical Discs aufrufen
  2. Zu formatierende IDE- oder SCSI-Festplatte aus der Liste auswählen
  3. add primary partition auswählen
  4. Linux Raid aus der Pulldown-Liste auswählen. Evtl. Partitionsgröße mittels Extents rechts daneben ändern.
  5. Button Create anklicken
  6. Return to disk list anwählen

Schritte 2 bis 6 für alle gewünschten Festplatten wiederholen


Raid Array anlegen

  • Menü Hardware/Linux RAID aufrufen
  • Redundant (RAID5) aus der Pulldown-Liste auswählen
  • Create RAID device of level auswählen
  • Einstellungen vornehmen:
Persistent Superblock: Yes
Parity Algorithm: Default
Chunk Size: 32Kb
Partitions in RAID: Die gewünschten Partitionen aus der Liste mit Shift-Taste markieren
Spare Partitions: Falls nicht alle Partitionen dem Array hinzugefügt wurden, können diese hier als Hot Spare angewählt werden. Hot Spares sind nicht unmittelbar Teil eines Array's, sondern werden automatisch eingebunden und neu initialisiert, sobald eine Festplatte ausfallen sollte.
Force Initialisation of RAID: Yes
  • Button Create anwählen
  • Nach dem Anlegen des Arrays (Mauszeiger erscheint als Sanduhr; dauert etwas) wird automatisch ins RAID-Hauptmenü zurückgekehrt.


Verhindern, dass Linux versucht eine Partition des Raid-Array's automatisch als Einzelpartition zu mounten. Dies würde zu einem degraded Array führen.

  • Menü Others/Command Shell aufrufen
  • In Eingabezeile neben Execute Command' eingeben:
vol_id /dev/sdb1
  • Ausgabe z.B.
ID_FS_USAGE=raid
ID_FS_TYPE=linux_raid_member
ID_FS_VERSION=0.90.0
ID_FS_UUID=80ce1168:8077513e:9d4deba6:47ca997f
ID_FS_UUID_ENC=80ce1168:8077513e:9d4deba6:47ca997f
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=
  • In Eingabezeile neben Execute Command' der Reihe nach die beiden Befehle eingeben (UUID mit eben ermittelter ID_FS_UUID ersetzen):
echo "#No RAID Automount" >> /etc/fstab
echo "UUID=80ce1168:8077513e:9d4deba6:47ca997f  none auto nouser,noauto 0 0" >> /etc/fstab


Array Überwachung

  • Hardware/Linux RAID aufrufen

Folgende Einstellungen vornehmen:

Monitoring enabled: Yes
Send notifications to: Email-Adresse eingeben, an die Problemmails gesendet werden sollen
From Adress: Default (Root) oder eine andere Absenderadresse eingeben
Command to run when problems are detected: leer lassen
  • Button Save anwählen


LVM Einrichten

  • Menü Hardware/Logical Volume Management

Volume Group anlegen:

  • Add a new volume group. anwählen
  • Folgende Eingaben vornehmen:
Volume group name: vgraid5
Initial physical device: RAID device 0
Allocation block size: default
  • Button create anklicken

Logical Volume anlegen:

  • ReiterLogical Volumes anwählen
  • Create a logical volume in vgraid5. anklicken
  • Folgende Eingaben vornehmen:
Volume name: lvm0
Volume size: Vorgabewert übernehmen, sodass die komplette Volume group ausgenutzt wird
Volume access: read /write
Volume striping: Disabled
  • Button create anklicken

Dateisystem anlegen und mounten:

  • Menü Hardware/Logical Volume Management/Logical Volumes anwählen, falls nicht bereits angewählt (sollte der Fall sein, wenn dieser Schritt unmittelbar nach dem anlegen des logical volumes ausgeführt wird)
  • lvm0 anklicken
  • Im unteren Bereich Linux Native (ext3) aus der Dropdown-Liste auswählen
  • Create filesystem of type: anklicken
  • Im folgenden Fenster alle Einstellungen auf den vorgegebenen Einstellungen belassen und create anklicken
  • nachdem das Filesystem erstellt ist, return to volume groups anwählen
  • lvm0 nochmals anklicken
  • Im unteren Bereich in dem Textfeld neben Mount LV on: den Mountpoint eingeben: /home/shares
  • Mount LV on: anklicken
  • Im folgenden Fenster sind normalerweise keine Änderungen nötig. Button create anklicken
  • Return to Filesystem list anwählen.


Array erweitern

Festplatte ersetzen

Array neu initialisieren