• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

/dev/hda redundant machen -- aber wie?

mada

Hacker
Hallo,

die Frage habe ich auch schon versucht, im IRC zu erörtern, aber weil es so weitreichende Konsequenzen hat und ich keine Möglichkeit habe, vorher groß auf einem Testsystem zu "spielen", möchte ich nochmal im Club drüber reden. Wir haben hier folgende Situation:

* SLES 10 -- System läuft auf einer IDE-Platte (/dev/hda).

* Ein Software-RAID 5 (1TB auf 4 SATA-Platten) enthält alle Daten. Ein Hardware-RAID-Controller ist zwar vorhanden, aber da es eine Onboard-Lösung ist, haben wir uns gegen das Hardware- und für das Soft-RAID entschieden:
Code:
rioja:~ # lspci
...
00:0e.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)
00:0f.0 IDE interface: nVidia Corporation MCP51 Serial ATA Controller (rev a1)
...
* Die Plattensituation sieht also so aus:
Code:
rioja:~ # mount
/dev/hda1 on / type ext3 (rw,acl,user_xattr)
/dev/md1 on /home type ext3 (rw,acl,user_xattr)
/dev/hda5 on /tmp type ext3 (rw,acl,user_xattr)
/dev/hda3 on /var type ext3 (rw,acl,user_xattr)
Wie man sieht, sind zwar die Daten redundant gegen Ausfall gesichert (für den Notfall läuft auch noch jede Nacht ein IBM-TSM Backup durch), aber wenn die Systemplatte mal abraucht, steht das System. Auf Dauer ist das kein Zustand, der tragbar ist, das Risiko ist einfach zu groß.

Folgende Ideen stehen im Raum:

1) Umzug des Systems (z.B. mittels cp -a) von /dev/hda auf die bereits vorbereitete SoftRAID5-Partition /dev/md0 (20GB auf den 4 SATA-Platten).

2) Kauf eines IDE-RAID-Controllers und einer zweiten IDE-Platte und Einrichtung eines neuen *Hardware*-RAID1.

3) Kauf einer zweiten IDE-Platte, diese als /dev/hdc als Master an den zweiten IDE-Bus und Einrichtung eines neuen *Software*-RAID1.

4) Entfernen von /dev/md0 (20GB RAID5 auf den SATA-Platten), stattdessen Einrichtung eines Soft-RAID1 auf den Platten.

Welche Lösung ist die praktikabelste, Euerer Meinung nach? Welche Lösung böte den unproblematischsten Plattenwechsel bei einem Defekt? Kommt das System in diesem Fall nach einem Reboot -- eine Downtime von einer Stunde wäre hier kein Problem! -- wieder hoch? Wenn nein, was ist dann zu tun? Und: gibt es überhaupt unterstützte IDE-RAID-Controller für die 2.6er Kernelreihe für Vorschlag 2)? Die Installation bzw. Treiberversorgung sollte halt so einfach wie möglich ablaufen...

Ich hoffe, der eine oder andere kann hier Erfahrungen posten und uns ein paar Tips geben! Schon mal vielen Dank,

Daniel
 

Nukem36

Hacker
High!

Server und Softraid?? Würde ich lassen! Wirklich! Mein Vorschlag, den ich für einen Kunden so realisiert habe:

Raid Controller von 3ware + neue Platten in der gew. Größe besorgen

Raid einrichten am neuen Controller

Alte Datenplatten vorerst mal ausbauen. System von hda nach neuem Raid kopieren (dd). Raid mounten, chroot ->Raidmountpunkt, dann die initrd anpassen, damit das Modul für deinen Raidcontroller geladen wird.

hda ausbauen, und vom Raid starten. Wenn das funktioniert, alle Daten des Softwareraid aud das Hardwareraid kopieren. Dann das Fakeraid deaktivieren und Platten ausbauen.

Von den Investitionen her sicherlich teuer, aber für einen Server m.E. auf Dauer der bessere Weg.

Nukem36
 
Man kann ruhig Software-RAID verwenden, sollte es dann aber auf die Levels 0, 1 und/oder 10 beschränken.
 
Das mit dem 3ware-Controller kann ich nur unterstützen.

