Howto: Software-RAID 1 unter FreeBSD
Um einem FreeBSD Server die nötige Datensicherheit zu geben, muss es nicht immer ein teures Hardware-RAID sein. Ein Software-RAID mit den GEOM Tools bietet gute Performance und hohe Sicherheit zum Nulltarif.
Nach der Installation auf einer der beiden Festplatten können wir im laufenden Betrieb das RAID definieren. Dazu müssen wir jedoch zuerst den Sicherheitsschutz der Festplatte im Kernel deaktivieren:
# sysctl kern.geom.debugflags=16 kern.geom.debugflags: 0 -> 16
Danach können wir die Platte mit dem Betriebssystem unserem RAID Verbund hinzufügen:
# gmirror label -v -b round-robin gm0 /dev/ad0 Metadata value stored on /dev/ad0
Mittels des Parameters -b round-robin wählen wir den Round-Robin Algorithmus zum Lesen und Schreiben der Daten im RAID Verbund. Weitere Verfahren finden sich in gmirror(8). Die frisch erstellten RAID Devices finden sich unter /dev/mirror/ wieder.
Damit das nötige GEOM Kernel Modul geladen wird und unser RAID 1 beim Bootvorgang erkannt wird, fügen wir folgende Zeile in die loader.conf ein:
# echo geom_mirror_load="YES" >> /boot/loader.conf
Zusätzlich müssen noch die Einträge in der fstab angepasst werden:
# sed -i.bak 's%ad%mirror/gm%' /etc/fstab
Hierdurch werden Einträge wie /dev/ad0s1a zu /dev/mirror/gm0s1a.
Nun ist es an der Zeit das System neu zu starten. Beim Bootvorgang sollte nun der GEOM Kernel Treiber geladen werden und Meldungen wie diese erscheinen:
GEOM_MIRROR: Device gm0 created (id=2125638583). GEOM_MIRROR: Device gm0: provider ad0 detected. GEOM_MIRROR: Device gm0: provider ad0 activated. GEOM_MIRROR: Device gm0: provider mirror/gm0 launched. GEOM_MIRROR: Device gm0 already configured. Mounting root from ufs:/dev/mirror/gm0s1a
Wieder im laufenden System hängen wir die zweite Platte ins RAID ein, da ein RAID 1 mit nur einer Festplatte wenig Sinn macht:
# gmirror insert gm0 /dev/ad2 GEOM_MIRROR: Device gm0: provider ad2 detected. GEOM_MIRROR: Device gm0: rebuilding provider ad2.
Die Synchronisierung des RAID Verbunds wird gestartet. Den aktuellen Status können wir uns mit gmirror anschauen:
# gmirror list Geom name: gm0 State: DEGRADED Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 1 ID: 2125638583 Providers: 1. Name: mirror/gm0 Mediasize: 10262568448 (9.6G) Sectorsize: 512 Mode: r6w5e2 Consumers: 1. Name: ad0 Mediasize: 10262568448 (9.6G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: DIRTY GenID: 0 SyncID: 1 ID: 3986018406 2. Name: ad2 Mediasize: 10262568448 (9.6G) Sectorsize: 512 Mode: r1w1e1 State: SYNCHRONIZING Priority: 0 Flags: DIRTY, SYNCHRONIZING GenID: 0 SyncID: 1 Synchronized: 1% ID: 1946262342
Sobald der Rebuild Vorgang abgeschlossen ist, erscheint folgende Meldung:
GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished. GEOM_MIRROR: Device gm0: provider ad2 activated
Unser System ist nun mit einem voll funktionierenden Software-RAID 1 abgesichert. Zur Überwachung empfehle ich dieses Nagios Plugin, um bei einer defekten Festplatte schnell reagieren zu können.
Related posts:
- Nagios Plugins für Linux und FreeBSD Software-RAIDs Als Admin sollte man auch ein bisschen den Drang zum Kontrollfreak haben – jedenfalls was...
- Howto: Rebuild eines Linux Software-RAIDs Software-RAIDs unter Linux sind eine kostengünstige und flexible Möglichkeit den Speicher eines Servers redundant auszulegen....
- Howto: UMTS mit o2 Surf Card unter Linux Da mein Adminhandy kein HSDPA kann und mein Kollege kürzlich einfach so eine neue...
- Howto: Suspend unter Linux Ich gebe hier ein kurzes Howto zu Hibernation (“Suspend to Disk”) unter dem aktuellen Linux-Kernel...
- FreeBSD: Immer den schnellsten Mirror nutzen Manche Mirror sind schneller als andere – ganz klar. Gerade bei Installationen oder Updates von...



