raid 1 in der Praxis

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
minimike
Beiträge: 5616
Registriert: 26.03.2003 02:21:19
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: Köln
Kontaktdaten:

raid 1 in der Praxis

Beitrag von minimike » 19.12.2004 01:57:54

Hallo mir ist aufgefallen das sich in letzter Zeit die Anfragen betreff Raid, Raidcontroller und Debian hier im Forum häufen. Ich schreibe hier nieder wie ich das auf meiner Workstation so betreibe. Im wesentlichen ist das aber nicht mein Howto! Eigendlich ist das auch kein richtiges Howto aber wenn genug Jubeln kommt das ins Wiki bzw beim Gegenteil dann eher nicht.
Marcus Schopen hat ein geniales Howto unter nachstehender Adresse veröffentlicht: http://wwwhomes.uni-bielefeld.de/schopp ... howto.html. Nach dieser aber auf meine Gegebenheiten etwas abgewandelter Variante habe ich meine Raidsets erstellt. Mein SATA Controller betreibt selber auch nur einen Softwareraid mit einer Biosfunktion, Windows erkennt das dann nur als eine Platte aber der Linuxkernel fällt darauf nicht rein. Warum Softwareraid ? Ganz einfach es gibt zwar proprieträre Treiber für den Controller allerdings nicht für Debian und nur für recht betagte Kernelversionen. Die Alternative ist mit "dmraid" zu arbeiten aber das Entwicklungsstadium ist noch recht in der Startphase und wird von den Jungens selber als Betasoftware beschrieben ( mutig, ich sage eher Alpha ). Ich zolle meinen Respekt vor dieser Arbeit jedoch ziehe ich den konventionellen Softwareraid aus dem Kernel vor. Der Grund, es ist stabiel schon lange im Umlauf und dem Hörensagen nach eh die schnellste Lösung. Auserdem mus beim "dmraid" derzeit unter Sarge einiges kompeliert werden weil vohandene Programme zu alt sind. Das heist man benötigt Internet und mus gegebenfalls Foren und Mailinglisten abklappern weil was nicht funktioniert. ( Das war bei mir auf Anhieb so, dmraid erkennt den Raid jedoch nicht alle Partitionen ) Das Projekt sollte aber im Auge behalten werden! Ich betreibe 2 IDE Platten als Raid 0 und zwei SATA Platten als Raid 1 im Dualboot. Von den IDE Platten wird weder gebootet noch ist da ein Bootmanager wie Lilo oder Grub installiert weil die eh verschwinden sollen.

Ich liste mal die relevanten Harwarekomponenten von mir auf

Motherboard

Asus P4PE-X
Onboard Intel IDE Controller für 4 Laufwerke
und am letzten PCI Slot noch ein Tekram 822 SATA Controller mit Silicon Image Chipsatz

Meine Laufwerke
1 x SAMSUNG SP1203N ( 120 GB ) IDE am ersten Controller als Master
1 x Maxtor 4D080K4 ( 80 GB ) IDE am ersten Controller als Slave
1 x PX-W5224A CD-Brenner IDE am zweiten Controller als Master
1 x PX-116A3 DVD-ROM IDE am zweiten Controller als Slave

1 x Maxtor 6B120M0 SATA am ersten Port
1 x Maxtor 6Y120L IDE Platte mit Siliconimage SATA Adapter am zweiten Port

Der SATA Adapter läuft erst mit Kernel 2.6.9 ohne Probleme, mit niedrigeren Versionen hatte ich ernste Schwierigkeiten.

Fangen wir an mit der Installation : Bevor ich mit den SATA Platten hantierte habe ich die beiden IDE Platten zu einem Raid 0 zusammengeschlossen, alle wichtigen Daten darauf verschoben, den Rechner ausgeschaltet und die Stromstecker von den Platten abgezogen. Erstens ist das sicher und zweitens Windows will immer den MBR vom ersten Laufwerk formatiert wissen, in dem Fall wäre das /dev/hda da der IDE Controller Onboard ist und vor dem SATA Controller im Bios insgesammt auftaucht. Das wollte ich aber nicht.
Windows benötigt eine Treiberdiskette wenn man es auf den SATA Controller installieren will. Tekram bietet hierfür ein Image ausschlieslich im DD format an ( dd if=/pfad/zum/image of=/dev/fd0 ). Wie üblich sollte es vor Debian installiert werden weil es sonst wie schon beschreiben den MBR und auch Debian plattmacht.

Wir starten den Rechner und während er Hochfährt hangeln wir uns in das Bios vom SATA / Raidcontroller ein. die beiden Platten erstellen wir zu einem Raid ( dauert bei mir ne Stunde ) und installieren mit der Treiberdiskette Windoofs ( F6 ) Für mich reichen 40 GB darin sind für Notfälle 10 GB Debianpackete für Sarge installieren und einige Partimage Backups gespeichert. Auf jeden Fall haben wir jetzt sda1 und sdb1 für Windoofs reserviert.