Software-RADI ist aber kein Fake-RAID, nur dieses Board-RAID, was dir Hardware vorgaukelt. Das hattest du aber sinnvollerweise schon abgeschaltet.
Soft-RAID5 als Software ist eh eine Strafe. Da hilft nur echte Hardware mit Prozessor, Puffer-RAM und ggfs. die Pufferbatterie für gepufferten Schreibbetrieb.

Grüße
 
OP
mada

mada

Hacker
Hallo,

sorry, dass es so lange gedauert hat. Erstmal vielen Dank für die Antworten!

Problem an der vorgestellten Hardwarelösung ist: das kommt zu teuer. Eine Investition bis etwa 150.- kann ich durchaus erklären und aus dem Lehrstuhlbudget rausleiern, mehr kommt aber nicht in Frage, denk ich.

Außerdem frage ich mich, was an Softraids per se so schlecht ist? Und warum gerade RAID5? Mit 4 Platten lässt sich damit halt viel Platz gewinnen, verglichen mit RAID1...

Wir werden jetzt erstmal versuchen, das System von /dev/md0 (SATA softRAID 1) zu starten. Probleme bereitet uns die Konfiguration von GRUB:

* wohin installiert man GRUB am besten? /dev/sda? /dev/sda1?
* wie ist die Numerierung, wenn noch eine IDE-Platte im System hängt?
* ändert sich die Numerierung, wenn eine zweite IDE-Platte dazukäme?
* muss man im BIOS die Bootreihenfolge anpassen, und ändert das wieder die Plattennumerierung?

Wenn wieder Geld da ist, dann werden wir uns mal einen externen SATA-RAID-Würfel zulegen. Momentan ist das zu teuer. Und der Rechner ist ja eigentlich nur Login- und Fileserver (Samba, LDAP, NFS, DHCP und bissl DNS) und hat mit 2GB RAM und nem Opteron mehr als genug Rechenpower für ein SoftRAID.

Der Vorschlag mit einem vergleichsweise günstigen IDE-RAID-Controller findet keine Zustimmung? Gibts wohl für die 2.6er Kernelreihe keine Unterstützung mehr, befürchte ich.
 
vergiß diese "günstigen" RAID-Controller. Die sind das Geld nicht wert.
RAID5 ist eine irre Belastung für die CPU. Wenn das nicht stört: mache es.

Wenn das Budget zu klein ist: mach das Machbare oder schraub die Ansprüche runter. Ihr müßt halt wissen, was ihr wirklich braucht, und eine sehr gute Lösung kostet halt auch sehr gut...
Bei ebay gibts so Controller in deiner Größenordnung.

Grüße
 

Kurt M

Hacker
ich kann mich nur anschließen. Nur ein Hardware Raid macht Sinn.
Ich habs getestet. Ein Software Raid gauklt Sicherheit vor, die einige Risiken birgt die man bei einem Hardware Raid nicht hat. (Ganz schlimm ist es wenn die Raid-Platten sogar am gleichen IDE Kabel hängen, dann kann eine defekte Platte auch den Zugriff auf die gute verhindern)

Als erste Maßnahme habe ich bei unserem Server das System und die Anwenderdaten auf unterschiedliche physikalische Platten gelegt.
Das Linux System liegt auf hda1 und ein Spiegel auf hdb1. Zusätzlich kann hdb auch booten wenn hda nicht da ist.
Wenn also die Systemplatte hda ausfällt kann ich sofort von hdb booten und weiterarbeiten.
 
OP
mada

mada

Hacker
Hallo,

also zum einen ist unser RAID ein SATA-RAID, weshalb das Szenario mit IDE-Platten am gleichen Bus nicht greift. Für das SystemRAID hätten wir natürlich die Platten jeweils als Master an einen eigenen IDE-Bus gehängt.

Und System und Anwenderdaten liegen momentan bei uns auch auf physikalisch getrennten Platten (SATA-SoftRAID5 für /home -- IDE für / /var und /tmp).

Ich sehen nur einfach keine schlagenden Gründe, warum man nicht das System auch auf das SoftRAID packen kann. Sicher: ein HardwareRAID ist besser, aber die oben skizzierte Lösung ist momentan zu teuer. Nächstes Jahr haben wir dafür wieder Mittel, aber bis dahin muss es trotzdem eine bessere Zwischenlösung geben. Und IDE-RAID-Controller als günstige Hardwarezwischenlösung scheint es nicht zu geben... Neue SATA-Festplatten plus Controller ist aber momentan nicht drin.
 
