rebuild RAID-1

Dd,
používám na files-serveru RAID-1, který není vytvořen čistokrevným řadičem ale je vytvořen jen softwarově s podporou RAID přímo v bios. Po výměně disku mi před zavaděčem ukazuje bios tabulku status RAID která mi ukazuje status-REBUILD s poznámkou, že rebuild musím provest v systému. Mohu se zeptat jak tohle provést ve Fedoře 12. Tím že to není software raid vytvořený při instalaci nemohu použít balíky pro tyto účely vytvořené.

Předem díky …

Podle me je chyba vytvaret raid biosem. Kdysi jsem tu o raidu uz neco nekomu psal… jmenuje se to fakeraid.

Zkus co ti vypise
dmraid -r
dmraid -s

pote muzes zkusit
dmraid -R isw_ /dev/sdX
kde X nahrad diskem ktery neni v raidu, jmeno zjistis z predchozich vypisu. Utilitu dmraid normalne dosintaluj.

Hmm … tak jsem to asi celé shodil. Data tedy přečtu ale už mám jen jeden disk. Potřebuji nahodit ten druhý ale nevím co to udělá. V biosu jsem jeden disk vyhodil z pole. U druhého mi BIOS píše že pole neexistuje, což je logické. Teď ale nevím jestli mohu přidat ten prázdný disk do pole přímo v bios a nebo v systému pomocí nastrojů ? Nevím jestli nepříjdu o data ?


dmraid -s

*** Group superset isw_gijfbjcii
--> *Inconsistent* Active Subset
name   : isw_gijfbjcii_raid1
size   : 488395776
stride : 256
type   : mirror
status : inconsistent
subsets: 0
devs   : 1
spares : 0


dmraid -r

/dev/sda: isw, "isw_gijfbjcii", GROUP, ok, 488397166 sectors, data@ 0


fdisk -l

Disk /dev/hdb: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylindry of 16065 * 512 = 8225280 bytes

Zařízení Boot      Start         End      Blocks   Id  System
/dev/hdb1   *           1          25      200781   83  Linux
/dev/hdb2              26         280     2048287+  82  Linux swap / Solaris
/dev/hdb3             281        9729    75899092+  83  Linux

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylindry of 16065 * 512 = 8225280 bytes

Zařízení Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       30401   244196001   83  Linux

Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylindry of 16065 * 512 = 8225280 bytes

Zařízení Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1       30401   244196001   83  Linux


Je vůbec ještě cesta jak to nahodit zpět ?? Mohl bych ty data ješte přesunout a to pole vytvořit znovu ale radeji bych chtěl pochopit problematiku a naučit se to opravit. Tento fakeraid není to pravé ořechové to vím ale ty data nemají cenu HW řadiče takže díky za pochopení.

Předem díky …

Pokud nevim tak zalohuju. Ja to take nevim a nechci mit tvoje data na svedomi.
Osobne jsem si myslel ze to k tomuto povede. Mirror RAID by mel jit vytvorit i z jednoho disku, pridanim druheho, nejdriv bych to zkusil v Linuxu, protoze jeho chovani bych predpokladal ponekud inteligentnejsi nez bios. Ale jak rikam - nedelal bych to bez zalohy!

Musím to upřesnit. Data mám samozřejmě zalohovaná na magnetické pásce, jinak bych se do toho nepouštěl. Také jsem zapomněl napsat, že celou situaci jsem vyvolal uměle, zkratka ručně jsem nasimuloval pád disku tak, že jsem ho odpojil za běhu pak naformátoval a následně jsem ho tam chtěl vložit jako nový disk a obnovit. Vše bylo v pořadku jen ten bios mi psal že je potřeba udělat ten rebuild v systemu. Do té doby jsme si myslel, že po vložení systemu se o synchronizaci pole postará sám fakeraid desky ale tak to nebylo. Je to dobrá zkušenost. Tohle vše jsem dělal proto abych nebyl překvapený až se to opravdu stane a čekat 5 let než mi třeba zkolabuje hard jsem nechtěl :-D.

Také nevím jak souvisí dmraid s bios. Měl jsem za to že bios ovládá raid nad systémem tedy asi tak jako že sám si řeší konzistenci pole, synchronizaci atp. Můžete mi více vysvětlit jak tohle vše ovlivňuje balik “dmraid”.

Předem díky

Google jiste prozradi vic nez vim ja:
Napr. Linuxovy SW RAID vs. BIOS FakeRAID: http://wiki.slfree.net/index.php/Linux_SW_RAID

Ve zkratce: Linuxova verze softwaroveho raidu se ovlada prikazy mdadm, BIOSova verze SW RAIDu se ovlada prikazy dmraid - pokud linux umi ovladat dany typ BIOSoveho pole, coz neni vzdy pravda. BIOS vetsinou zadny RAID skutecne neovlada, bios pouze vytvari virtualni zarizeni, ktere se tvari jako jeden disk, ale jsou to dva. Protoze to je FakeRAID linux vidi normalne disky oba, ale vytvari /dev/mapper zarizeni odpovidajici FakeRAIDovemu zarizeni. RAID v podstate neni nic jineho nez urcita struktura dat na disku navic. V pripadi bios raidu tuto strukturu urcuje bios. Pokud se pole rozpadne, disk podle me do FakeRAIDu musi pridat vicemene BIOS nebo dmraid skrz prikazy BIOSu. Pokud samotny BIOS neumi pole pote sesynchronizovat (coz je trochu narocnejsi operace) prehodi tuto funkci na OS. V zasade se ale nejedna o nic jineho nez za behu, kdyz neni disk vytezovan, zkopirovat obsah puvodniho disku na ten nove pridany (v pripade mirroru samozrjeme), ovsem pokud by to delal bios sam, pravdepodobne by to nebyl schopen delat behem normalni prace OS.

