raid1 na mdk 9.2

Jan Houstek houstek na utf.mff.cuni.cz
Úterý Únor 17 01:14:58 CET 2004


On Mon, 16 Feb 2004, Martin Pesler wrote:

> chodi nekomu sw raid na vyse zminene distribuci? Ale kompletni kopie
> celeho disku, nejen jedne partisny.
>
> Je to mozne rozbehnout nebo se snazim o nemozne. Pokud je ale sw (ten
> raid1), tak asi o nemozne, protoze minimalne lilo musi byt na jednom
> disku a potom teprve nacist ovladace pro SW raid, ze?

Predne raid1 neni "ten raid1", ale proste typ raidu. Jak linuxovy SW raid,
tak jakykoliv jiny raid muze byt ruznych typu, bezne znacenych
0 (stripping), 1 (mirroring), 0+1, 1+0 ci 10 (kombinace predchozich),
4,5,6 (sofistikovanejsi typy s kompromisem mezi vykonem, kapacitou a mirou
redundance).

Lilu je uplne jedno, ze je na mirrorovane partition. Krom toho, ze lilo
podporu pro bootovani z linuxoveho raid1 ma, tak i kdyby nemelo, dalo by
se to spachat rucne tak, ze lilo presvedcite, ze /dev/mdX je ve
skutecnosti /dev/hdaY (tak se to ostatne delalo pred pridanim te podpory
pro raid1).

Problem ktery vas asi trapi bude v tom, ze pokud chcete mit root partition
na raid1, tak narazite na kernel MDK, ktery ma raid1 jako modul. Ten je
treba predhodit kernelu pres initrd, jenze i tak je s tim nejaky problem
(pokud jsem to dobre pochopil tak asi v tom, ze nefunguje autodetekce
raidovych partitions, cili byste v ramci toho initrd musel ty raidy navic
manualne nastartovat). Osobne tohle resim tak, ze si do kernelu podporu
raid1 zkompiluju staticky spolu s filesystemem pouzitym na root oddilu a
initrd nepouzivam vubec.

K tomu pozadavku mit mirrorovany cely disk - jedna moznost je mit vse na
root partition. To asi nelze prilis doporucit, ale ve specialnich
pripadech by to nemuselo vadit.

Druha moznost (bezne pouzivana) je rozdelit vsechny disky stejne na
partitions a ty odpovidajici pak spojit do mirroru, napr. takto:

hh na enigma:~$ cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md1 : active raid1 sdb1[1] sda1[0]
      1951744 blocks [2/2] [UU]

md2 : active raid1 sdb2[1] sda2[0]
      15623104 blocks [2/2] [UU]

md3 : active raid1 sdb3[1] sda3[0]
      16603072 blocks [2/2] [UU]

unused devices: <none>


Diskutabilni byva pouziti raid1 na swap. Potencialni selhani disku, pred
kterym ma raid1 chranit, je pro swap jiste fatalni, na druhou stranu se
ale system se swapem na sw raid1 muze dostat do nekonecne smycky. V
okamziku, kdy dojde pamet a kernel bude chtit nejakou stranku odlozit na
swap, muze na tuto operaci raid1 chtit alokovat dalsi pamet a je
vymalovano. Osobne povazuju prvni riziko za podstatne mene akutni nez
druhe.

Nicmene zpet k tematu - treti moznost je nechat opravdu mirrorovat cely
disk do jednoho /dev/mdX zarizeni a to nasledne nejakym zpusobem rozdelit.
Bohuzel AFAIK to nejde klasicky pres partition table, hlavne asi z toho
duvodu, ze neni moc jasne, jaka major/minor cisla by mely vznikle
partitions mit (tohle by mozna mohl nejak resit udev). Melo by to jit
rozdelit prostredky LVM, to by ovsem zase vyzadovalo bootovat pres initrd,
navic velmi specificky prizpusobeny (pochybuju, ze je na to nejaka
distribuce pripravena).

Podtrzeno a secteno, realne pripadaji v uvahu asi nasledujici moznosti:

1) poridit si HW raid

2) poridit si kvalitni maly SCSI disk, na nej dat system a swap a zbytek
   vesele sw mirrorovat treba na velkych levnych IDE discich

3) rozdelit oba (ci vice) disku stejne, vyrobit prislusne mirrory, swap
   dat na nemirrorovanou parition (nebo jiny disk) a doufat, ze az neco
   odejde, tak to neodnese zrovna swap

S pozdravem,

-- Honza Houstek


Další informace o konferenci Linux