OP
mada

mada

Hacker
carsten schrieb:
vergiß diese "günstigen" RAID-Controller. Die sind das Geld nicht wert. RAID5 ist eine irre Belastung für die CPU. Wenn das nicht stört: mache es.
Das hab ich jetzt völlig übersehen! Vielen Dank für diese Antwort, das stimmt mich ja dann doch etwas hoffnungsvoller, dass das System auf einem SATA SoftRAID1 zumindest übergangsweise ganz gut aufgehoben ist, zumindest jedenfalls besser, als ohne jede Redundanz auf einer IDE-Platte.

Wenn mir jetzt noch jemand einen Tip geben könnte, wie dafür die passende GRUB menu.lst auszusehen hätte?!

* /dev/hda am IDE-Bus
* /dev/sda /dev/sdb/ /dev/sdc und /dev/sdd am SATA-Bus

Darauf sind jeweils zwei Partitionen:
* /dev/sdX1 20GB und /dev/sdX2 mit dem Rest

* /dev/sda1 und /dev/sdb1 bilden zusammen ein RAID1 für /
* /dev/sdc1 und /dev/sdd1 bilden ein weiteres RAID1 für /var
* /dev/sda2 bis /dev/sdd2 bilden zusammen ein RAID5 für /home
 
ich würd die hda zum booten nehmen (MBR beschreiben und /boot draufpacken und im Bios als 1. Platte einstellen).
Ansonsten mit YASt die RAIDs anlegen, die heißen dann /dev/mdx (x=1...n für jede sichtbare Platte) und diese bestehen dann aus den sda...sdd-Partitionen.
Also ertstmal die Partitionen bei allen Platten gleich anlegen, diese dann zu RAIDs zusammenfassen und entsprechend mounten.
Mit MBR und boot auf hda ist das überhaupt kein Problem. Ach ja, die RAID-Treiber sollten schon in der initrd mit drin sein (RAID1 bzw. RAID5).

Das Migrieren im laufenden Betrieb steht im Wiki/Faq.

Ach ja, beim ersten synchen frühestens am 2. Tag entsetzt nachfragen, warum das sooo lange dauert ;)
und beim Soft-RAID: mdadm --help ist dein Freund. In der sysconfig kann man dazu auch was einstellen wie Notfallmails etc.

Grüße

Hier noch was gutes: http://www.linux-club.de/faq/Grub%2C_Raid1_Ausfallsicherheit
 
OP
mada

mada

Hacker
Vielen Dank für die Hilfe!

Um jetzt mal zu testen, ob das System überhaupt vom RAID hochkommt, kann ich ja /dev/hda erstmal komplett drin lassen. Auch später tut das ja nicht weh, wenn das weiterhin drinbleibt und GRUB in dessen MBR liegt und /boot sich darauf befindet -- davon kann man ja leicht eine Sicherheitskopie machen.

Die menu.lst für diesen Fall könnte dann wohl so aussehen:
Code:
# Modified by YaST2. Last modification on Fr Mai 11 20:35:36 CEST 2007
color white/blue black/light-gray
# Standard = 1. Eintrag
default 0
# Fallback = 2. Eintrag
fallback 1
# Wartezeit fuer manuelle Auswahl
timeout 8
gfxmenu (hd0,0)/boot/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 10
    root (hd0,0)
    kernel /boot/vmlinuz root=/dev/hda1 vga=0x317 resume=/dev/hda2 splash=silent showopts
    initrd /boot/initrd


###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Server 10
    root (hd0,0)
    kernel /boot/vmlinuz root=/dev/hda1 vga=normal showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 3
    initrd /boot/initrd

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Diskette
    chainloader (fd0)+1

# Booten disc 0 kernel
title RAID-System 1 -- /dev/sda1
  kernel (hd1,1)/boot/vmlinuz root=/dev/md0
  initrd (hd1,1)/boot/initrd
# Booten disc 1 kernel
title RAID-System 2 -- /dev/sdb1
  kernel (hd2,1)/boot/vmlinuz root=/dev/md0
  initrd (hd2,1)/boot/initrd
 