Z toho me tak trochu vyplývá to, že je výhodnější vytvořit raději software raid linuxem než biosem. Je to tak ?? Jeste mě zarazila jedna věc. Pokud jsem odpojil oba disky z pole a na třetím 80GB mám nainstalovaný systém, který je nezavislý na RAID, tak me system vubec nenaběhl. Zavaděč se ale spustil a píše mi že musí opravit souborový systém. Pokud ten jeden disk v RAID 1 zase připojím naběhne to jak má. Co je příčinou toho že system po odpojení “jakoby” nepodstatných disků nenaběhne ?? Je snad potřeba upravit inittab nebo grub ??

Díky

PS: jinak ten popis na wiki.slfree.net je supr …

Problém je vyřešen :-D. Přemigroval jsem data na Soft RAID Linuxu a vše šlape jako švícary. Pro ty co to ještě neudělali a chtěli by, zde uvedu stručný popis jak jsem to provedl se dvěma disky 250GB (sda, sdb) - vytvářel jsem pole typu raid-1, stejným způsobem lze provest i pole “linear, raid0 aj.”:

  1. Pomocí nástroje “cfdisk” jsem vytvořil na disku “sda” i “sdb” nové partition s id-FD (linux raid autodetect) - tato volba zapíše perzistentní superbloky na každý disk v poli. Díky tomu je systém schopen načíst informace o poli přímo z disku při bootování a nepotřebuje soubor /etc/raidtab.

  2. Pomocí nástroje “mdadm” jak napověděl Covex jsem pak vytvořil diskové pole “md0”

 mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1 
  1. Následně se v souboru “mdstat” vytvoří údaje o aktivním poli které se dají prohlednout:
 cat /proc/mdstat 
  1. Na zařízení /dev/md0 jsem vytvořil souborový systém ext2, protože nepotřebuji žurnál.
 mkfs.ext2 /dev/md0 

Pozn. U raid-0 je dobré upravit velikost bloku z důvodu výkonu. Četl jsem o tom v literatuře Linux - dokumentační projekt. Ze které jsem mimo jiné také vycházel při sestavovaní soft RAID.

  1. Tím je diskové pole zcela funkční a pokud je potřeba automatické připojení po startu do nějakého adresáře pak se ještě musí provést zápis do /etc/fstab takto:
 /dev/md0        /data     ext2     defaults    1 2 

Nebo ručně:

 mount /dev/md0 /data 
  1. Nějaké nástroje pro práci se soft-RAID zde uvedu a později doplním pro úplnost jen to důležité.

vypíše detailní informace o zařízení i stav synchronizace v procentech pokud ji zrovna provádí

 mdadm --detail /dev/md0 

A problem s tim vyndanim obou disku pretrvava i s Linuxovym RAIDem? Mimochodem - jak se ma upravit ta velikost bloku?

covex napsal(a):

A problem s tim vyndanim obou disku pretrvava i s Linuxovym RAIDem?

Problém s bootováním opravdu byl ale jen v tom, že při odpojení obou disku se po restartu při kontrole souborového systému zařízení definovaných v “fstab” start systému zastavil právě u této kontroly a nepustil mě dál. Původně jsem si myslel, že mám zavaděč nainstalovaný v MBR raidu ale to by se grub vubec nespustil a zkončilo by to hned na začátku. Po chvilce přemýšlení mě napadlo dat komentář v řádku pro připojení raidu v “fstab”. Pak bylo již po problému a systém standardně naběhl.

Mimochodem - jak se ma upravit ta velikost bloku?

Četl jsem o tom v dokumentačním projektu. Jedná se o parametr “chunk-size”, default je 64k. U RAID-1 nemá velikost bloku žadný efekt ale u RAID-0 ano. Optimální nastavení velikosti zapisovacího proužku ovlivňuje celkové složení pole (počet disků a dle mého i účel použití).

Upravuje se parametrem např. --chunk=128

Ted nevím jestli si to dobře pamatuji ale myslím, že bude asi důležíté neformátovat pole s parametry velikosti bloku např. mkfs.ext3 -b 128 /dev/md0

Zde jsou nějaké další nástroje pro “mdadm” / zdroj - LINUX Dokumentační projekt

1) Monitoring pole zasíláním emailu v případě výpadku disku:

Nejprve je třeba do souboru mdadm.conf vložit uuid pole a adresu kam poslat email v případě pádu:

mdadm --examine --scan >> /etc/mdadm.conf
echo "MAILADDR root@localhost" >> /etc/mdadm.conf

Pak už jen spustit démona mdadm.


/etc/init.d/mdadm start

V případě výpadku Vám pak příjde takovýto email:

[i]
----- Original Message -----
From: mdadm monitoring
To: root@localhost
Sent: Tuesday, August 17, 2010 7:33 PM
Subject: Fail event on /dev/md0:xxxx.server

This is an automatically generated mail message from mdadm
running on xxxx.server

A Fail event had been detected on md device /dev/md0.

It could be related to component device /dev/sdb1.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [raid1]
md0 : active raid1 sdb12 sda1[0]
244195904 blocks [2/1] [U_]

unused devices:
[/i]

2) Výměna vadného disku za běhu (neplatí pro IDE):


mdadm --manage --set-faulty /dev/md(x) /dev/sd(x)  # označí disk jako vadný
mdadm /dev/md(x) -r /dev/sd(x)                     # vyjme disk z pole
mdadm /dev/md(x) -a /dev/sd(x)                     # vloží nový disk do pole