Debian
Kanotix Gnoppix der Sarge Installer rc2 und CO haben meistens am SATA Adapter oder am Controller versagt ich habe dann ein XFS Netinstall image für Woody bei der Erstinstalltion mit Kernel 2.4.25 verwendet. Die SATA Platten werden hier als IDE Platten erkannt und ich konnte nur die Platte am ersten Port nutzen.
Also am Ende der ersten SATA Platte eine 5 GB Partition mit ext2 erstellt und Woody installiert. Nach dem rebooten auf Sarge geupdatet und alles installiert was man benötigt um einen eigenen 2.6er Kernel zu bauen und zu betreiben. Den Kernel installiert und in /etc/lilo.conf / von root=dev/hde5 schon root=/dev/sda5 Lilo auf SCSI umgestellt. Lilo ausführen rebooten.

Mit dieser Konfiguration hatte ich Probleme bei der Verwendung eine Initrd. Ich empfehle Kernel 2.6.9 worin SCSI, der jeweilige SATA Controller , SCSI Platten Treiber vür die Konsole und ext3 oder reiser4 fest einkompeliert wurden, zusätzlich habe ich den reiser4 Patch und den letzten Patch von Allan auf http://www.kernel.org verwendet.

Die ersten Raids

Also fangen wir mit Windows an. Wenn Windows an ist, syncronisiert es ja selber die Daten auf beiden Partitionen die es verwendet. Wenn mann mittels Linux unsyncron auf einer Platte rumkritzelt und die andere Partition im Urzustand belässt gibt das recht schnell Ärger

Nach der ersten Überlegung betreff Partitionierung habe ich jeweils nach und nach 11 exakt gleich grosse Partitionen auf /dev/sdb und /dev/sda erstellt. sda1 und sdb1 waren schon da wir brauchen erstmal Platz für / , /var und /usr. Einen Raid 0 betreibe ich ja schon als /dev/md0. Da ich ja schon 2 primäre Partitionen besitze betreibe ich den Rest als logische Partition
Also wie im Howto beschrieben sda1 zum Raid1 gemacht und dann mittels Befehl "raidhotadd /dev/md1 /dev/sdb1" den Raid 1 vervollständigt. Die Syncronisation dauerte ca 20 minuten das NTFS oder reiser4 benutzt wird ist egal die Label habe ich aber mit cfdisk nicht verändert sondern habe sie auf NTFS belassen.


Die devices /dev/md2 /dev/md3 /dev/md4 /dev/md5 habe ich direkt erstellt. Man erreicht dies wenn man in der /etc/raidtab anstatt failed-disk direkt raid-disk erstellt.
Aufteilung /dev/md2 ist 600 MB für swap, /dev/md3 ist 300 MB mit reiser4 für / , /dev/md4 1.5 GB mit ext3 für /var und 8 GB wieder mit reiser4 für /usr auf /dev/md5.
Reiser4 und XFS haben bei einem harten Resett, so ihre Probleme mit offenen Textdateien. Die meisten offenen Textdateien sind wärend des Betriebes in /var enthalten. Wenn man /var mit ext3 betreibt lösst man das Problem nicht aber man umgeht es doch recht elegant.
DIe Raids werden also formatiert und mittels "debootstrap" habe ich dann auf /dev/md3 Sarge installiert alles in /var nach /dev/md4 und alles in /usr nach /dev/md5 verschoben. Für dieses System habe ich jetzt einen Kernel erstellt worin nur reiser4 fest im Kernel drinn ist, ich hatte ja vorher noch ext2 als rootfs. Alles gekonft Lilo auf /dev/md3 als / scharfgemacht rebootet und mein Raidsystem zum ersten mal gebootet.

Der Rest
Nach erfolgreichen Schema partitionieren wir wieder die Platte um und löschen erstmal die Partition wovon wir debian zum ersten mal installiert haben. ( die Daten habe ich nach /usr zwischen gebunkert )
nun habe ich noch jeweils 50 GB für /opt (dev/md6) und 20 GB für /home (/dev/md7) erstellt. 2 x 600 MB bleiben übrig das reicht für /dev/md8 daruf werden die Daten vom Installationssystem verfrachtet. Ich nutze es als Rescuesystem habe da noch icewm mozilla und balsa und einige systools installiert.

Der Härtetest
Wohl dem der ein Backup hat, ein Backup ist immer vor zu ziehen. Es kann aber auch so gehen, mus aber nicht!

Wir gehen wieder ins Bios vom Raidcontroller und lösen den Raid im Bios auf. Vom Linuxsoftwareraid weis der Controller nix. Danach formatieren wir eine Platte z.B. /dev/sdb auf Lowlevel ( es bleibt nix übrig ) und erstellen einen neuen Raid im Bios. Der Controller kopiert jetzt alle Daten von /dev/sda nach /dev/sdb und Windows läst sich dann wieder wie gewohnt starten. Unter Linux laufen erstmal nur jeweils eine Partition vom jeweiligen Raid das Erkennt man mittels Befehl "cat /proc/mdstat"

Also wie schon erwähnt starte ich das Rescuesystem von nur einer Platte "cat /proc/mdstat" ergibt folgendes

Code: Alles auswählen

