MDADM RAID5 konfiguráció

 ( Chraze | 2017. április 18., kedd - 13:13 )

Sziasztok!

Debian alatt MDADM szoffveres RAID5 tömböt akarok létrehozni 3 diszkkel.
Ha netán elszállna az egyik vinyó és/vagy újraindulna a gép valami okból kifolyólag, szükség lenne arra, hogy minden lemezen be tudjon bootolni a rendszer. Itt kezdődnek a problémák.

1.
Úgy oldottam meg, hogy csináltam merevlemezenként 2 primary partíciót: /boot és /
Létrehoztam egy tömböt (RAID5) a /boot partícióknak (MD0)
Létrehoztam egy másik tömböt (RAID5) a / partícióknak (MD1)
Na most, ha pl. elszáll egy vinyó (konkrétan el is tűnik) jön a hiba, hogy az MD1 tömbben valami nem oké. Ok, de én nem kapok hibaüzenetet az MD0 tömbből mert az csak egy /boot partíció, és ott nem történik olvasás/írás bootolás óta. Így onnan nem is tudom lecsatolni a lemezt, mert ugyebár használatban van (elméletben)
md1 : active raid5 sda2[3](F) sdb2[2] sdc2[1]
7383040 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]

md0 : active raid5 sda1[3] sdb1[2] sdc1[1]
995328 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

Failed-nek sem tudom nyilvánítani mert nem létezik.
Ráadásul ha új lemez is kerülne be, mert cserére szorulna egy, akkor az új lemezt 2 partícióra szét kell szedni (/boot és /) , aztán hozzáadni a 2 tömbhöz egyesével. Majd egy GRUB-ot rátenni.

2.
Jött a másik megoldás. Itt már csak egy tömbre volt szükség. Hagyjuk a fenébe a /boot partíciót. Csináljunk diszkenként egy primary partíciót és tegyünk rá bootable flaget (a mount point pedig /). Oké, így már egyszerűbb dolgunk van, azon kívül ha meghalna egy diszk és cserélni kéne egy új diszkre. Csak egy GRUB-ot kéne telepíteni az új diszkre.
Itt is hamar gondba ütköztem ugyanis én a lemezt titkosítani akarom. Viszont, nem tudom mert a bootable partíciókat nem lehet, mert nem tudná a(z) boot/uefi olvasni.
Ellenben az 1. opcióval, amit lehet titkosítani, de maga a felvetés gondokba ütközik:
https://pastebin.com/LVkudzJS |A linken lehet látni, hogy egy volume group van és az van titkosítva

Mi lenne az ideális megoldás arra, hogy titkosítva is legyen az adat, és bootolható legyen bármelyik diszkről a rendszer?
Előre is köszi!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

RAID1 a /boot-nak
RAID5 mehet a többi(ek)nek.

Ennyi.

+1, három lábú raid1 is létezik.

Na megcsináltam. Persze 3 diszket is lehet tükörbe tenni, na de itt is van gond. Szintén nem történik írás/olvasás az MD0 tömbön így amikor lecsatolok egy lemezt csak az MD1 tömbön jelzi. Így aktívan üzemel az MD0-n.

Lecsatoltam a diszket (sda):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 3G 0 disk
├─sdb1 8:17 0 487M 0 part
│ └─md0 9:0 0 486.7M 0 raid1 /boot
└─sdb2 8:18 0 2.5G 0 part
└─md1 9:1 0 5G 0 raid5
└─vg0-lv_root 253:0 0 5G 0 lvm
└─vg0-lv_root_crypt 253:1 0 5G 0 crypt /
sdc 8:32 0 3G 0 disk
├─sdc1 8:33 0 487M 0 part
│ └─md0 9:0 0 486.7M 0 raid1 /boot
└─sdc2 8:34 0 2.5G 0 part
└─md1 9:1 0 5G 0 raid5
└─vg0-lv_root 253:0 0 5G 0 lvm
└─vg0-lv_root_crypt 253:1 0 5G 0 crypt /

cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sda2[0](F) sdc2[2] sdb2[1]
5285888 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]

md0 : active raid1 sda1[0] sdc1[2] sdb1[1]
498368 blocks super 1.2 [3/3] [UUU]

Egészen pontosan hogy csatoltad le a diszket?

Jelenleg egy virtuális gépen fut (VirtualBox), és onnan el lehet távolítani. Olyan mintha a diszket kihúznád igazából az áramból.

Erre is van megoldás, rögtön 2 is:
f=/boot/teszt; mkdir $f; sync; rmdir $f
vagy echo check > /sys/block/md0/md/sync_action

Köszi, ez bevált: echo check > /sys/block/md0/md/sync_action

