Endlich geloest: RAID5 fuer /video incl. OS-Upgrade

  • Quote

    Originally posted by knebb
    Wenn Du viele kleine Operationen hast. Z.B. bei Datenbanken ist die IO Groesse oftmals recht klein.
    Da fuer jede Operation immer min. ein Chunk gelesen werden muss, macht es Sinn, bei kleinen Operationen auch die Chunk size gering zu halten. Du kannst es ja mal simulieren: formatiere Dein FS mit stride=4 und einmal mit stride=644 und das Ganze jeweils mit Chunk=64 und 256. Vergleiche. Es kommt dauf die Anwendung darauf an.
    Fuer video sollte maximal eine recht gute Naeherung sein :)


    ich glaub' datt hab' ich jetzt verstanden! In diesem Fall minimierst du halt einfach die sowieso nutzlosen Lesezugriffe auf das Array...


    Gruss+danke fuer's aufschlauen,
    - berndl


    PS: Ich werde mal mit 128KB oder 256KB chunksize probieren und ein paar Filme hin- und herkopieren.

  • Quote

    Original von berndl
    PS: Ich werde mal mit 128KB oder 256KB chunksize probieren und ein paar Filme hin- und herkopieren.


    Nur immer daran denken, dass stride dazu passen muss. Sonst bringen Vergleiche garnix.

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Hi zusammen,


    so, jetzt habe ich ernst gemacht. 3 IDE Platten (/dev/hda5, /dev/hdb5, /dev/hdd5) mit je 250GB laufen in einem RAID5. To whom it may concern, folgendes habe ich gemacht (per sudo):

    Code
    1. * Auf den 3 Platten je eine logische Partition mit Typ=FD angelegt
    2. * mdadm --create --verbose /dev/md0 --auto=yes --level=5 --raid-devices=3 --chunk=128 /dev/hda5 /dev/hdb5 /dev/hdd5 # legt das RAID5 an
    3. * mdadm --misc --detail /dev/md0 # zeigt den Status
    4. * mke2fs -b 4096 -R stride=32 -j -m 0 /dev/md0 # Formatiert mit ext3, 0% fuer root
    5. * tune2fs -i 6m -c 0 /dev/md0 # fsck alle 6 Monate
    6. * mount -t ext3 /dev/md0 /video/srv_md0 # probeweises mounten
    7. * chown USER:USER /video/srv_md0 # damit auch ich als USER schreiben kann


    Dann in die /etc/fstab eingetragen:

    Code
    1. /dev/md0 /video/srv_md0 ext3 defaults 0 0


    Ein 'cat /proc/mdstat' zeigt mir den Status der 3 Platten im RAID5 an. Bei Ausfall einer Platte sowie ersetzen durch eine gleiche/groessere sollte mir folgendes weiter helfen:

    Code
    1. * mdadm /dev/md0 --remove /dev/hdXY
    2. * Neue Platte einbauen und partitionieren
    3. * mdadm /dev/md0 --add /dev/hdXY


    Sollte der IDE Controller mit den beiden Platten die Graetsche machen (hda und hdb), dann (nach Einbau eines neuen Controllers bzw. Mainboards):

    Code
    1. * mdadm --stop /dev/md0 # stoppt das RAID
    2. * mdadm --assemble /dev/md0 /dev/hda5 /dev/hdb5 --force # baut mit den 2 Platten am Controller ein RAID zusammen
    3. * mdadm /dev/md0 --add /dev/hdd5 # fuegt das 3. drive hinzu


    Danke an alle hier fuer die Tipps, ausserdem hat mir noch
    http://wiki.ubuntuusers.de/Software-RAID
    geholfen.


    Gruss,
    - berndl

  • so, noch eine klitzekleine Frage: Wenn ich jetzt mal ein neues OS aufspiele, wie kriege ich dann mein RAID5 wieder?


    Kann ich da mit 'mdadm --assemble /dev/md0 /dev/hdx....' was machen? Woher kennt das System denn dann /dev/md0? Oder wie geht das???


    Hat da noch jemand 'nen Tipp fuer mich?


    Gruss,
    - berndl

  • Hi berndl,


    also bei mir ist es schon eine ganze Weile her, von daher keine Garantie dafür. Aber eigentlich sollte Folgendes funktionieren:

    Code
    1. cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.old
    2. echo 'DEVICE /dev/hde* /dev/hdi* /dev/hdk*' > /etc/mdadm/mdadm.conf
    3. mdadm --detail --scan >> /etc/mdadm/mdadm.conf
    4. mdadm --assemble /dev/md0 /dev/hde /dev/hdi /dev/hdk
    5. mdadm -R /dev/md0


    Wobei ich glaube, dass '--assemble' (4. Zeile) in diesem Fall nicht nötig wäre.


    Kannst Du das nicht mal mit den Imagedateien simulieren - dann weißt Du es ganz genau !?


    Gruß,
    Matze

  • Moin Matze,
    probier' ich mal aus, danke. Ich habe mittlerweile auch mal mit ner Knoppix probiert, zumindest das /dev/md0 hat er mir automatisch angelegt. An das 'assemble' hatte ich mich nicht getraut, das teste ich mal mit image Dateien.


    Gruss,
    - berndl

  • Hallo allerseits,


    ich habe jetzt mal ein wenig mit loop-devices rumgespielt, tut alles so wie ich dachte/hoffte! Vielleicht interessierts ja jemand anderen auch...


    Was hab' ich so alles getan (als root):

    Code
    1. 1.) dd if=/dev/zero of=/root/loopdisk1 bs=1024k count=10 # loopdisk 1..3 anlegen
    2. 2.) modprobe loop # um die devices /dev/loop1 ... n anzulegen
    3. 3.) losetup /dev/loop1 /root/loopdisk1 # wiederholen mit loop/loopdisk 2 und ..3
    4. 4.) mdadm --create --verbose /dev/md1 --level=5 --raid-devices=3 /dev/loop1 /dev/loop2 /dev/loop3 # RAID5 bauen
    5. 5.) mkfs.ext2 /dev/md1 # formatieren
    6. 6.) mkdir /mnt/testraid
    7. 7.) mount /dev/md1 /mnt/testraid # mounten


    Nach einem reboot musste ich die Schritte 2 und 3 wiederholen. Dann:

    Code
    1. mdadm --assemble /dev/md1 /dev/loop1 /dev/loop2 /dev/loop3
    2. mount /dev/md1 /mnt/testraid


    und das RAID war wieder da!
    Das habe ich mit einem von DVD gebooteten KNOPPIX auch mal probiert, ich musste nur vor dem mdadm --assemble ... Aufruf noch 'modprobe md' machen.


    Dann habe ich mal ein fehlerhaftes Drive simuliert, dazu die Schritte 1 und 3 auf ein neues 'device' /dev/loop4 und /root/loopdisk4 angewendet. Dann als Test:

    Code
    1. mdadm -f /dev/md1 /dev/loop2 # loop2 als fehlerhaft markiert
    2. mdadm -r /dev/md1 /dev/loop2 # loop2 aus dem RAID entfernt, die Daten sind immer noch da!
    3. mdadm -a /dev/md1 /dev/loop4 # das neue loop4 ins RAID eingebunden, RAID wieder komplett


    Jetzt habe ich noch das RAID um eine weitere disk erweitert, das geht so:

    Code
    1. mdadm --add /dev/md1 /dev/loop2 # jetzt das 'alte' loop2 wieder als spare hinzu fuegen
    2. mdadm --grow /dev/md1 --raid-devices=4 # spare wird aktiv ins RAID eingebunden
    3. umount /mnt/testraid # uebliches unmounten, fs-check und resize
    4. e2fsck -f /dev/md1
    5. resize2fs /dev/md1


    Tja, damit habe ich jetzt eine Platte/Partition mehr! Fuer den Ernstfall mit dem richtigen RAID wuerde ich da aber vorher einen Backup ziehen. Zwischen den einzelnen steps kann man mit 'cat /proc/mdstat' und 'mdadm --detail /dev/md1' nachpruefen wie der Status gerade ist.


    Danke an alle hier fuer die Tipps!


    Gruss,
    - berndl

  • Hi, mal wieder ich...


    so, ich hab' jetzt Ubuntu 8.04 parallel (auf eigener Partition) zum 7.10 installiert. Wenn ich jetzt als root

    Code
    1. modprobe md
    2. mdadm --assemble /dev/md0 /dev/sdc5 /dev/sdd5 /dev/sde5


    mache (die Platten hiessen vorher /dev/hda5, ../hdb5, ../hdd5), dann kann ich das RAID mit

    Code
    1. mount -t ext3 /dev/md0 /video/srv_md0


    auch mounten. Aber nach einem Neustart ist natuerlich alles wieder weg...


    Also die Frage: Wo baue ich das 'modprobe md' und das 'mdadm --assemble ...' ein, damit ich in der /etc/fstab beim naechsten booten das RAID wieder automatisch mounten kann?


    Hat wer 'nen Tipp?


    Gruss,
    - berndl

  • Quote

    Original von berndl
    Also die Frage: Wo baue ich das 'modprobe md' und das 'mdadm --assemble ...' ein, damit ich in der /etc/fstab beim naechsten booten das RAID wieder automatisch mounten kann?


    Also auf meinem steinalten ctvdr4 (aka Debian Sarge ?) kommt das mit mdadm von selbst.
    In /etc/init.d gibts ein mdadm das nur im passenden runlevel eingefügt wird und alle raids werden automatisch zusammengestetzt und gestartet.


    Genaugenommen startet es nur mdadm in deamon mode.
    Übrigens einn mdadm.conf ist bei mir gar nicht nötig. Das macht mdadm von allein aufgrund von informationen innerhalb der partitionen (partitionstabelle ?).


    md scheint aber schon über die modulfonfiguration geladen zu werden.
    Bereits der kernel meldet beim booten die raid5 partitionen.
    Ich würds mal mit zufügen von md in /etc/modules versuchen, kenn mich bei Ubuntu aber nicht wirklich aus.


    gruss Peter


    P.S.
    Das RAID wird bei mir aber nur für wichtiges verwendet. Video kommt da fast nicht drauf. Wenn ich seh wie lange meine popligen 40Gig partitionen schon für'n rebuilt brauchen ist das bei 250..500G echt lange.
    Da steigt die wahrscheinlichkeit auch noch ne zweite platte beim rebuilt zu killen und damit die daten richtig zu verlieren.
    Hab grade eine meiner 500G platten verloren, war schade um einige aufnahmen, aber nix wo ich mir den strick holen würde.
    Und mal ehrlich, ich hab jetzt wieder 220h frei :lol2

    Mein anderer VDR ist (auch) ein EPIA
    1)VIA M10000-Nehemiah, 160+120G Samsung; NEC 1300A; YY A106; LCD20x4 ...
    2) ctvdr+e-tobi ; C3M266+1,2GHz-Nehmiah; 160G Samsung + 4x500G Seagate SATA; NEC3500; TT-Case; DVB-S 1.3+4MB + Nova ; gLCD 240x128 ...
    . . .TB rulez. . .

    The post was edited 2 times, last by PeterD ().

  • Quote

    Original von PeterD
    ...
    Ich würds mal mit zufügen von md in /etc/modules versuchen, kenn mich bei Ubuntu aber nicht wirklich aus.
    gruss Peter
    ...


    Hi Peter,
    danke, ich habe mal in der laufenden Ubuntu 7.10 in /etc/modules nachgeschaut, da ist nix drin was mit mdadm zu tun hat. Muss also irgendwie anders laufen...
    Liegt es evtl. an der unter Ubuntu 8.04 _nicht vorhandenen_ mdadm.conf? Braucht mdadm die um ein RAID beim hochfahren zusammen zu bauen? Der Dienst 'mdadm' laeuft auch unter dem 8.04 schon, ist aktiviert.
    Soll ich mal eine 8.04er Version von mdadm.conf erstellen (die Platten hiessen ja unter 7.10 /dev/hda5, ..., jetzt unter 8.04 heissen sie /dev/sdc5, ...)? Ich wuerd's halt gerne verstehen was da beim hochfahren passiert...


    Gruss,
    - berndl


    PS: Och, sind bei mir ja nur 3x250GB (einzeln gekauft, d.h. verschiedene Chargen). Ich denke einen /video-Supergau koennte ich damit schon ueberleben. Die wirklich wichtigen Sachen kommen bei mir auf DVD-RW (so alle 2-3 Wochen), davon stehen 5 Stueck hier im Regal. Eine der 5 alten RWs wird ja dann hoffentlich funktionieren...

  • Quote

    Original von berndl


    Hi Peter,
    danke, ich habe mal in der laufenden Ubuntu 7.10 in /etc/modules nachgeschaut, da ist nix drin was mit mdadm zu tun hat. Muss also irgendwie anders laufen...
    Liegt es evtl. an der unter Ubuntu 8.04 _nicht vorhandenen_ mdadm.conf? Braucht mdadm die um ein RAID beim hochfahren zusammen zu bauen? Der Dienst 'mdadm' laeuft auch unter dem 8.04 schon, ist aktiviert.


    Also in /etc/modules muss nur das modul "md", das sollte allein genügen damit das raid funktioniert. Lediglich mounten muss man anschliessend das raid noch.


    mdadm in /etc/init.d wird lediglich für die überwachung benötigt (daemon mode). Da bekomme ich nachrichten wenn das raid klemmt oder beim rebuilt.


    Meine mdadm version ist v1.9.0 und die funktioniert ohne jeder mdadm.conf. Ubuntu sollte wohl schon mit ner neueren version von mdadm kommen.


    Die informationen zum raid stecken wohl in der partitionstabelle und den bootblöcken. Ansonsten währe ja auch booten von einem raid nicht möglich.
    Ich hatte mal versucht einfach eine der raidpartitionen auf eine andere platte zu kopieren (mit dd). Wollte die platte gegen eine grössere tauschen. Diese kopierte partition wurde nicht als orginal erkannt.


    gruss Peter


    P.S.
    Zum überwachen übergebe ich mdadm als daemon eine kleines script per parameter "-p /pfad/mdadm_stat_vdr.sh" um die events an vdr zu melden:

    Mein anderer VDR ist (auch) ein EPIA
    1)VIA M10000-Nehemiah, 160+120G Samsung; NEC 1300A; YY A106; LCD20x4 ...
    2) ctvdr+e-tobi ; C3M266+1,2GHz-Nehmiah; 160G Samsung + 4x500G Seagate SATA; NEC3500; TT-Case; DVB-S 1.3+4MB + Nova ; gLCD 240x128 ...
    . . .TB rulez. . .

    The post was edited 3 times, last by PeterD ().

  • Quote

    Original von PeterD
    ...
    Also in /etc/modules muss nur das modul "md", das sollte allein genügen damit das raid funktioniert. Lediglich mounten muss man anschliessend das raid noch.
    ....
    Die informationen zum raid stecken wohl in der partitionstabelle und den bootblöcken. Ansonsten währe ja auch booten von einem raid nicht möglich.


    hmm, also von dem laufenden 7.10 (wo ich das RAID5 eingerichtet habe) steht in der /etc/modules nix bzgl. 'md'.
    Achja, ich boote ja nicht vom RAID5, ist ja nur ein Datengrab.


    Wie oben schon beschrieben tut es unter 8.04 ja auch wenn ich aus der shell

    Code
    1. modprobe md
    2. mdadm --assemble /dev/md0 /dev/sdc5 /dev/sdd5 /dev/sde5


    mache und dann mounte.


    Wo wird denn mdadm --assemble .... normalerweise aufgerufen? Man koennte es ja in die /etc/init.d/bootmisc.sh eintragen. Aber ich wuerde gerne verstehen, wie 7.10 das RAID startet.


    Gruss,
    - berndl

  • Quote

    Original von berndl
    hmm, also von dem laufenden 7.10 (wo ich das RAID5 eingerichtet habe) steht in der /etc/modules nix bzgl. 'md'.
    Achja, ich boote ja nicht vom RAID5, ist ja nur ein Datengrab.


    "md" muss in /etc/modules DAMIT das RAID automatisch gestartet wird.


    Jetzt hat aber jede distri ihre eigenen vorstellungen wie das moduls "md" geladen wird.
    Ursprünglich wird es einfach in /etc/modules als zeile zugefügt und dadurch automatisch beim booten geladen.


    Neuer distries wollen das aber in irgentwelchen automatischen ladelisten. Beim CTVDR4 wird modutils verwendet um die /etc/modules aus diversen teilconfigurationsdateien zusammenzusetzen. Dadurch kann die modulliste kernelabhängig geänder werden (2.4er braucht andere DVB module als 2.6er kernel)
    Theoretisch kann man das auch so konfigurieren das der erste zugriff (mounten) eines RAID devices automatisch "md" läd.


    Ich würde vorschlagen du sucht mal allgemein zur modul configuration unter Ubuntu. Das hat nix mit RAID zu tun sondern wie man Ubuntu dazu bekommt bestimmte kernel-module beim start zu laden.


    Quote

    Original von berndl
    Wie oben schon beschrieben tut es unter 8.04 ja auch wenn ich aus der shell

    Code
    1. modprobe md
    2. mdadm --assemble /dev/md0 /dev/sdc5 /dev/sdd5 /dev/sde5


    mache und dann mounte.


    Wo wird denn mdadm --assemble .... normalerweise aufgerufen? Man koennte es ja in die /etc/init.d/bootmisc.sh eintragen. Aber ich wuerde gerne verstehen, wie 7.10 das RAID startet.


    Schon mal versucht nach "modprobe md" einfach das RAID (/dev/md0) direkt zu mounten ?


    "mdadm --assemble xxxx" solle komplett unnötig sein, zumindestens ist es das bei mir.
    mdadm wird bei mir nur im daemon modus gestartet NACHDEM das RAID schon da ist und überwacht nur die "gesundheit" des RAIDs.
    Ich sehe in der kernel.log bereits das die RAID partitionen gestartet werden


    Nötig ist mdadm --assemble nur wenn md das RAID nicht erkennt, z.B. bei fatalen fehlern (RAID5 mit mindestens zwei defekten platten).
    Das passiert wohl nur wenn das RAID defekt ist. Dann kann es (glaub ich) nur manuell gestartet werden und dann sind diverse "forced" schalter nötig um das RAID trotz fehler zu mounten.


    Gruss Peter

    Mein anderer VDR ist (auch) ein EPIA
    1)VIA M10000-Nehemiah, 160+120G Samsung; NEC 1300A; YY A106; LCD20x4 ...
    2) ctvdr+e-tobi ; C3M266+1,2GHz-Nehmiah; 160G Samsung + 4x500G Seagate SATA; NEC3500; TT-Case; DVB-S 1.3+4MB + Nova ; gLCD 240x128 ...
    . . .TB rulez. . .

  • Hallo Peter,
    danke fuer die Tipps, probiere ich am WE mal aus (also md in die modules eintragen, checken, dann mal /etc/mdadm/mdadm.conf anlegen, wieder checken, usw....). Aber wo mein Ubuntu 7.10 jetzt das RAID startet ist mir immer noch unklar. Ich such' mal weiter und melde mich wieder.


    Gruss+Danke,
    - berndl

  • Quote

    Original von berndl
    Aber wo mein Ubuntu 7.10 jetzt das RAID startet ist mir immer noch unklar. Ich such' mal weiter und melde mich wieder.


    http://wiki.ubuntuusers.de/Software-RAID?highlight=raid


    Da wird nirgends etwas zugefügt ausser in /etc/fstab.
    Es ist also wahrscheinlich das Ubuntu den bedarf "md" zu laden von selber spürt wenn du ein device /dev/mdX mountest.
    Probiers mal aus ...


    Peter


    EDIT
    Grad mal bei mir geschaut (Debian Sarge).
    Nix mit "md" in der modules.
    Auch bei mir reicht mouten eines mdX drives und alles andere wird automatisch geladen ...

    Mein anderer VDR ist (auch) ein EPIA
    1)VIA M10000-Nehemiah, 160+120G Samsung; NEC 1300A; YY A106; LCD20x4 ...
    2) ctvdr+e-tobi ; C3M266+1,2GHz-Nehmiah; 160G Samsung + 4x500G Seagate SATA; NEC3500; TT-Case; DVB-S 1.3+4MB + Nova ; gLCD 240x128 ...
    . . .TB rulez. . .

    The post was edited 1 time, last by PeterD ().

  • Moin,
    liegt es bei meinem Setup vielleicht daran, dass ich die RAID Partitionen auf den Platten in einer logischen Partition (Typ 'fd') angelegt habe, also als z.B. /dev/hda5?
    Laut mdadm manpage:

    Code
    1. --auto-detect
    2. Request that the kernel starts any auto-detected arrays. This
    3. can only work if md is compiled into the kernel -- not if it is
    4. a module. Arrays can be auto-detected by the kernel if all the
    5. components are in primary MS-DOS partitions with partition type
    6. FD. In-kernel autodetect is not recommended for new installa-
    7. tions. Using mdadm to detect and assemble arrays -- possibly in
    8. an initrd -- is substantially more flexible and should be pre-
    9. ferred.


    Muesste ich da mit fdisk nochmal rangehen? Momentan habe ich noch Platz um das ganze RAID zu verschieben.


    Gruss,
    - berndl

  • Quote

    Original von berndl
    Moin,
    liegt es bei meinem Setup vielleicht daran, dass ich die RAID Partitionen auf den Platten in einer logischen Partition (Typ 'fd') angelegt habe, also als z.B. /dev/hda5?


    Ne meine raid partitionen sind als "linux" (ID 83) drin.


    Also bei mir ist "md" definitiv nicht im kernel sondern ein modul (ctvdr kernel).
    In modules.cof taucht md nur indirekt al registrierung der raid personalities (raid 0, 1, 5...) auf.


    Wie gesagt bei mir reicht ein mount von md0.
    Dazu ist nur in fstab ein eintrag für /dev/md0 auf /raid0.


    Ich denke das hier eher Ubuntu schuld ist.
    Möglicherweise muss da md doch noch irgentwo rein.


    Was passiert den, wenn du einfach versuchts dein raid mit einen "mount" einfach zu starten ?
    Irgendwelche fehlermeldungen oder infos in den logfiles dabei ?
    Poste doch mal deine fstab wie du das da drin hats und wie du's gemountets hast.


    Gruss Peter

    Mein anderer VDR ist (auch) ein EPIA
    1)VIA M10000-Nehemiah, 160+120G Samsung; NEC 1300A; YY A106; LCD20x4 ...
    2) ctvdr+e-tobi ; C3M266+1,2GHz-Nehmiah; 160G Samsung + 4x500G Seagate SATA; NEC3500; TT-Case; DVB-S 1.3+4MB + Nova ; gLCD 240x128 ...
    . . .TB rulez. . .

  • Hallo Peter,
    uff, irgendwas ist bei meiner Installation wohl komisch...


    also: Wenn ich das Ubuntu 8.04 hochfahre, dann von der shell aus 1) 'modprobe md', dann 2) 'mdadm --assemble .......' und dann 3) 'mount .....' mache, dann tut alles.


    Wenn ich nach dem booten (ohne die obigen Kommandos) mal im System schaue, dann existiert /dev/md0 nicht! Wenn ich es mit 'mknod /dev/md0 b 9 0' anlege, eine /etc/mdadm/mdadm.conf erstelle und in /etc/default/mdadm die Variable 'AUTOSTART=true' einfuege, dann tut bei naechsten booten trotzdem nix...


    Ich trage jetzt mal in die /etc/modules die Zeile 'md' ein und hangle mich dann nochmal weiter. Ein 'mdadm --assemble .....' koennte ich doch auch in die /etc/init.d/bootmisc.sh eintragen, oder? Und in die gleiche Datei auch dahinter den mount-Befehl.
    Was denkst du darueber?


    Gruss+Danke fuer deine Geduld,
    - berndl