Fallback 1 bootet dann das Failsafe..., 3 bzw 4 sind hier sinnvoller. Keine Ahnung, ob man auch mehrere Fallbacks eingeben darf.
Bei den nbeuen Zeilen fehlen noch die Optionen. Warum haste den ersten Eintrag nicht kopiert und nur die Plattennamen geändert? Es fehlt z.B. resume (die swap-Partition).

Als "normaler" Eintrag nach dem Umbau sollte davon als Default gebootet werden:

Code:
title SUSE Linux Enterprise Server 10 
    root (hd0,0) 
    kernel /boot/vmlinuz root=/dev/[color=red]md0[/color] vga=0x317 resume=/dev/hda2 splash=silent showopts 
    initrd /boot/initrd
Aber erstmal beide einträge nebeneinander stehen lassen, md0 einrichten und Daten umkopieren, auf dem umkopierten Teil md0 z.B. die fstab ändern (hat ja ein anderes / und die alte / anders mounten, z.B. mnt/hda1).
So kann man erstmal testen und irgendwann den Default umschalten.
Bei nem Produktivserver steht beim Testen aber alles erstmal...

Viel Spaß beim Umbauen.
 
OP
mada

mada

Hacker
carsten schrieb:
Fallback 1 bootet dann das Failsafe..., 3 bzw 4 sind hier sinnvoller.
Ja, das war Absicht, bzw. das ist beim aktuellen System so. Bevor ich den default und den fallback auf das RAID-System umlenke, will ich das lieber mal manuell testen.
Bei den neuen Zeilen fehlen noch die Optionen. Warum haste den ersten Eintrag nicht kopiert und nur die Plattennamen geändert? Es fehlt z.B. resume (die swap-Partition).
Ich hab einfach den Teil aus dem Wiki kopiert und da die Plattennummern und Gerätenamen angepasst. Da wir den Server aber eh nie suspenden, tut es auch nicht weh, wenn keine resume-Partition existiert, denke ich.

Hier mal so, wie ich es jetzt ausprobieren möchte. Man beachte, dass auch der Kernel von der RAID-Platte gebootet werden soll:
Code:
# Modified by YaST2. Last modification on Fr Mai 11 20:35:36 CEST 2007
color white/blue black/light-gray
# Standard = 1. Eintrag
default 0
# Fallback = 2. Eintrag
fallback 1
# Wartezeit fuer manuelle Auswahl
timeout 8
gfxmenu (hd0,0)/boot/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 10
    root (hd0,0)
    kernel /boot/vmlinuz root=/dev/hda1 vga=0x317 resume=/dev/hda2 showopts
    initrd /boot/initrd

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Server 10
    root (hd0,0)
    kernel /boot/vmlinuz root=/dev/hda1 vga=normal showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 3
    initrd /boot/initrd

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Diskette
    chainloader (fd0)+1

# Booten von Kernel auf /dev/sda1
title RAID-System 1 -- /dev/sda1
  kernel (hd1,1)/boot/vmlinuz root=/dev/md0 vga=0x317 resume=/dev/hda2 showopts
  initrd (hd1,1)/boot/initrd
# Booten von Kernel auf /dev/sdb1
title RAID-System 2 -- /dev/sdb1
  kernel (hd2,1)/boot/vmlinuz root=/dev/md0 vga=0x317 resume=/dev/hda2 showopts
  initrd (hd2,1)/boot/initrd
Was ich mich frage: wenn md0 ein RAID 5 wäre, wie müsste dann der Eintrag aussehen? "kernel (hd1,1)/boot/vmlinuz" kann doch dann so nicht funktionieren?!

Aber erstmal beide einträge nebeneinander stehen lassen, md0 einrichten und Daten umkopieren, auf dem umkopierten Teil md0 z.B. die fstab ändern (hat ja ein anderes / und die alte / anders mounten, z.B. mnt/hda1).
So kann man erstmal testen und irgendwann den Default umschalten.
Bei nem Produktivserver steht beim Testen aber alles erstmal...
Viel Spaß beim Umbauen.
Das probieren wir mal so. Der Server steht dann auf jeden Fall, aber am Donnerstag ist ja Feiertag, da kann man das mal machen, denke ich.

Nochmal vielen Dank für die Diskussion,

Daniel
 
Oben