XenServer mit Software-Raid einrichten
Haben wir nicht alle schon zum Experimentieren den Citrix XenServer auf ausgedienter Hardware installiert? Sicher – aber oft sind es die alten Festplatten der alten Hardware, die die Gesamtperformance des Systems bremsen. Ein Raid-Verbund von Festplatten könnte das Problem mildern: Raid-5 sorgt für Ausfallsicherheit, während Raid-0 die gewünschte Geschwindigkeit bringt. Doch “echte” Raid-Controller mit XenServer-Support sind teuer und für HostRaid / FakeRaid / BiosRaid fehlt die Treiberunterstützung oft gänzlich (davon abgesehen ist deren Performance nicht besser, als das CPU-gestützte Softwareraid des Betriebssystems).
Dem SoftwareRaid kommt hierbei sogar eine interessante Sonderaufgabe zu: Die Installation des XenServers erfolgt auf einer der drei Festplatten, deren restlichen Speicher wir aber noch für das Raid verwenden werden :-)
Zu Demonstrationszwecken und für die Screenshots habe ich unter Oracles VirtualBox einen XenServer erstellt, der über drei 100 GB Sata Festplatten verfügt.
Die Installation erfolgte dabei auf der ersten der drei späteren Raid-Festplatten:
Idealerweise wird keine der Festplatten während der Installation als VM Storage hergerichtet – diese Storage Repositories müssten wir sonst später erst wieder entfernen. Ein Storage Repository zur Aufnahme der Festplattenobjekte der virtuellen Maschinen erstellen wir erst nachdem die Festplatten des XenServers einen Raid-Verbund begründet haben.
Nach der Installation kann mit dem Befehl “gdisk –l /dev/sda” bzw. “gdisk –l /dev/sdb” und “gdisk –l /dev/sdc” (-L steht dabei für “list”) die derzeitige Partitionierung überprüft werden. XenServer verwendet ab Version 6 das GPT Partitionierungsformat, bei älteren XenServern (5.6 etc) ist statt gdisk der Befehl fdisk zu verwenden. Dabei fällt auf, dass die erste Festplatte (sda) insgesamt drei Partitionen enthält (4 GB für die XenServer Installation, 4 GB für ein In-Place-Backup während eines Updates, und 92 GB “Restkapazität”).
Wir werden zunächst eine GPT-Partition auf den Geräten sdb und sdc anlegen – die folgenden beiden Screenshots dokumentieren die Vorgehensweise für /dev/sdb, analog muss der Befehl für /dev/sdc ausgeführt werden. Zuerst mit “n” eine neue Partition (Nummer “1”) anlegen. Als Startsektor habe ich “2048” gewählt (Alignment), der Endsektor ist je nach Grösse der Disk unterschiedlich – gemeinhin ist hier der jeweils höchste Sektor anzugeben. Der Partitiontype (0700) ist für unsere Operation egal. Zum Abschluss werden die Änderungen mit “w” (write) auf die Harddisk geschrieben und mit “Y” bestätigt.
Danach kann mit der Erzeugung des Raid angefangen werden – hierzu dient der Befehl “mdadm”. Das spätere Raid-Device wird /dev/md0 heissen und sich aus den drei Partitionen der drei Festplatten zusammensetzen. Mit dem Parameter “—level” wird das gewünschte Raid-Level spezifiziert, in unserem Beispiel also “0”. Das “assume-clean” statement soll mir auf dem Notebook helfen, den Prozess zu Beschleunigen – die zeitintensive Prüfung der Raidkomponenten (alle drei Festplatten) entfällt hierdurch. In der Praxis, auf echten Festplatten, würde ich eher dazu raten, die Prüfung hinzunehmen – schliesslich soll diese Massnahme helfen, den sicheren Betrieb zu gewährleisten.
Wer eine Meldung bekommt, dass auf einer der Festplatten nicht genügend Speicher frei sei – ein Reboot hilft hier :-)
Der Fortschritt während des Sync-Vorgangs kann mit “cat /proc/mdstat” beobachtet werden (unnötig bei “—assume-clean”).
Um das Raid-Volume nicht nach jedem Reboot neu starten zu müssen, kann mit mdadm eine Config-Datei angelegt werden. Dabei wird der Befehl “mdadm –examine –scan” mit dem Symbol “>” in die Datei /etc/mdadm.conf umgeleitet.
Dann können wir mit XenServer Bordmitteln das Storage Repository erstellen, die host-uuid ist ggf. vorher zu ermitteln (xe host-list), bei einzelnen XenServer hosts kann sie durch Drücken der Tab-Taste leicht ergänzt werden.
Dieser Befehl läuft eine Zeit lang, manchmal auch mehrere Minuten, in so einem Fall nicht die Nerven verlieren. Nach Abschluss der Operation gibt der Befehl die UUID des angelegten Repositories zurück.
Glückwunsch! Das Raid-SR ist nun einsatzbereit.
Have fun!
Hey, 1000 Dank für das Howto! Genau das was ich gesucht habe und auch noch bestens erklärt!
AntwortenLöschenSuper Anleitung! Sehr einfach und schnell umzusetzen. Vielen Dank!!!
AntwortenLöschenHi, bei mir steht das Software-Raid nach dem booten nicht mehr zur Verfügung. "md0" iist nicht mehr vorhanden. Hatte ein Raid0 über drei Platten \dev\sda3 \dev\sdb1 \dev\sbc1 nach dem Neustart war \dev\sdc1 sowie \dev\md0 nicht mehr vorhanden...? Solange ich nicht neustarte ist alles schön...
AntwortenLöschenHallo Anonym,
Löschenhaben Sie vielleicht vergessen / übersehen, nach dem Erstellen des MD-Devices die Konfiguration zu speichern? Dies wird mit dem Befehl
mdadm --examine >/etc/mdadm.conf
(siehe Text/Screenshot oben) gemacht.
Sie können auch mit "cat /etc/mdadm.conf" prüfen, ob die Datei sinnvollen Inhalt enthält.
Ich habe es soeben mit XS 602 durchgespielt und komme nur zu dem beschriebenen Effekt, wenn ich diese Konfigdatei nicht habe.
Wenn Ihre Meldung *wortgetreu* ist, dann achten Sie bei den Devices bitte auch auf die "forward-slashes" (/), anstelle der bei Windows eher üblichen Backslashes (\). Sie schreiben auch von einem Gerät "\dev\sbc1", die Disks bei Linux sollten "/dev/sdc1" (mit Dora statt Berta) heissen.
Lassen Sie mich doch bitte wissen, ob eine der genannten Fehlerquellen das Problem beheben konnte - vielleicht hilft es ja auch noch jemand anderem weiter?
Beste Grüsse aus dem sommerlichen Duisburg,
Dan
Hallo Dan,
AntwortenLöschennein den Befehl zum umleiten in die Datei "mdadm --examine > /etc/mdadm.conf" hatte ich nicht vergessen. Slash or back-slash...komme eher aus der Windows-Welt ;-)
Auszug aus /etc/mdadm.conf --> "ARRAY /dev/md0 level=raid0 num-devices=3 UUID=F.....ef7"
Nach dem Reboot kommt folgende Meldung: "This Storgae Repository is unplugges and not usable by this host." Hhmmm, was mache ich falsch ?
Grüße aus Hannover,
Axel
Hallo Axel,
Löschengerade noch mal in einer VM durchgespielt, diesmal mit 3x 1TB Festplatten als Raid 0. Ergebnis wie erwartet, alles ok. Raid /dev/md0 steht mit etwas über 3TB zur Verfügung und bleibt auch nach dem Reboot bestehen.
Ich denke es gab bei dir ein Problem, das eine der drei Festplatten beim Neustart nicht gemounted wurden. Deswegen klappte es mit dem md0 auch nicht, weil eine Platte fehlte...
LöschenHallo Dan,
AntwortenLöschensyntax Fehler konnte ich keine feststellen, Linux ist da ja auch recht aufmerksam...Wie sieht es mit Limits bzügl. Storage-Repository Größe aus ?
Ich habe drei 1 TB HDDs verbaut, macht native so ca. 2750 GB als Raid0 Verbund. Wie gesagt, nach dem Neustart ist /dev/sdc1 nicht mehr vorhanden bemzufolge ist device /dev/md0 auch gone...
Greetings, Axel
Hallo Axel,
Löschenes gab mal ein Limit für VDIs (also die virtuellen Festplatten für die VMs) von 2 TB. Hat aber m.E. nichts mit der Grösse des Storage Repositories zu tun.
Teste doch mal folgende Schritte:
1) Partitionieren der drei Disks, so dass sda3, sdb1 und sdc1 zur Verfügung stehen (mit gdisk). Prüfen mit gdisk oder fdisk. Dann Reboot. Geht nun schon sdc1 verloren? Dann wäre immerhin klar, warum das Raid sich nicht beim Booten aufbauen kann...
2) Erstellen des Raid MD-Devices aus nur je zwei disks. Sdb1 und sdc1 zum Beispiel. Booten. Raid noch gesund?
3) Erst im letzten Schritt würde ich dann das SR vom XenServer mit ins Spiel bringen - so sollte zumindest klar werden, ob Linux das Problem "alleine" verursacht.
LG,
Dan
Hallo Dan,
AntwortenLöschenzu 1) Partitionen /dev/sdb1 und /dev/sdc1 abgelegt. Reboot, alles gut, Partitonen weiterhin vorhanden.
zu 2) Raid0-SR aus /dev/sda3 und /dev/sdc1 erstellt. Reboot, alles gut, /dev/md0 weiterhin vorhanden.
zu 3) Storage Repository erstellt. Wurde im Xen Center sofort angezeigt, als "default" makiert. Reboot, bumbs, Raid ist nicht mehr verbunden, /dev/md0 noch vorhanden, jedoch /dev/sdc1 ist weg, obwohl diese Partition nicht ins Raid-Array konfiguriert war ?!?. Scheint der Xenserver zu sein...
FM aus dem Xen-Center:
>>21.08.2012 23:57:46 Error: Repairing SR Raid0-SR - Internal error: Failure("Storage_access failed with: SR_BACKEND_FAILURE_52: [ ; Logical Volume mount/activate error [opterr=Unable to activate LV. Errno is 5]; ]")<<
Grüße, Axel
P.S.: Schönen Dank fürs Troubleshooting
!-Könnte es sein, dass der Formattyp nicht "lvm" (8E00) auf /dev/sda3 sein darf, um im Raid laufen zu können ???
zu 2) Nachtrag: Raid0-SR besteht aus /dev/sdb3 und /dev/sdb1 und nicht /dev/sdc1!
AntwortenLöschenKann die Fehlermeldung bestätigen. Ich habe zwar ein Raid5 mit 4 Platten gebaut, allerdings ist nach einem Neustart das device unplugged mit der oben genannten Fehlermeldung.
AntwortenLöschenHallo,
AntwortenLöschenich habe das nachd der Anleitung gemacht und sah auch alles ganz gut aus, doch mir fiel eben auf, dass am PC nur eine HDD arbeitet (beide haben seperate LEDs, die sitzen in einem HotSwap Käfig). Wie kann ich prüfen ob das RAID1 ordnungsgemäß arbeitet? Das SR funktioniert, das wundert mich etwas.
C. Holsten
Hallo,
AntwortenLöschenDanke für das Tutorial. Sehr schick...
Leider ist bei mir nicht idealerweise kein local SR vorhanden, da ich den XenServer per unattended installiere.
Wie müsste ich vorgehen? Das local SR entfernen? Denn wenn ich aktuell
"mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb
mdadm: Cannot open /dev/sda3: Device or resource busy
mdadm: Defaulting to version 1.-1 metadata
mdadm: create aborted" ausführe, ist das Device sda3 natürlich busy.
Wäre super, wenn ich hier Hilfe bekomme.
Danke im Voraus, Axel (nicht aus H ;))
Hallo Daniel,
AntwortenLöschenmein Kommentar von eben hat sich im Grunde erledigt. Ich habe mir die Frage selbst beantwortet und konnte während der unattended Installation KEIN gueststorage anlegen lassen. Nun klappt's...
THX!
Axel
Bei der Erstellung der RAID-Partitionen musste ich als Typ Partitionstyp nicht wie beschrieben "0700" verwenden, sondern "FD00" (Linux RAID), da das RAID autodetect beim Booten das RAID-Array nicht assembled und somit der Storage nicht verfügbar war.
AntwortenLöschen