Softwarovy RAID a LVM
Document Sample


hardware
Softwarový
RAID a LVM
Piotr Wolny
S
tále více našich počítačů je vyba- rámeček Úrovně RAID. Obecně RAID
veno více než jedním pevným umožňuje:
diskem. Obvykle na nich
vytváříme několik oddílů, pro- • zvětšení bezpečnosti dat, pokud
tože GNU/Linux nám umožňuje připojo- využíváme „nadbytečné” disky (bez
vání různých částí souborového systému nadbytečných disků je náš RAID více
(např. /usr nebo /home) z nezávislých náchylný k havárii než samostatné
zařízení. Tím ale nekončí možnosti využití disky);
pevných disků v GNU/Linuxu. Již dlouho • rychlost čtení a zápisu dat se zvy-
tento systém podporuje dva pokroči- šuje, pokud použijeme stripping na
lé mechanismy ukládání dat: Softwa- dva nebo více nezávislých fyzických
rový RAID a Logical Volume Manager. zařízení;
S jejich použitím můžeme zvětšit výkon- • spojení několika nezávislých zaříze-
nost disků, a také zvýšit bezpečnost ulo- ní v jeden souborový systém může
žených dat. I když se Softwarový RAID zvětšit pohodlí při administraci
a Logical Volume Manager (LVM) často systému na určitých konfiguracích.
spojují s velkými servery vybavenými
desítkami disků, s úspěchem je můžeme Pamatujme však na to, že RAID má jisté
použít také v domácích počítačích vyba- hranice:
vených dvěma či třemi pevnými disky.
Navíc je LVM užitečný i při použití • jednou vytvořené zařízení RAID
s jedním diskem. nemůže být rozděleno na oddíly, což
RAID a LVM
Historicky je starším zařízením softwaro-
vý RAID. Idea Redundant Arrays of Ine-
xpensive Disks není tak stará, protože
pochází z roku 1987. Tehdy byla vypra-
cována koncepce spojení mnoha levných
disků v jedno velké a rychlé zařízení. Aby
havárie jednoho z nich nezpůsobila ztrátu
dat na celé matrici, byl v koncepci použit
„nadbytečný” disk (anglicky redun-
dant) nezbytný pro rekonstrukci dat
v případě havárie. Tradiční RAID se
DVD vytváří hardwarově, nejčastěji spoje-
Po spuštění Linux+ Live DVD
je možno otestovat probíranou
ním SCSI disků, které jsou po připojení
problematiku. k počítači viditelné jako jedno zařízení.
GNU/Linux nám umožňuje vybudování
Na DVD disku RAID softwarovým spojením do pole
Obrázek 1. V GNU/Linuxu můžeme disky
Na DVD disku se nachází a mohou to být zároveň zařízení SCSI,
různého typu spojovat do jednoho zařízení
programy popisované v článku. IDE stejně jako SATA. Pro informace o
RAID nebo LVM
různých typech RAID polí si přečtěte
54 leden 1/2005
softwarový raid a logical volume manager hardware
občas způsobuje potřebu konfiguro- • rozdělení (anglicky stripping) dat na
vání několika RAID zároveň; dvě nebo více nezávislých zařízení
RAID a LVM při instalaci
• jednou vytvořený RAID nemůže být pro zvětšení výkonu; distribuce
rozšířen o více disků. • funkci zjednodušující pořizování bez- Instalátory většiny moderních distribucích
umožňují vytvoření zařízení RAID a LVM
pečnostních záloh (snapshot).
již při instalaci GNU/Linuxu. Například
Díky RAID, co počítač vidí jako jedno
v Aurox Linuxu postačí, pokud vybere-
blokové zařízení, může být ve skutečnosti Vadou linuxového LVM je chybějící pod- me volbu Ruční vytvoření oddílů, pomocí
kombinace několika oddílů na různých pora “nadbytečných” disků, ale můžeme programu Disk Druid budeme moci
pevných discích. Logical Volume Mana- jej propojit se softwarovým RAID-1 pro vytvořit RAID, LVM či dokonce LVM na
ger jde o mnoho dále. Jím zpřístupněné dodatečnou bezpečnost. RAID. V novějších verzích Mandrake-
blokové zařízení se může fyzicky linuxu musíme vybrat ruční rozdělení
nacházet na libovolném množství disků Vytváříme softwarový na oddíly a později se navíc ještě přep-
nebo oddílů ale je umožněno jejich RAID nout do rozšířeného módu. Instalátor
zvětšování, zmenšování nebo přená- Softwarový RAID můžeme založit na nej- této distribuce má podobné možnosti,
šení. Funguje to tak, jakoby jedna tabul- méně dvou libovolných oddílech. Aby to ale vypadá to tak, že neumožňuje vytvo-
ření LVM na RAID.
ka rozdělení obsahovala nejenom několik celé mělo nějaký smysl, měly by se oddíly
Pokud víme jak fungují zařízení RAID
disků, ale také umožňovala přidávání/ nacházet na samostatných discích. Vytvo-
a LVM, jejich vytvoření s pomocí někte-
odstraňování, zvětšování/zmenšování od- ření RAID na dvou oddílech jednoho rého z těchto instalátorů by nemělo činit
dílů bez jakékoliv přestávky při fungo- disku nezvětší bezpečnost dat ani nezry- žádné problémy. Například abychom
vání systému – často také bez odpojení chlí diskové operace. Do jednoho RAID vytvořili RAID v Aurox Linuxu, klikne-
oddílů. Možné je také přidávání dalších pole můžeme spojit oddíly z úplně odli- me na RAID, vybereme první z disků
disků. Shrneme-li to, díky LVM dosta- šných disků např. IDE, SCSI nebo SATA a označíme Vytvořit oddíl softwarového
neme: ale zpravidla bude tento hybrid pracovat RAID. Následně to stejné opakujeme
rychlostí nejpomalejšího z nich. Pokud pro další disky. Nakonec ještě jednou
• celkovou svobodu v přidělování fyzic- chceme spojit dva IDE disky, měly by klikneme na RAID a vybereme Vytvořit
kých disků nebo oddílů jako bloko- se nacházet na různých IDE kanálech, zařízení RAID. Pak budeme moci zadat
jeho typ, bod připojení a systém soubo-
vých zařízení v systému (např. zaříze- pokud budou připojeny jedním kabelem,
rů, který na něm bude vytvořen. LVM
ní připojené jako /home se může zpozorujeme výrazný pokles výkonu.
vytváříme podobně – nejdříve vytvoříme
skládat z jednoho IDE disku a polovi- Softwarový RAID je realizován přímo jeden nebo několik oddílů typu physical
ny SCSI disku); jádrem systému. Jádro musí obsaho- volume LVM a později klikneme na LVM
• možnost jednoduchého zvětšování a vat podporu pro RAID. Při konfiguraci a vytvoříme příslušné logické svazky.
zmenšování (pokud to systém soubo- jádra, v části Multi-device support (RAID Mé zkušenosti s tvořením RAID
rů umožňuje) zařízení viděných ope- and LVM), musíme označit RAID support a LVM s těmito instalátory distribu-
račním systémem a jejich přenášení a požadované módy RAID pole (můžeme cí nejsou dobré. Doporučuji instalaci na
mezi disky (to zahrnuje také možnost označit všechny). Nejlepší je zkompilo- tradiční zařízení a teprve později vytvo-
jednoduchého přidávání a odebírání vat do jádra podporu RAID pole natrva- ření RAID nebo LVM a následný přenos
disků do systému); lo. Nemusíme také sami kompilovat jádro příslušných adresářů.
a můžeme se spolehnout to dodávané
s distribucí. Většina novějších distribucí
najdeme moduly linear, raid0, raid5 atd.,
nutné pro práci pole. Stačí použít příkaz
cat /proc/mdstat a zjistíte, zda to vaše
obsahuje podporu pro softwarový RAID.
Pokud se zobrazí hlášení o chybějícím
souboru, musíme si jádro nakonfigurovat
a zkompilovat sami.
Softwarový RAID je v jádře GNU/
Linuxu již dlouhou dobu – je stan-
dardně přítomna v jádrech série 2.4.x
a 2.6.x, ale existují také možnost použití
s jádry 2.2.x a dokonce i 2.0.x. Všechny
zde popisované činnosti jsem prováděl
na jádře 2.6.9, měli by vypadat identic-
ky i ve starších verzích jádra zahrnujíc
v to sérii 2.4.x.
Mimo podpory v jádře systému
budeme potřebovat ještě dva balíčky:
Obrázek 2. Ovladače RAID a LVM najdeme v linuxovém jádře
mdadm a raidtools (v Debianu – raid-
www.lpmagazine.org 55
hardware
tools2). Ten první obsahuje nástro- Při využití souborového systému ext3 při zápisu do pole (není možno jedno-
je pro aktivování a zastavování RAID vzrostl čas potřebný na vykonání této značně říci, jaká hodnota zajistí nejlepší
zařízení a druhý přidává základní operace narostl na 32,8 sekundy. výkon, ale zjednodušeně můžeme říci,
nástroje pro tvorbu polí. Tyto balíčky že bude rovna block size našeho soubo-
najdete ve všech populárních linuxo- RAID-0 rového systému). Dále vyjmenováváme
vých distribucích. Nejdříve vyzkoušíme RAID-0. Abychom a číslujeme použité oddíly.
Řekněme, že náš operační systém jej vytvořili, musíme vytvořit soubor /etc/ Dalším krokem je změna identifikáto-
je nainstalován na disku sda a na RAID raidtab. Nejdříve do něj zapíšeme násle- rů oddílů s užitím programu fdisk, na
chceme využít IDE disky: hda a hdd. dující řádky: kterých bude pole pracovat. Měli by být
Na obou discích jsme vytvořili oddíl, typu fd, čili Linux raid auto. Bez tohoto
přičemž na RAID mají být určeny raiddev /dev/md0 úkonu bude pole pracovat, ale nebude
hda2 a hdd2. Předtím než začneme raid-level 0 automaticky detekováno jádrem systému.
vlastní nastavování, můžeme si otesto- nr-raid-disks 2 Když máme všechno hotovo, spu-
vat rychlost těchto disků před tím, než persistent-superblock 1 stíme příkaz mkraid /dev/md0. Samozřej-
z nich uděláme pole. Jak dobře otesto- chunk-size 4 mě, že jeho spuštěním přijdeme o všech-
vat výkonnost disků s využitím pro- device /dev/hda2 na data, která jsme měli na oddílech vyj-
gramu Bonnie++, popisuji v rámečku raid-disk 0 menovaných v /etc/raidtab. Jako výsledek
Jak testovat disky? Při návrhu systému, device /dev/hdd2 bychom měli obdržet něco takového:
ve kterém hraje důležitou roli výkon- raid-disk 1
nost disků, je dobré se řídit doporuče- handling MD device /dev/md0
ními programu Bonnie++ nebo podob- Jak je vidět, soubor není komplikovaný. analyzing super-block
ného. V tomto článku, abych rychle a První řádek popisuje, kterého zařízení se disk 0: /dev/hda2, 14659312kB,
názorně ukázal rozdíly mezi konfi- tato konfigurace týká. Za md0 můžeme raid superblock at 14659200kB
guracemi RAID využiji program dd. mít libovolné množství jiných zaříze- disk 1: /dev/hdd2, 18922680kB,
Například po vytvoření oddílu hda2 ní (samozřejmě by se měly nacházet na raid superblock at 18922560kB
souborového systému ext2, jeho připo- jiných oddílech). Volbou raid-level nasta-
jení na /mnt/test/ jsem spustil příkaz: vujeme typ pole, v tomto případě RAID-0 Jak vidíme, mimo to, že se oddíly liší
cd /mnt/test; dd if=/dev/zero of= vy- čili stripe. V nr-raid-disk zadáváme kolik velikostí, bylo pole vytvořeno. Teď si jej
maz_ mne count=2000000. Jako výsledek oddílů má fungovat v tomto zařízení; per- můžeme prohlédnout pomocí příkazu
jsem obdržel následující rychlost line- sistent-superblock způsobí, že v superblo- cat /proc/mdstat. Měli bychom spatřit
árního zápisu jednoho velkého soubo- cích zadaných později budou zapsány například něco takového:
ru: informace potřebné pro automatické roz-
poznání pole při spouštění jádra systému; Personalities : [linear] [raid0]
1024000000 bytes transferred chunk-size nastavuje na jaké nejmenší [raid1] [raid5] [raid6] [raid10]
in 28,490542 seconds (35941752 bytes/sec) jednotky v kilobajtech budou dělena data md0 : active raid0 hdd2[1] hda2[0]
33581760 blocks 4k chunks
unused devices: <none>
Od této chvíle pracujeme se zařízením
/dev/md0 jako s oddílem pevného disku.
Můžeme např. použít příkazy:
# mkfs.ext3 /dev/md0
# mount /dev/md0 /mnt/test/
# cd /mnt/test/
# dd if=/dev/zero of=vymaz_mne count=2000000
Na mém systému tento rychlý test zobrazil:
1024000000 bytes transferred
in 18,410448 seconds (55620591 bytes/sec)
Vidíme skoro dvojnásobný nárůst
rychlosti zápisu tohoto souboru (z 32,8
na 18,4 sekundy). Podobné pole vytvořené
v mém počítači na discích SATA si se
zápisem poradilo za 14 sekund.
Obrázek 3. Všechny potřebné informace pro vytvoření RAID a LVM můžeme nalézt
Tímto způsobem jsme získali zaříze-
v angličtině v příslušných HOWTO
ní, které by mělo fungovat značně rychle-
56 leden 1/2005
softwarový raid a logical volume manager hardware
ji než samostatný disk, jak při operacích deaktivovat předchozí. Prvním krokem
čtení tak při zápisu. Můžeme jej připojit je odpojení souborových systémů v poli Integrace RAID/LVM se
v libovolném místě systému souborů, ve (např. umount /var/www). Následně prove- systémem
kterém se objevuje intenzivní používání deme příkaz raidstop /dev/md0. Teprve To, kam připojíme vzniklá zařízení, závisí
disků např. v /var/www. Stačí pouze patři- teď můžeme změnit nastavení oddílů na způsobu, jakým nám bylo pomáháno
s konfigurací LVM nebo RAID, stejně
čný zápis do /etc/fstab a přenesení sta- na discích a vytvořit nové pole. Pokud
jako na specifikaci našeho systému.
rých dat na nové zařízení. Pokud chceme tyto kroky neprovedeme ani konfigu-
Mohou zrychlovat přístup k datům (pokud
použít pole v několika různých částech race nového pole ani změny v nastave- využíváme rozdělování přístupu na více
souborového systému, musíme přidat více ní oddílů nebudou trvalé a navíc mohou fyzických zařízení) tak i zlepšit správu
disků nebo již vlastněné disky rozdělit na způsobit nenávratnou ztrátu dat. místa na disku a zvětšit bezpečnost dat.
více oddílů, následně je definovat Konfigurační soubor /etc/raidtab Proto ho více využívejme v oblastech,
v /etc/raidtab další zařízení /dev/md1, pro RAID-1 je identický s použitým pro kde je vyžadována některá ze jmenova-
md2 atd., všechny inicializovat (mkraid), RAID-0: ných oblastí. Prvními umístěními, které se
naformátovat a připojit. nabízejí jsou /home a /var – zpravidla zde
Pokud jsme správně nainstalova- raiddev /dev/md0 jsme předpokládali moc nebo málo místa
li balíčky mdadmin a raidtools, měly by raid-level 1
na disku a také tam máme obecně nej-
důležitější data. V případě, že naše nové
skripty odpovědné za zamykání systému nr-raid-disks 2
zařízení pracuje rychleji než obvyklé disky
zastavit pole (vykonat příkaz raidstop s persistent-superblock 1
(díky využití strip), můžeme se rozhod-
příslušnými parametry), než budou naše chunk-size 4
nout o přenesení na něj také adresáře
disky odpojeny. V mnoha distribucích device /dev/hda2 /tmp – existují aplikace, které jej intenzi-
bude také fungovat odeslání upozorňo- raid-disk 0 vně využívají, nebo také /usr, což může
vacího e-mailu administrátorovi systému device /dev/hdd2 minimálně zrychlit spouštění programů na
o havárii některého z disků. Zmiňované raid-disk 1 kancelářském počítači.
balíčky mají ještě několik dalších funkcí Abychom přenesli data z jednoho
– je dobré prohlédnout si jejich konfigu- Následně provedeme příkaz mkraid /dev/ zařízení na nové, můžeme jej jednodu-
rační soubory v adresářích /etc/default/ a md0 a obdržíme výpis: še připojit na dočasné umístění (např.
/etc/mdadm/. /mnt/tmp) a použít příkaz, např. cp -ax
,
/var/* /mnt/tmp/ následně vyprázd-
handling MD device /dev/md0
nit ukázkový adresář /var a zaktualizovat
RAID-1 analyzing super-block
/etc/fstab aby bylo toto zařízení připojo-
Řekněme, že jsme se rozhodli změnit disk 0: /dev/hda2, 14659312kB,
váno v tomto místě.
svou konfiguraci, vytvořením RAID-1 raid superblock at 14659200kB
místo RAID-0 – je nutno říci, že teprve /dev/hda2 appears to be already
RAID-1 je skutečným RAID, protože part of a raid array -- use -f to Jak je vidět, systém odmítl vytvoření
v RAID-0 nejsou „nadbytečné” disky. Než force the destruction of the old nového pole na zařízeních, na kterých
začneme vytvářet nové zařízení, musíme superblock mkraid: aborted. jsme již dříve vytvořili RAID-0. Jsme si
však jistí, že chceme úplně zrušit předcho-
zí pole, proto zadáme příkaz: mkraid -R
/dev/md0 a dostaneme např.:
DESTROYING the contents of /dev/md0
in 5 seconds, Ctrl-C if unsure!
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda2, 14659312kB,
raid superblock at 14659200kB
disk 1: /dev/hdd2, 18922680kB,
raid superblock at 18922560kB
Od této chvíle je zařízení /dev/md0
připraveno k použití. Má kapacitu 14
GB, čili stejně jako menší z použitých
oddílů. Vytvoříme na něm souboro-
vý systém a otestujeme, jak pracuje.
Příkaz dd, použitý stejně jako v před-
chozích příkladech potřeboval tento-
krát více než 35 sekund na provede-
ní svého úkolu. Vidíme, že RAID-1 při
zápisu pracuje výrazně pomaleji než
Obrázek 4. Ukázková konstrukce LVM
samostatný pevný disk.
www.lpmagazine.org 57
hardware
Rychlý test s užitím příkazu dd
Výpis 1. Ukázkový výpis generovaný vgdisplay
a zařízení /dev/zero, trval na mém
--- Volume group --- systému 20 sekund, proto RAID-5 pracu-
VG Name IDE_disky je rychleji než samostatný disk, ale samo-
System ID zřejmě pomaleji než RAID-0.
Format lvm2
Metadata Areas 1 Záložní disky
Metadata Sequence No 1 Pro zvětšení bezpečnosti pole RAID-1
VG Access read/write a RAID-5 (a také zde nepopisovaných
VG Status resizable RAID-6 a RAID-10) můžeme využít
MAX LV 0 záložní disky (spare disk). Tento disk
Cur LV 0 není normálně používán – žádná data
Open LV 0 na něj nejsou zapisována ani z něj čtena.
Max PV 0 Ve chvíli, kdy je jeden z disků poškozen,
Cur PV 1 pole automaticky vytvoří jeho obsah na
Act PV 1 prvním dostupném spare disk. Díky
VG Size 37,27 GB tomu může být vypnutí systému s cílem
PE Size 4,00 MB výměny poškozeného disku napláno-
Total PE 9540 váno na pozdější dobu – můžeme čekat
Alloc PE / Size 0 / 0 i do havárie dalšího disku a nepřijdeme
Free PE / Size 9540 / 37,27 GB o žádná data.
VG UUID OEEclx-9gIP-Oqyl-R1cH-9tkK-Mlm7-rWW4xi Pokud chceme do pole přidat zálo-
žní disk, stačí do /etc/raidtab dopsat např.
tento řádek:
Daní za vyšší bezpečnost dat je zme- raid superblock at 18922560kB
nšení výkonnosti. Pokud na jednom disk 2: /dev/sda3, 39070080kB, device /dev/sdd1
z disků dojde k havárii, bude pole praco- raid superblock at 39070016kB spare-disk 0
vat dále a v systémových log souborech se disk 3: /dev/sdb9, 9775521kB,
objeví informace o nutnosti jeho výměny. raid superblock at 9775424kB Vytváříme LVM
Logical Volume Manager sám o sobě není
RAID-5 Takto vytvořené zařízení má kapaci- těžký ke zkonfigurování. To co mnoho
Vytvoření RAID-5 není o moc složi- tu cca 27 GB. Proč? Musíme vynásobit uživatelů odrazuje je používaná termi-
tější než RAID-0 a RAID-1. Ukázkový kapacitu nejmenšího z použitých oddílů nologie. Než přistoupíme k práci s ním,
/etc/raidtab, který jsem vytvořil na svém (9775521kB ~= 9GB) počtem disků a musíme si osvojit několik základních ter-
počítači, může vypadat takto: odečíst velikost jednoho oddílu potřeb- mínů, používaných v LVM – bez toho se
ného na zrcadlení, proto 9*4-9=27. velmi rychle ztratíme.
raiddev /dev/md0
raid-level 5
nr-raid-disks 4
persistent-superblock 1
chunk-size 4
device /dev/hda2
raid-disk 0
device /dev/hdd2
raid-disk 1
device /dev/sda3
raid-disk 2
device /dev/sdb9
raid-disk 3
Zadaný příkaz mkraid -R /dev/md0 ukázal:
DESTROYING the contents of /dev/md0
in 5 seconds, Ctrl-C if unsure!
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda2, 14659312kB,
raid superblock at 14659200kB
Obrázek 5. Konfigurace našich zařízení vyžaduje určité příkazy pracující z příkazové řádky
disk 1: /dev/hdd2, 18922680kB,
58 leden 1/2005
softwarový raid a logical volume manager hardware
LVM vytváří dodatečnou abstrakt-
ní vrstvu mezi zařízeními na ukládání Úrovně RAID:
dat a souborovým systémem operačního • Lineární (linear mode). V tomto módu součtu kapacit všech oddílů mínus
systému. Následně se mezi oddílem disku jsou dva nebo více oddílů k sobě při- kapacita jednoho oddílu. Pokud máme
a systémem souborů objevují některé ter- dávány aby vytvořili jedno velké RAID čtyři oddíly po 15 GB, získáme 45 GB
míny: zařízení. Pří zápisu na toto zařízení místa. Pokud nejsou rozměry oddílů
data nejdříve zaplní celý první oddíl / stejné, ve výpočtech se používá veli-
• physical volume (PV) – fyzický (první disk), později druhý atd. Výsledná kost nejmenšího z nich. Místo, které
svazek, jednoduše se jedná o pevný kapacita zařízení je rovna součtu veliko- se odečítá je pro uschovávání kon-
disk nebo častěji oddíl na pevném stí všech použitých oddílů. Nezískáme troly parity zařízení, díky čemuž
zvětšení rychlosti a havárie jednoho je možno v případě havárie jedno-
disku, může to být však i zařízení
disku způsobí ztrátu dat celého pole. ho disku rekonstruování všech dat.
softwarového RAIDu;
• RAID-0 (stripe). Kapacita dvou nebo více V případě souběžné havárie dvou
• volume group (VG) – skupina svazků,
zařízení je sčítána, ale data jsou zapi- disků jsou data nenávratně ztracena.
je to jeden nebo několik fyzických sována současně na více zařízeních Rychlost práce se blíží RAID-0, ale
svazků (pracujeme s ní vždy i když a stejně i načítána. Pokud máme tímto při zápisu je o něco menší, protože
máme jen jeden PV); způsobem spojeny tři disky a nastavili se počítá „parita“ dat (přesně je vyko-
• logical volume (LV) – logický svazek jsme stripe size na 16 kB, spustí soubor návána logická operace eXclusive OR
(systém vidí LV jako blokové zaříze- o velikosti 48 kB současný zápis na na několika bitech ze všech disků).
ní, proto když využíváme LVM, všechny disky a na každý bude nahráno
pouze 16 kB dat. Jak je možno domyslet, Navíc se ještě zřídka používá:
vytváříme souborový systém (např.
ext3) ne na oddíle, ale na LV; podob- tato konfigurace zvětšuje mnohonásob-
• RAID-4 – stejný jako RAID-5, ale infor-
ně, v systému připojujeme LV a ne ně rychlost přenosu dat. Kapacita je
mace o paritě je zapisována výlučně na
rovna součtu disků, ale musí mít stejnou
oddíl; na jedné skupině svazků jedno zařízení, díky čemuž se stává
velikost. Pokud jsou různé, je na všech
vytváříme jeden nebo více LV); úzkým hrdlem. Mělo by být mnohem
discích používána kapacita pouze nej-
• physical extent (PE) a logical extent (LE) rychlejší než všechny ostatní.
menšího z nich. Havárie jednoho disku
– fyzické rozšíření a logické rozšíření • RAID-6 – podobný jako RAID-5,
způsobí ztrátu dat celého pole.
(data na fyzických a logických svazcích s ještě jedním diskem na data o paritě,
• RAID-1 (mirroring). Stejná data jsou
jsou dělena na menší jednotky např. díky čemu může přečkat současnou
zapisována současně na dva a více
havárii dvou disků.
po 4 MB; velikost PE a LE jsou stejné). disků. Načítá se z libovolného z nich.
• RAID-2, RAID-3 – jsou podobné RAID-4,
Kapacita tohoto pole je rovna velikosti
ale nebyly přijaty a mělo smysl zabudo-
Pro fungování LVM potřebujeme v jádře nejmenšího oddílu. Rychlost zápisu je
vávat jejich podporu do Linuxu.
podporu pro Device mapper. Při konfi- o něco menší než zápis na samostatný
• RAID-10 – Je to RAID-0, ale jeho
guraci jádra ji nalezneme v oddíle Mul- disk. V případě havárie jednoho disku
základním elementem nejsou oddíly
může systém pracovat dále, nenastává
tiple devices driver support. Z dostupných fyzických disků ale pole RAID-1. Proto
žádná ztráta dat.
voleb bychom měli zatrhnout přinejme- vyžaduje čtyři nebo více disků.
• RAID-5. Vyžaduje tři a více oddílů.
nším Snapshot target a Mirror target – i Velikost vzniklého zařízení se rovná
když jsou označeny jako experimentál-
ní, jsou již běžně používány (nejdříve
musíme vybrat Prompt for development série 2.6.x, protože v sérii 2.4.x, se gramů na nás může nabalit neočekávané
and/or incomplete code/drivers v části nachází předchozí generace LVM, která problémy, proto věnujte pozornost tomu,
Code maturity level options). umožňuje o něco méně funkcí. zda máte nainstalovaný správný a pouze
Nejlepší je LVM zkompilovat natrva- Mimo podpory v jádře potřebuje- tento správný balíček. Mimo to musíme
lo do jádra, ale v některých distri- me také sadu programů na vytváření a doinstalovat všechny knihovny, na kte-
bucích jej najdeme v podobě modulu správu LVM. Jsou obvykle v balíčku lvm2 rých je závislý (zvláště libdevmapper).
s názvem dm-mod. Pokud máme distri- a ne v balíčku lvm nebo lvm01, který je
buční jádro, stačí pouze nahrát tento určen pro spolupráci se staršími verze- Výběr zařízení
modul. Měli bychom používat jádra mi jádra. Používání špatné verze pro- Při návrhu diskového pole jsme museli
určit, na kterých oddílech kterých disků
bude vytvořeno. LVM může použít něko-
lik oddílů, stejně jako RAID, ale můžeme
jej rovněž instalovat bezprostředně na
disk, nerozdělený na oddíly (pokud jej
chceme celý využít k tomuto účelu). Navíc
můžeme zkonfigurovat LVM na zařízení /
dev/md0 čili na libovolném typu softwa-
rového RAID. Jak jsem uvedl již dříve,
LVM, mimo svého mála možností, nespo-
lupracuje s „nadbytečnými” disky, proto
Obrázek 6. LVM nám pomáhá lépe zorganizovat místo na discích
když zkonfigurujeme LVM na RAID-1,
www.lpmagazine.org 59
hardware
/dev/hdc4 /dev/sda5. V jednom systému svazků (VG), mohou mít libovolná jména,
můžeme vytvořit více VG (maximálně 99), která si vymyslíme.
ale je samozřejmé, že žádné fyzické zaříze- Rozeberme si ukázkový příkaz,
ní nemůže být ve dvou skupinách záro- vytvářející LV: lvcreate -l3000 -ndomo-
veň. Při příležitosti vytváření VG můžeme .
vské_adresáře IDE_disky Tento příkaz
nastavit rozměr PE – dle HOWTO je výcho- vytvořil LV se jménem „domovské_adre-
zí hodnota 32 MB, ale na mém počítači sáře” a velikosti 3000 PE, čili na mém
použil vgcreate hodnotu 4 MB. Samot- systému 12000 MB. Nový logický svazek
nou hodnotu můžeme zadat pomocí para- byl vytvořen na základě skupiny svazků
Obrázek 7. Výstup programu Bonnie++ po
metru -s, např. vgcreate -s 32 /dev/md0. pojmenované „IDE_disky”. Jako výchozí
konverzi do html
Zadaná hodnota (výchozí v megabajtech) nastavení budou data zapisovaná na tomto
musí být mocninou čísla dvě. svazku postupně zabírat dostupné místo
dostaneme zařízení, které v sobě spoju- Následný krok je aktivace svazku. Pro- na příslušných fyzických zařízeních. Přístup
je výhody jednoho i druhého – zvýšenou vedeme ji příkazem vgchange --available k tomuto svazku máme díky souboru
bezpečnost dat a lepší přizpůsobivost y IDE_disky Měl by odpovědět: 0 logical
. zařízení /dev/IDE_disky/domovské_adre-
v konfiguraci systému. volume(s) in volume group "IDE_disky" sáře. Pokud vytváříme LVM na základě dvou
V další části článku popíši, jak jed- now active. Je důležité, že od této chvíle nebo více nezávislých zařízeních, můžeme
noduše vytvořit LVM na RAID-1 poli. se budou skripty odpovědné za start použít parametr -i, abychom využi-
Pokud chceme vytvořit LVM na samo- a ukončování systému, které jsme nain- li rozdělování diskových operací (stripe)
statném disku či oddíle všechny kroky stalovali společně s balíčkem lvm2, starat na několik zařízení. Příkaz lvcreate -i2
provádíme identicky pouze se zadáním o náš svazek, čili aktivovat jej při startu -l3000 -njméno_LV jméno_VG způsobí, že
jiných názvů zařízení. Předpokládám, a deaktivovat při ukončování systému. data budou rozdělována na dvě zařízení.
že jsme již vytvořili pole RAID-1, tak jak Po aktivaci VG o něm můžeme získat Pokud máme více zařízení, s úspěchem
bylo popisováno dříve. zajímavé informace s využitím příkazu můžeme tento parametr zvětšit.
.
vgdisplay IDE_disky Výsledek jeho čin- Obecně, pokud využíváme LVM,
Další kroky nosti jsem umístil do Výpisu 1. Vidíme, nezajímá nás na které fyzické zařízení se
První úkonem je označení všech zaříze- že naše velikost PE je 4 MB (PE Size) data dostanou z konkrétního logického
ní, která se mají stát částí nějaké skupi- a k dispozici máme 9540 PE. Chtěl bych svazku. Máme přece několik zařízení,
ny svazků (VG). V našem případě napíše- upozornit na to, že v tomto příkladu LVM spojených do jedné VG. Proto můžeme
me příkaz: pvcreate /dev/md0. Pokud vidí jen jedno fyzické zařízení (je to /dev/ k příkazu lvcreate přidat ještě jeden para-
chcete nainstalovat LVM na samostatný md0), i když fakticky máme dva disky. metr, který nastaví, které fyzické zaříze-
oddíl, např. /dev/hdb3, napište pvcreate Blížíme se ke konci. Teď vytvoříme ní systém použije, pokud začne plnit náš
/dev/hdb3, pokud určíte pro LVM celý disk logické svazky. Jak jsem již zmiňoval svazek daty. Například lvcreate -l3000
hdb – pvcreate /dev/hdb. V tomto posled- dříve v jednom VG můžeme vytvo- -njméno_LV jméno_VG /dev/sdh1 nastaví
ním případě jsme nuceni nejdříve vyma- řit mnoho logických svazků (v systému první používané zařízení jako /dev/sdh1.
zat tabulku oddílů, např. příkazem dd if= jich může být maximálně 256). Logic- Samozřejmě, že pokud na něm dojde
/dev/zero of=/dev/hdb bs=1k count=1. ké svazky (LV), podobně jako skupiny místo, LVM začne používat i jiná zařízení.
Po zadání příkazu pvcreate bychom měli
vidět např. Physical volume "/dev/md0"
successfully created. Tento příkaz opaku-
jeme pro všechna zařízení, která mají být
použita v nějaké VG. Způsobí zapsání spe-
cifických dat do zaváděcí oblasti disku
identifikující dané zařízení, díky čemu
pokud např. zaměníme disky sda a sdb,
bude LVM pracovat nadále bez překážek
(netýká se to mého systému, ve kterém je
LVM zbudováno na RAID-1).
Druhým úkonem je vytvoření skupiny
svazků. Každá skupina má své jméno, které
si můžeme zvolit dle vlastního uvážení.
V mém případě jsem vytvořil VG příkazem
vgcreate IDE_disky /dev/md0, které odpo-
vědělo výpisem Volume group "IDE_disky"
successfully created. Mé skupině jsem dal
jméno „IDE_disky”. Pokud se má náš
svazek roztáhnout na více zařízení, musíme
je v tomto příkaze vyjmenovat všech-
Obrázek 8. Zařízení RAID a LVM můžeme vytvářet již v průběhu instalace distribuce
na např. vgcreate IDE_disky /dev/hda3
60 leden 1/2005
softwarový raid a logical volume manager hardware
Pokud chcete odstranit logický svazek,
zadejte příkaz lvremove /dev/IDE_disky/ Jak testovat disky?
Určitě mnoho uživatelů GNU/Linuxu zná bonnie++ -s 1000k -n 128 -b. Pomocí
domovské_adresáře. Nejdříve musíme
nástroj hdparm. S jeho pomocí můžeme parametru -s 1000k jsme nastavili velikost
odpojit systém souborů, pokud jsme již
mj. zjistit rychlost lineárního přenosu dat z souboru, který Bonnie++ vytvoří, aby mohl
nějaké stihli vytvořit a připojit, s využitím
disku. Je to velmi jednoduchý test umožňu- zkontrolovat rychlosti lineárního zápisu
/dev/IDE_disky/domovské_adresáře. jící porovnání disků – ve skutečnosti nám a čtení. Volba -n 128 nastavuje, kolik
Pro změnu názvu LV můžeme použit říká nemnoho o tom, jak výkonné budou tisíc malých souborů (s nulovou veliko-
příkaz lvrename. Užitečný je také program naše disky a vůbec se nehodí na testování stí) bude vytvořeno, aby se dala změřit
lvscan, který nám zobrazí informace RAID nebo LVM. doba jejich vytváření, načítání a mazání.
o všech pracujících logických svazcích. Neexistuje jeden univerzální měřič Poslední parametr -b vypíná cachování
Ve svém systému jsem si vytvořil ještě rychlosti disků, protože každý počítačo- zápisů a synchronizuje disk po každém
jeden svazek: lvcreate -l3000 -nsy- vý systém je jiný – některé stále načíta- z nich (fsync()), čímž se chová jako popu-
stémové_logy IDE_disky a následně jsem jí soubory o velikosti několika gigabaj- lární SQL nebo SMTP servery, které to
tů a jiné desítky tisíc souborů o velikosti dělají podobně.
zapsal příkaz vgdisplay, který mi zobrazil
několika kilobajtů. V některých je stejně Po několika nebo více minutách
mj. i počet volných PE:
důležitá rychlost načítání jako rychlost testů vypíše program několik řádků – na
zápisu, v jiných nemá rychlost význam. začátku budou dvě málo čitelné tabul-
Free PE / Size 3540 / 13,83 GB
Některé programy načítají data lineárně ky s výsledky a poslední řádek obsa-
a jiné stále prohledávají disk. Z toho huje všechny výsledky oddělené čárka-
Abychom úplně zaplnili náš VG, vytvo- důvodu musíme při měření výkonu disků mi. Abychom získali pěknou a čitelnou
řením logického svazku, musíme zadat brát v úvahu konkrétní systém. tabulku, můžeme použít program bon_
parametr -l3540, protože právě tolik alo- Nejpopulárnějším programem, který .
csv2html Pomocí standardního výstupu
kačních bloků nám zůstalo. Je však dobré nám dá mnoho informací o práci disku načte poslední řádek výpisu z Bonnie++
ponechat si ještě trochu místa na snap- je Bonnie++ (http://www.coker.com.au/ a tiskne html soubor na standardní
shot'y, o kterých napíši ještě v další části, bonnie++/). Pokud jej nenajdete ve své výstup. Můžeme ho použít takto: echo
distribuci, můžete si stáhnout zdrojové kódy <poslední řádek bonie++> | bon_
proto zadám příkaz lvcreate -l3490 -
z domovské stánky a můžete je zkompi- csv2html .
> /tmp/dysk1.html Samo-
ndatabáze IDE_disky .
lovat a nainstalovat tradičními příkazy: zřejmě, že nejjednodušší pro nás
V této chvíli je vše připraveno na for-
./configure; make; make install Tento pro-
. bude dlouhý řádek s výsledky z pro-
mátování všech vytvořených zařízení. gram testuje rychlost práce nejenom samot- gramu Bonnie++ označit a vložit do
V mém systému by ukázkové příkazy ného pevného disku ale i systému souborů. tohoto příkazu pomocí myši.
vypadaly takto: Na testovaném disku musíme vytvořit nějaký Hodnoty, které Bonnie++ vypíše,
oddíl, vytvořit na něm souborový systém budou závislé nejenom na pevném
# mkfs.ext3 /dev/IDE_disky/databáze a připojit do systému. Následně přejděte do disku, ale rovněž na použitém systému
# mkfs.ext3 /dev/IDE_disky/domovské_ S adresáře, kam je připojen testovaný disk souborů (ext2/ext3), rychlostí proceso-
adresáře (např. cd /mnt/test) a spusťte program: ru či zatížením systému atd.
# mkfs.ext3 /dev/IDE_disky/systémové_logy
zřejmě, že to není nejlepší nápad, pro- S využitím příkazu vgdisplay zkontroluje-
LVM v akci tože naše předchozí zařízení se nachází na me výsledek naší činnosti. Ukázka výpisu
V této chvíli se jistě mnoho čtenářů ptá, RAID-1, a proto je zabezpečeno před na mém počítači vypadá takto:
proč bylo vytvořeno LVM? Zatím nás dost havárií jednoho z disků. Pokud do celé
dlouhý popis kroků dovedl do situace, kdy skupiny svazků přidáme jedno fyzické VG Size 74,52 GB
máme obvyklý systém. Je pravdou, že je zařízení bez této ochrany, v případě jeho PE Size 4,00 MB
zabezpečen před havárií jednoho pevného havárie přijdeme o všechna data. V reál- Total PE 19078
disku, ale to je zásluha výlučně RAID-1 ném světě bychom měli přidat nejméně Alloc PE / Size 9540 / 37,27 GB
a ne LVM. Navíc se přístup k disku zpo- jeden další disk a vytvořit na nich nej- Free PE / Size 9538 / 37,26 GB
malil (jednoduchý test s příkazem dd dříve RAID-1. Pro potřeby ukázky v tom-
na LVM u mne pracuje o tři sekun- to článku si však ukážeme jednoduchý V této chvíli můžeme vytvořit úplně nový
dy déle než na samostatném RAID-1). příklad s jedním oddílem. svazek na 9538 volných PE, ale o to nám
A samozřejmě, že LVM nebyl vytvo- Začneme inicializací oddílu: zase až tak nejde, protože nám momentálně
řen proto, abychom mohli využít fantazii chybí místo na svazku připojeném v /báze.
v pojmenovávání zařízení. Podívejme se na # pvcreate /dev/sda3 Po spuštění příkazu df -h aktuálně máme:
to, jak s jeho pomocí spravovat místo na Physical volume "/dev/sda3" S
disku a pohodlně provádět bezpečnostní successfully created /dev/mapper/IDE_disky-databáze
zálohu dat. 14G 13G 397M 98% /báze
Následně rozšíříme skupinu svazků
Přidáváme disk o nové zařízení: Abychom všech 9538 volných PE přidali
Předpokládejme, že nám chybí místo na tomuto svazku, zadáme příkaz:
zařízení /dev/IDE_disky/databáze. Do sys- # vgextend IDE_disky /dev/sda3
tému jsme přidali nový disk a můžeme Volume group "IDE_disky" S # lvextend -l +9538 /dev/IDE_disky/ S
z něj použít jeden oddíl – /dev/sda3. Samo- successfully extended databáze
www.lpmagazine.org 61
hardware
Tímto způsobem jsme zvětšili logický noduché zmenšování. Problém se objevu- Pokud používáme systém souborů xfs
svazek, o čemž se můžeme přesvědčit je při zmenšování souborových systémů, musí být příkaz o něco delší:
příkazem lvscan. Nyní musíme zvětšit protože pokud vím tak pouze ext2/ext3
souborový systém, aby zabral místo na a reiserfs tuto operaci umožňují. Ukázko- S
# xfs_freeze -f /home; lvcreate -L200M
celém LV. Existují speciální záplaty na vý příklad by mohl vypadat takto: S
-s -n nase_zaloha /dev/IDE_disky/
jádro, které umožňují provedení této ope- domovské_adresáře
race bez odpojení souborového systému, # umount /home
ale my si na chvíli proveďme umount # resize2fs /dev/IDE_disky/S V této chvíli můžeme připojit (jen ke
/báze/ a zadejme příkaz resize2fs -p domovské_adresáře 524288 čtení) logický svazek se jménem „nase_
/dev/IDE_disky/databáze. Program nás # lvreduce -L-1G S
/dev/IDE_disky/ zaloha”, který obsahuje kopii svazku „do-
může požádat o kontrolu souborového domovské_adresáře movské_adresáře”:
systému před jeho změnou velikosti, # mount /home
proto v tomto případě napište: e2fsck -f # mount /dev/IDE_disky/nase_zaloha S
/dev/IDE_disky/databáze a znovu zopa- V tomto případě jsme jako parametr pro- /mnt/backup/
kujte příkaz resize2fs. Nyní už zbývá jen gramu resize2fs museli zadat novou veli-
připojit znovu LV a podívat se, co zobrazí kost souborového systému. Po skončení provádění záložní kopie
df -h. Já jsem dostal: LVM obsahuje také nástroje na pře- zadáme příkaz : lvremove -f /dev/IDE_
souvání skupiny svazků (VG) na jiné disky/nase_zaloha. Musíme však dávat
/dev/mapper/IDE_disky-databáze počítače, když nemůžeme provést obvy- pozor na to, aby do této chvíle veškeré
51G 13G 36G 27% /báze klé přeložení disků. Musíme, po odpoje- změny na svazku nepřekročily velikost
ní souborového systému a deaktivaci VG snapshotu – v tomto příkladě 200 MB. Po
Operace trvala velmi krátce a skonči- (vgchange --activate n jméno_VG), spu- naplnění se stává neužitečným a stejně je
la úspěchem. Bez LVM by byla nutná stit příkaz vgexport jméno_VG a násled- zapotřebí se chovat k datům z něj zkopíro-
úprava tabulky oddílů na přinejmenším ně po přeložení disku do nového počíta- vaným.
jednom disku a následně krkolomné pře- če – vgimport jméno_VG.
nášení dat. Všechno tohle by způsobilo Shrnutí
o mnoho delší přestávku ve fungování Snapshot Využití RAID a LVM může velmi ule-
systému. Provádění bezpečnostní zálohy trvá dosti hčit práci správci a zvětšit bezpečnost a
Zvětšování souborového systému je dlouho a ne každý si může dovolit úplné výkonnost systému. Toto řešení někdy
možné nejenom na ext2/ext3. Pokud zastavení systému na tuto dobu. tehdy způsobí, že některé obvykle jednoduché
používáme reiserfs, můžeme analogicky jsou největším problémem soubory, které činnosti (např. přenášení disku do jiného
.
využít příkaz resize_reiserfs -f V pří- byly v době provádění zálohy změněny. počítače) se stávají velmi komplikova-
padě xfs máme program xfs_growfs, ale LVM nám zpřístupňuje speciální mecha- nými a ve chvíli, kdy již dojde k havárii
jistý rozdíl je v tom že systém souborů nismus, který nám umožní tento pro- některého disku je získání dat z něj těžší.
musíme nechat připojený a jako para- blém obejít. Je nutné se vybavit patřičnými nástro-
metr tohoto programu zadat přípojný bod Můžeme vytvořit snapshot aktuál- ji pro obnovu systému, které si budou
(např. xfs_growfs /báze). ního stavu některého z našich logických umět poradit se souborovými systémy
svazků. Snapshot je pro správce systému na těchto zařízeních, např. minidistribu-
Jiné manipulace s disky dalším logickým svazkem, obsahujícím ce (R)ecovery (I)s (P)ossible Linux. Jinými
V případě, že chceme ze systému odstra- kopie některého LV. Tato kopie se nemění slovy, pokud vyřešíte jisté problémy,
nit jeden disk (např. hdb) a máme na ostat- i když se na originále provádí opera- často se objeví celá řada nových.
ních discích tolik místa, že se na ně vejdou ce zápisu. Samozřejmě, že při vytváře-
všechna data, může použít příkaz: pvmove ní snapshotu nejsou data v něm obsa-
/dev/hdb. Nyní byla všechna data z hdb žená fyzicky kopírována na nový logic-
přenesena na zbylé disky v rámci stejné ký svazek. Na daném VG potřebujeme Na Internetu:
skupiny svazků (VG). Následné vgredu- trochu místa, aby bylo kam zapsat infor-
• LVM HOWTO:
ce jméno_VG /dev/hdb způsobí, že disk již mace o souborech, které se změnily od http://www.tldp.org/HOWTO/
není členem VG se jménem jméno_VG. doby vytvoření stavu logického svazku. LVM-HOWTO/
Když jsme do systému přidali nový disk Pokud máme adresář /home ve kterém se • Softwarový RAID HOWTO:
(např. sdf ), na který chceme přenést data nachází 20 GB dat, pak víme, že vytvoření http://www.tldp.org/HOWTO/
ze starého (např. hdb), zadáme příkazy: bezpečnostní zálohy bude trvat 10 minut. Software-RAID-HOWTO.html
Předpokládejme, že uživatelé v průběhu • Záchranná distribuce, mj. pro RAID
# pvcreate /dev/sdf těchto 10 minut na oddíle s /home vytvoří a LVM:
# vgextend dev /dev/sdf nebo změní ne více než 200 MB dat. Tolik http://www.tux.org/pub/people/
# pvmove /dev/hdb /dev/sdf místa proto musíme mít na dané skupině kent-robotti/looplinux/rip/
• Domovská stránka distribuce (R)eco-
# vgreduce dev /dev/hdb svazků. Snapshot vytvoříme příkazem:
very (I)s (P)ossible Linux:
http://www.tux.org/pub/people/
Před nějakou chvílí jsme zvětšovali logický # lvcreate -L200M -s -n nase_zaloha S kent-robotti/looplinux/rip/
svazek. Samozřejmě je možné i stejně jed- /dev/IDE_disky/domovské_adresáře
62 leden 1/2005
Get documents about "