Klaus
Der Vollständigkeit halber sollte vielleicht noch erwähnt werden, daß ein Software-RAID den entscheidenden Nachteil hat, beim Reboot des Servers möglicherweise einen manuellen Eingriff zu benötigen:
Das BIOS weiß schließlich nichts von einem RAID, und versucht von einer einzelnen (der primären) Festplatte zu booten. Sollte es aber ausgerechnet diese von den beiden Platten zerlegt haben, kann es – je nach Art des Defekts – notwendig sein, das BIOS explizit von der anderen Platte booten zu lassen.
Ein Hardware-RAID stellt dem BIOS hingegen ein einzelnes logisches Laufwerk zur Verfügung. Welche der Platten ggf. defekt ist, spielt dann beim Boot-Vorgang keine Rolle.
Letztendlich gilt trotzdem, daß auch ein Software-RAID noch immer besser als gar kein RAID ist, und daß ein RAID (egal welcher Art) kein Backup ersetzt.
matthias
Da hast du natürlich recht. Aber meistens geht eine Platte ja im laufenden Betrieb kaputt und man möchte diese dann auch ohne Reboot wechseln. Falls man einen Reboot machen muss, um die Platte zu wechseln, ist man ja eh vor Ort und kann von der richtigen Platte booten.
Sollte es aber wirklich mal den Defekt beim Boot Vorgang geben, ist ein Hardware RAID schon deutlich angenehmer
Stefan
Nee, nee, das Software-Raid wieder!
Klar, irgendwer muss die Ersatzplatte reinstecken, der Azubi oder Kollege ist aber evtl. im Zweifelsfalls zu doof und schrotet dann auch noch die andere Platte indem er falschrum synchronisiert oder sonstigen Quatsch macht, oder bekommt garnichts hin, fühlt sich hilflos und ruft mich an (am Besten noch im Urlaub). Im RZ liegen auch Ersatzplatten – irgendwann Nachts das RZ-Personal anzuweisen die zu tauschen ist einfacher als hinzufahren (naja gut, kommt drauf an, wenn man da jemanden mit 5 linken Daumen an jeder Hand erwischt, könnte der zu ungeschickt sein, die Platte in den Hotswaprahmen zu schrauben *gg).
Vermeidbare Ausfallzeit sollte eben auch möglichst nicht (für einen Reboot) “genommen” werden, damit sie für die “echten” Probleme übrig bleibt (es gibt auch Kunden, die Nagios einsetzen, um zu kontrollieren, ob man die vertraglich vereinbarte Leistung liefert).
Da lobe ich mir echtes Raid, denn damit kann man auch den Azubi schicken (wenn man ihm genau sagt, welcher Port gemeint ist, denn manche Controller zählen ab Port 0 und wenn man dann sagt, dass Port 1 getauscht werden soll, kann das zu unlustigen Ergebnissen führen).
Onboard geht Hotswap auch nur bei ganz bestimmten Chipsätzen soweit ich weiß, zumindest fällt mir keiner ein, der das unterstützt – habe dazu aber auch noch nie ausführlich recherchiert, weil sowas für den RZ-Betrieb garnicht in Frage kommt. Klärt mich bitte auf, wenn ihr dazu was wißt!
Meine Meinung steht fest: SW-Raid macht nur Probleme! Schon 1-2h mehr investierte Zeit für das Setup (und das Testen) lohnen den möglichen Ärger nicht, Zeit ist eben Geld (ja ich weiß, 5€ in die Phrasenkasse wären nun fällig *gg) und für die Wiederherstellung eines Systems aus Backups kann auch locker mal eine Stunde vergehen.
Ich hatte auch schon ein Windows-System, bei dem die RAID-Wiederherstellung nicht funktionierte – da wirklich garnichts an wichtigen Daten drauf war, wurde dann einfach fix neu aufgesetzt, statt sich ewig mit dem blöden SW-RAID rumzuärgern.
Bei den Linux-Systemen haben wir auch kein einziges mit SW-Raid, die kriegen alle schönes Hardware-RAID mit Hotswap, dafür sorge ich schon. 8-D
Wenn beim Kauf eines 2500€-Servers an 200€ gespart wird, sehe ich das nicht unbedingt ein – viele Chefs sind da aber (leider) sicher anderer Meinung.
Den höheren Preis kann man aber durchaus an den Kunden weitergeben, wenn man ihm darlegt, dass man das ganze professionell machen möchte, nicht “hingebastelt” – und dann noch auf die oben genannte Punkte hinweist. welcher Kunde will schon als jemand darstehen, der mit einer unprofessionellen Bastellösung zufrieden ist? Ich glaube damit trifft man Chefs ganz gut!
matthias
Ich finde man muss hier aber noch unterscheiden zwischen RAID 1 und anderen RAIDs. Software-RAID würde ich nur für den RAID 1 Betrieb verwenden und dann auch nicht bei den kritischen Systemen. z.B. bei einfachen Nodes, die keine Daten gespeichert haben.
Ansonsten nehme ich auch lieber ein HW RAID, aber dann nicht irgendein Billig-onBoard-Fake-RAID. Gute Erfahrungen habe ich immer wieder mit 3Ware gemacht. Die haben gute Software für Linux/FreeBSD und lassen sich prima überwachen und mit der Software kontrollieren.
Wenn es um Geschwindigkeit geht (z.B. RAID 10), kommt auch nur ein HW RAID in Frage. Aber es gibt auch Fälle, in denen es Geldverschwendung wäre, ein HW RAID einzusetzen (z.B. RAID1 bei einem Backupsystem o.ä.)
Klaus
Sorry, ich kann mir keinen Fall von Geldverschwendung bei einem Hardware-RAID vorstellen. Wenn die Daten unwichtig sind, braucht man gar kein RAID. Wenn einem die Daten so wichtig sind, daß man eine 2. Platte einbaut, kann man sich auch die 100 Euro für einen kleinen 3ware leisten.
Allerhöchstens dann, wenn es *technisch* nicht geht, einen Controller einzubauen, würde ich auf SW-RAID zurückgreifen…
Btw: ich hab mit 3ware auch (fast) nur gute Erfahrungen gemacht. Es gibt aber auch da einzelne Konfigurationen, bei denen der Controller rebootet werden will um eine neue Platte zu finden (2-Port RAID-1 mit dem 8006-2 bei Linux 2.6).
matthias
Software-RAIDs machen dort Sinn, wo nicht die Daten der primäre Sinn der Redundanz sind, sondern das Weiterlaufen der Maschine mit dessen Dienste.
Daten werden ja eh meistens bereits auf einem zentralen Speicher im Netz abgelegt. Die Maschinen dienen dann nur noch als Rechenknechte für verschiedene Dienste (z.B. die Nodes in einem Cluster). Daten sind also sowieso sicher im Netz gespeichert. Fällt nun die einzige Platte bei einem System ohne RAID aus, fällt der Dienst auch aus. Beim SW-RAID läuft der Dienst weiter. Dafür ist ein HW-RAID IMHO Geldverschwendung.
Stefan
@Klaus: wieso muss denn da der Server neu gestartet werden?!? Einfach im 3dm2 Tool “rescan” machen, raid rebuilden?
3Ware ist aber nicht SO toll: http://bugs.gentoo.org/show_bug.cgi?id=60690
Guck mal bei #66 …
Ich kann das alles nur bestätigen! Der 3-ware Support ist etwas ätzend.
@Matthias: Bei einem Cluster ist es egal, wenn eine Node ausfällt, da muss das System nicht auf SW-RAID weiterlaufen – da wäre dann sogar die 2. Platte für SW-RAID Geldverschwendung!
Stefan
BTW: “Billig-onBoard-Fake-RAID” ist kein RAID
matthias
Naja, eine 2te Platte kostet ja nix mehr. Und ich fände es schon blöde, wenn ein Node nur wegen einer defekten HDD ausfällt. Da muss schon die CPU hinüber sein oder andere Hardware.
zum “Billig-onBoard-Fake-RAIDâ€Â: das wird nur leider immer wieder gerne als echtes RAID verkauft :/
Stefan
Ein Raidcontroller kostet ja auch nichts.
Ein Cluster ist doch so konzipiert (sollte so konzipiert sein…), dass mal eine Node ausfallen darf und bei größeren Clustern für gaaanz große Webseiten braucht man eigentlich eh ein paar mehr Nodes als durchschnittlich nötig sind – für Lastspitzen, Tests etc.! Der mögliche Ausfall zumindest einer Node (oder mehr, je nach Größe) muss da im Grunde schon mitgeplant sein!
Billig-onBoard-Fake-RAID: siehe HP Serveraid bei den Servern im “billigen” Preissegment…
Klaus
@Stefan: ist nunmal so – keine Ahnung warum
Geht weder mit tw_cli, noch mit dem 3dmd2:
host:~# tw_cli maint help
maint
rescan [noscan] NOTE: Does not import non-JBOD on 7000/8000 models.
[...]
Stefan
Also ich meine, dass ich das schonmal gemacht habe, hmmm….kann aber auch sein dass der Server keine Hotswap-Backplane hatte und neu gestartet werden musste (wir haben dummerweise teils noch alte Kisten ohne Hotswap) .
Dann melde doch mal einen Bug!
klugscheisser
sysctl kern.geom.debugflags=16
Dieses Kommado dient dazu, den aktuellen Schreibschutz-Mechanismus des Master Boot Record (MBR) aufzuheben! Der Wert 16 bedeutet, dass der MBR nun beschreibbar ist.
matthias
Danke für die Info.
duno
Hint: Das Ändern der fstab hat bei mir das System geschrottet, weil das root der single Platte auf ad4s1b lag. Das hat die regepx dann auf gm4s1b gesetzt, korrekt wäre ja aber gm0s1b. Besser also etwas wie
sed -i.bak ’s%ad[0-9]%mirror/gm0%’ /etc/fstab