rescue:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[0]
      40957568 blocks [2/1] [U_]

md2 : active raid1 sda5[0]
      497856 blocks [2/1] [U_]

md3 : active raid1 sda6[0]
      289024 blocks [2/1] [U_]

md4 : active raid1 sda7[0]
      1461760 blocks [2/1] [U_]

md5 : active raid1 sda8[0]
      7815488 blocks [2/1] [U_]

md6 : active raid1 sda9[0]
      48829440 blocks [2/1] [U_]

md7 : active raid1 sda10[0]
      19534912 blocks [2/1] [U_]

md8 : active raid1 sda11[0]
      666560 blocks [2/1] [U_]

unused devices: <none>
rescue:~#

Wir machen alles wieder Heile

mittels "raidhotadd" lassen sich "On the Fly" devices zum Raid hinzufügen, so auch die kopierten Daten von /dev/sda die jetzt auf /dev/sdb sind

Code: Alles auswählen

rescue:~# raidhotadd /dev/md1 /dev/sdb1
rescue:~# raidhotadd /dev/md2 /dev/sdb5
rescue:~# raidhotadd /dev/md3 /dev/sdb6
rescue:~# raidhotadd /dev/md4 /dev/sdb7
rescue:~# raidhotadd /dev/md5 /dev/sdb8
rescue:~# raidhotadd /dev/md6 /dev/sdb9
rescue:~# raidhotadd /dev/md7 /dev/sdb10

Wir reconfigurieren unsere Raids auser das vom laufenden System, das Synchronisieren dauert ca eine Stunde. Wir starten wieder unser Hauptsystem mit jetzt wieder 2 Platten und fixen dann das Rescuesystem. Alles ist wieder so wie vorher

Wenn echt mal eine Platte kaputt geht wist ihr jetzt wie vorgehen müsst wenn ihr dann eine andere als Ersatz einbaut.
Ich hoffe der elend lange Text war Hilfreich und Informativ
Ich habe noch meine fstab und die Raidtab gepostet weil ich denke das diese zum Verständniss recht hilfreich sind. Sollte jemand daran Anstoss finden ein PM und es wird wegeditiert.

Code: Alles auswählen

/etc/fstab
# /etc/fstab: Tabelle einzubindender Dateisysteme.
#
/dev/md1        /media/ntfs     ntfs    defaults                0       0  
/dev/md2        none              swap    sw                      0       0
/dev/md3        /                    xfs      defaults                0       0
/dev/md4        /var               ext3    defaults                0       0
/dev/md5        /usr               reiser4 defaults                0       0
/dev/md6        /opt               reiser4 defaults                0       0
/dev/md7        /home            xfs     defaults                0       0
/dev/md8        /root/rescue   ext3    defaults                0       0
proc               /proc              proc    defaults                0       0
/dev/fd0          /media/Floppy auto    user,noauto             0       0
/dev/scd0       /media/Brenner12       iso9660 ro,user,noauto          0     0
/dev/scd1      /media/Brenner52      iso9660 ro,user,noauto          0     0
/dev/hdd        /media/DVD          iso9660 ro,user,noauto          0       0
/etc/raidtab

Code: Alles auswählen

# Daten
raiddev                 /dev/md0
raid-level              0
nr-raid-disks         2
chunk-size           32
nr-spare-disk         0
persistent-superblock   1
device                  /dev/hda5
raid-disk               0
device                  /dev/hdb5
raid-disk               1

# Windows
raiddev                 /dev/md1
raid-level              1
nr-raid-disks         2
chunk-size            32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda1
raid-disk               0
device                  /dev/sdb1
raid-disk               1

# Swap
raiddev                 /dev/md2
raid-level              1
nr-raid-disks         2
chunk-size            32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda5
raid-disk               0
device                  /dev/sdb5
raid-disk               1

# /
raiddev                 /dev/md3
raid-level              1
nr-raid-disks         2
chunk-size            32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda6
raid-disk               0
device                  /dev/sdb6
raid-disk               1

# /var
raiddev                 /dev/md4
raid-level              1
nr-raid-disks          2
chunk-size            32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda7
raid-disk               0
device                  /dev/sdb7
raid-disk               1

# /usr
raiddev                 /dev/md5
raid-level              1
nr-raid-disks         2
chunk-size           32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda8
raid-disk               0
device                  /dev/sda8
raid-disk               1

# /opt
raiddev                 /dev/md6
raid-level              1
nr-raid-disks         2
chunk-size           32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda9
raid-disk               0
device                  /dev/sdb9
raid-disk               1

# /home
raiddev                 /dev/md7
raid-level              1
nr-raid-disks         2
chunk-size            32
nr-spare-disks      0
persistent-superblock   1
device                  /dev/sda10
raid-disk               0
device                  /dev/sdb10
raid-disk               1

# Rescuesystem
raiddev                 /dev/md8
raid-level              1
nr-raid-disks         2
chunk-size            32
nr-spare-disks       0
persistent-superblock   1
device                  /dev/sda11
raid-disk               0
device                  /dev/sdb11  
raid-disk               1
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft

Antworten