raid5 probléma

Fórumok

Hi!

Még anno 1 éve csináltam egy sw raid5-öt:
mdadm -C -l5 -n4 /dev/md10 /dev/hdi1 /dev/hdj1 /dev/hdk1 missing

Tökéletesen ment. Tegnapig!! :( Elszállt a /dev/hdi1

# mdadm --examine /dev/hdi1
/dev/hdi1:
Magic : a92b4efc
Version : 00.90.03
UUID : aa89fa58:db37e3b7:b0ff28ff:999d91c4
Creation Time : Sun Nov 5 05:50:58 2006
Raid Level : raid5
Device Size : 120053632 (114.49 GiB 122.93 GB)
Array Size : 360160896 (343.48 GiB 368.80 GB)
Raid Devices : 4
Total Devices : 3
Preferred Minor : 10

Update Time : Sun Feb 18 21:04:31 2007
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Checksum : bf52389 - correct
Events : 0.925102

Layout : left-symmetric
Chunk Size : 64K

Number Major Minor RaidDevice State
this 4 56 1 4 spare /dev/hdi1

0 0 0 0 0 removed
1 1 56 65 1 active sync /dev/hdj1
2 2 57 1 2 active sync /dev/hdk1
3 3 0 0 3 faulty removed
4 4 56 1 4 spare /dev/hdi1

Amikor assemble:

# mdadm -A /dev/md10 /dev/hdi1 /dev/hdj1 /dev/hdk1
mdadm: /dev/md10 assembled from 2 drives and 1 spare - not enough to start the array.

hibát kapok, de

# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [faulty]
md10 : inactive hdj1[1] hdi1[4] hdk1[2]
360160896 blocks

Eddig ok. Mivel inactive, elindítom:

# mdadm -R /dev/md10
mdadm: failed to run array /dev/md10: Input/output error

Kernel üzenet erre a parancsra:
raid5: device hdj1 operational as raid disk 1
raid5: device hdk1 operational as raid disk 2
raid5: not enough operational devices for md10 (2/4 failed)
RAID5 conf printout:
--- rd:4 wd:2
disk 1, o:1, dev:hdj1
disk 2, o:1, dev:hdk1
raid5: failed to run raid set md10
md: pers->run() failed ...

Megnéztem, hogy amikor még elindult, akkor ezzel a sorral kezdődött:
raid5: device hdi1 operational as raid disk 0

Nézzük csak meg most:

# cat /proc/mdstat
md10 : inactive hdj1[1] hdi1[4](S) hdk1[2]
360160896 blocks

# mdadm -D /dev/md10
/dev/md10:
Version : 00.90.03
Creation Time : Sun Nov 5 05:50:58 2006
Raid Level : raid5
Device Size : 120053632 (114.49 GiB 122.93 GB)
Raid Devices : 4
Total Devices : 3
Preferred Minor : 10
Persistence : Superblock is persistent

Update Time : Sun Feb 18 21:04:31 2007
State : active, degraded, Not Started
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 64K

UUID : aa89fa58:db37e3b7:b0ff28ff:999d91c4
Events : 0.925102

Number Major Minor RaidDevice State
0 0 0 0 removed
1 56 65 1 active sync /dev/hdj1
2 57 1 2 active sync /dev/hdk1
3 0 0 3 removed

4 56 1 - spare /dev/hdi1

Azt nem értem, hogy miért nem viszi /dev/hdi1 -et disc 0-ának, tehát miért nem indítja el.
Tudom, hogy RAID5 nem biztonságos 3 HDDvel, ismerek mindent ezzel kapcsolatban.
Mivel /dev/hdi1 nem halt meg, szerintem rajta van minden, és mdadm --examine /dev/hd[i,j,k]1 mindenhol azt írja "State: clean", így biztosan működik is mindhárom HDD.

mdadm -nak kéne megmondani, hogy /dev/hdi1 nem spare disc, hanem a tömb disc 0 eleme. Hogy bírom rá erre?

# cat /sys/block/md10/md/dev-hdi1/state
spare
# cat /sys/block/md10/md/dev-hdj1/state
in_sync
# cat /sys/block/md10/md/dev-hdk1/state
in_sync

Nézegettem sysfs-t is, de ezenkívül nem találtam semmit. Írni pedig nem tudom:

# echo "in_sync" > /sys/block/md10/md/dev-hdi1/state
-bash: echo: write error: Invalid argument

Várom az ötleteket.

Hozzászólások

Itt az eb elhantolva: "/dev/hdi1 /dev/hdj1 /dev/hdk1 missing" szerintem... Amikor megcsináltad, már hiányzott belőle egy diszk, és eddig degraded módban ment a cucc, most meg mégegy diszked elpatkolt, ami az álmoskönyv szerint nagyon rossz ómen...

De nem patkolt el!

Ezt kaptam tegnap, amikor /dev/md10 elszállt:
Feb 18 20:58:06 obiserver kernel: hdi: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Feb 18 20:58:06 obiserver kernel: hdi: dma_intr: error=0x40 { UncorrectableError }, LBAsect=1484481, sector=1484479
Feb 18 20:58:06 obiserver kernel: ide: failed opcode was: unknown
Feb 18 20:58:06 obiserver kernel: end_request: I/O error, dev hdi, sector 1484479
Feb 18 20:58:06 obiserver kernel: raid5:md10: read error not correctable (sector 1484416 on hdi1).
Feb 18 20:58:06 obiserver kernel: raid5: Disk failure on hdi1, disabling device. Operation continuing on 2 devices
Feb 18 20:58:06 obiserver kernel: RAID5 conf printout:
Feb 18 20:58:06 obiserver kernel: --- rd:4 wd:2
Feb 18 20:58:06 obiserver kernel: disk 0, o:0, dev:hdi1
Feb 18 20:58:06 obiserver kernel: disk 1, o:1, dev:hdj1
Feb 18 20:58:06 obiserver kernel: disk 2, o:1, dev:hdk1
Feb 18 20:58:06 obiserver kernel: RAID5 conf printout:
Feb 18 20:58:06 obiserver kernel: --- rd:4 wd:2
Feb 18 20:58:06 obiserver kernel: disk 1, o:1, dev:hdj1
Feb 18 20:58:06 obiserver kernel: disk 2, o:1, dev:hdk1
Feb 18 20:58:07 obiserver kernel: Buffer I/O error on device md10, logical block 4474
Feb 18 20:58:07 obiserver kernel: lost page write due to I/O error on md10
Feb 18 20:58:07 obiserver kernel: Aborting journal on device md10.
Feb 18 20:58:10 obiserver kernel: ext3_abort called.
Feb 18 20:58:10 obiserver kernel: EXT3-fs error (device md10): ext3_journal_start_sb: Detected aborted journal
Feb 18 20:58:10 obiserver kernel: Remounting filesystem read-only

Az elszálláskor azonnal tiltotta md-t, és read-only -be helyezte.
Tehát nem szállhatott el!

Ha igy hoztad letre, hogy


mdadm --create /dev/mdXX -n 4 -l 5 /dev/hd{pqr}1 missing

majd ezutan nem adta'l hozza' meg egy diszket, pl valahogy igy:


mdadm --manage /dev/mdXX --add /dev/hds1 

e's mindemellett elsza'llt az egyik (hdp1), akkor ... akkor ennek reszeltek. Probalj meg dd-vel csinalni egy dump-ot az elszallt diszkrol, conv=sync,noerror-ral, majd loopback-kent rakd osssze ujra a raid-et, vagy valami hasonlo ekviv megoldast, megmielott jobban elganyolodik a rendszer...

A.

mdadm --assemble --force /dev/md10 -> ujraepiti, ha tobb lemez kiesett de nem rosszak

Nem... Ha kezdetben UUU_ volt, azaz a tömbből eleve hiányzott egy diszk, akkor -- ahogy már többször elhangzott -- a tömb tartalma megy a levesbe. Szerencsével persze vissza lehet vakarni az adatok egy részét, de... mélylélektani elemzés alá kéne vonni erősen a diszkek tartalmát, a Linuxos soft-raid működésének alapos ismeretével (mit csinál, ha degraded módban fut a raid5 tömb, hogyan osztja a blokkokat, hova tesz, illetve tesz-e valahova checksum-blokkot, ha igen, azt hogyan számolja, etc.)

Na akkor most tisztázok mindent egyszerre:
- adott egy RAID5 eleve 4 helyett 3 HDD-vel.
- 1 éve megy, eddig kétszer állt le valamelyik hdd olvasási/írási hibája miatt, de mivel azonnal letiltja ext3 fs-t (read onlyba), így sosem volt gond a visszaállítás
- most viszont gond van, mert
# mdadm --examine /dev/hdi1
azt hozza vissza, hogy:
Number Major Minor RaidDevice State
this 4 56 1 4 spare /dev/hdi1

0 0 0 0 0 removed
1 1 56 65 1 active sync /dev/hdj1
2 2 57 1 2 active sync /dev/hdk1
3 3 0 0 3 faulty removed
4 4 56 1 4 spare /dev/hdi1

/dev/hdi1 itt a RaidDevice = 4 -ként szerepel.
Ezt mutatja mdstat is!
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [faulty]
md10 : inactive hdj1[1] hdi1[4] hdk1[2]
360160896 blocks

A /dev/hdi1 azonban teljesen korrekt adatokat tartalmaz, ebben biztos vagyok!
Azt kellene megoldani, hogy így nézzen ki az mdstat:

md10 : inactive hdi1[0] hdj1[1] hdk1[2]
360160896 blocks

Így volt eddig is, és a RaidDevice = 0 adatai vannak hdi1-en!

A témát azt hiszem lezárhatom!

A feltételezésem igaznak bizonyult, de nem vágok az elejébe!!!

Kiadtam, hogy:
# mdadm --create /dev/md10 --level 5 --raid-devices 4 /dev/hdi1 /dev/hdj1 /dev/hdk1 /dev/hdl1

(Mivel meguntam a banánt, és szereztem bele még egy ugyanolyan HDD-t = hdl, így már rendes raid5öm van!)

Létre is hozta sikeresen /dev/md10 -et.

Gondoltam, NEM nyomok neki azonnal mkfs-t, hanem mountolom. És lássatok csodát, megy!!!!

Az ok:
Mivel egyik HDD sem sérült, és ugyanúgy hoztam létre, mint ahogyan 1 évvel ezelőtt, az MD újraépíti a RAID5-öt, de ugyanúgy, mint ahogyan akkor, 1 éve tette.
Ezáltal elvileg minden paritás ugyanott van, mint eddig. Tehát formáznom sem kellett! :)
Mount, aztán megy! :D

Nagyon örülök!

Köszönöm mindenkinek, aki fáradozott a témával!!

OBi

Most viszont csinálj egy mentést, kreáld újra az egészet, és töltsd vissza a cuccot, hogy rendesen legyenek a dolgok (most a régi adatblokkok/paritások csak az első három diszken vannak szétszórva, az új diszkre meg csak az új blokkok/paritások kerülnek. Szerintem... (Nem hinném, hogy a teljes tömböt átszervezi a kernel...)

Hali!

Bocsi a tudatlanságomért, de a RAID 5 -höz nem elég 3 HDD?
Köszi
béla