Igazából valami egyszerűbb megoldás nem lehetséges? Én arra gondoltam, hogy fogok 2 pendrive-ot és ezt a kettőt fenntartom csak /boot-nak GRUB-al RAID1-be. Elvégre ezeket csak akkor kell használni, amikor bootolás van, így elromlani nem sűrűn fog elemben egy HDD-vel, amin folyamatosan mennek az adatok. És akkor a / RAID-ben külön 3 diszken.
Hogyan szokták megoldani ezt nagyobb szervereken?

Hardveres raid-del.

--
"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Ahogy előttem írták, szerverben hardveres raid-vezérlővel oldják meg. Én hozzátenném, hogy RAID5 esetén melléraknak egy jól működő mentést is, illetve szokás a polcon hideg, vagy épp a szerverben melegtartalékként elhelyezni egy diszket. Bár ugye 3 diszkes raid5 mellé berakott hot spare helyett a négy diszkből raid6-ot, vagy bátrabbaknak raid10-et is lehet csinálni. Hogy miért? Mert ha a raid5-ből kihal egy diszk, akkor nulla a redundanciád, és ha még egy diszked elfekszik, akkor csak a mentésből tudsz visszaállni. És ez sajnos nem csak akkor igaz, ha három diszket pakolsz raid5-be össze...

Összesen 4 db diszkem van, szóval megoldható. Csak tesztképpen össze szoktam pakolni a dolgokat virtuális gépen. Ahogy elnézem akkor a szoftveres RAID-el nem tudom megcsinálni.

Mért esetleg valaki performanciát hardver RAID <---> mai E3-xxxx, E5-xxxx processzoros gépek szoftver RAID-je esetén?

Hint: I/O műveletek száma. Nem mindegy, hogy egy íráshoz n darabot kell olvasni pluszban, vagy OS részéről elég egy darab írási művelet, és a többit "intézi" a vezérlő. Persze, XOR-t baromi gyorsan tud a CPU számolni, de ha csinálhat helyette más értelmes dolgot :), akkor inkább az értelmes dolgot végezze...

Olvasáskor ép diszkek esetén nincs többlet meló, RAID1 esetén random valamelyik diszkről olvas, RAID5 esetén pedig az (N-1) diszkről (célszerűen a paritást tartalmazót kihagyva) direktben tölti a RAM-ot a DMA kontroller.

Íráskor is sokat segít a DMA kontroller, RAID1 esetén mindkét diszkre ugyanazt a memóriát küldi ki. RAID5 esetén (N-1) szeletre vágva szeletenként másik diszkre. Az N. diszkhez a XOR pedig a mai x86 prociknál kb. 10 GByte/másodperc/procimag tempójú.

Apropó DMA kontroller: https://en.wikipedia.org/wiki/Intel_8237
Érdemes tanulmányozni. Ennek továbbfejlesztettje akár x86, akár ARM akár MIPS rendszerekben, sőt nagyobb mikrovezérlőkben is segít bennünket.

Úgy hallatom kezdenek átállni szoftveres RAID-re mert gyorsabb. Aztán kitudja. De látod ott is valahogy megoldják ezt a hülye boot dolgot. Viccnek találom ha meghal egy diszk beraksz egy újat, azt 2 primary partícióra bontod beteszed a 2 RAID tömbbe aztán teszel még rá egy GRUB-ot is.

btw, csak szerintem elvetélt ördögtől való ötlet az, hogy maga az OS egy saját SSD/HDD/Pendrive/SDcardon ül és mellette majd van az sw raid* tömb ?

Elég, ha a grub, meg a /boot van pendriveon, és akkor még particiók se kellenek a raidhez, egész diszket hozzáadhatod a RAID5-höz. Ráadásul írásra csak kernelfrissítéskor kerül sor, kb. örökélet.

mdraid-del?

Igen. Látott már a világ négy diszket egy diszknyi méretű raid1-ben (mentések mentek/mennek rá, és naponta két diszk ment/megy ki két külső helyszínre), úgyhogy van/lehet értelmes célja is. Anno AIX alatt meg szinte természetes volt, hogy tripla tükröt raktunk az adatok alá (1lp=3pp)

Vmiert abban a hiszemben voltam, h mdraid-del nem mukodik, de valoban OK.

Olyannyira, hogy van is egy ilyenem productionban LVM+softRaid1 3db 1 TB-os diszkkel.

--
Rózsár Gábor (muszashi)

sub

Végül megoldódott.
Csináltam minden diszken egy partíciót, ami Bootable flaget kapott. Létrehoztam egy RAID5 tömböt és csináltam rá 2db volume-ot. Az egyik a /boot Bottable flaggel a másik volume a / encyptionnal.
Mindegyik diszkre GRUB-ot rátettem, majd teszteltem sokféle képen és működik. Mindezt UEFI nélkül, de elvileg azzal is meglehet csinálni csak picit máshogy.