2005.01_Programowy RAID oraz LVM_[Sprzet].pdf

(695 KB) Pobierz
439127159 UNPDF
sprzęt
Programowy
RAID oraz LVM
Piotr Wolny
komputerów jest wyposażo-
nych w więcej niż jeden dysk
twardy. Tradycyjnie, zakłada-
my na tych dyskach kilka partycji, gdyż
Linux umożliwia nam montowanie róż-
nych części systemu plików (np. /usr czy
/home ) z niezależnych urządzeń. Na tym
nie kończą się możliwości wykorzystania
dysków twardych w Linuksie. Od dawna
nasz system wspiera dwa bardziej zaawan-
sowane mechanizmy gromadzenia danych:
Software RAID oraz Logical Volume Mana-
ger . Przy ich pomocy możemy zwięk-
szyć wydajność pamięci masowej, a także
poprawić bezpieczeństwo przechowy-
wanych danych. Choć zarówno Softwa-
re RAID, jak i Logical Volume Manager
( LVM ), kojarzą się często z wielkimi serwe-
rami, wyposażonymi w dziesiątki dysków,
to z powodzeniem możemy je wykorzysty-
wać również na domowych komputerach,
wyposażonych w dwa, trzy dyski twarde.
Ponadto, LVM jest również użyteczny
z jednym dyskiem.
larnych rodzajów RAID można przeczytać
w ramce Poziomy RAID . Generalnie, RAID
umożliwia:
• zwiększenie bezpieczeństwa danych,
jeśli stosujemy nadmiarowe dyski
(bez nadmiarowych dysków nasz
RAID jest bardziej podatny na awarię
niż pojedyncze dyski);
• szybkość odczytu i zapisu danych
zwiększa się, jeśli tylko zastosujemy
rozdzielanie (ang. striping ) danych
na dwa lub więcej niezależnych urzą-
dzeń fizycznych;
• połączenie kilku niezależnych urzą-
dzeń w jeden system plików może
zwiększyć wygodę administracji sys-
temem w pewnych konfiguracjach.
Pamiętajmy jednak, że RAID ma pewne
ograniczenia:
• jedno utworzone urządzenie RAID nie
może być dzielone na partycje, co cza-
sami powoduje konieczność konfigu-
rowania kilku RAID równocześnie;
RAID a LVM
Historycznie, starszym rozwiązaniem jest
programowy RAID. Idea Redundant Arrays
of Inexpensive Disks nie jest taka stara, gdyż
pochodzi z 1987 roku. Opracowano wtedy
koncepcję łączenia wielu tanich dysków
w jedno duże i szybkie urządzenie. Aby
awaria jednego z połączonych dysków nie
powodowała utraty danych na całej macie-
rzy, w koncepcji ujęto dyski nadmiarowe
(ang. redundant ), niezbędne do odtwo-
rzenia danych, w przypadku awarii. Tra-
dycyjne RAID wykonuje się sprzętowo,
najczęściej łącząc dyski SCSI, które, po
podłączeniu do komputera, są widocz-
ne jako jedno urządzenie. Linux umożli-
wia nam budowę RAID poprzez progra-
mowe połączenie dysków w macierze
i mogą to być zarówno urządzenia SCSI,
IDE, jak również SATA. Na temat popu-
DVD
Po uruchomieniu Linux+ Live
DVD można przetestować oma-
wiane zagadnienia.
Na płycie CD/DVD
Na płycie CD/DVD znajduje się
oprogramowanie omawiane
w artykule.
O autorze
Autor hobbistycznie i zawodo-
wo zajmuje się Linuksem mniej
więcej od czasów jądra 2.0.20.
Obecnie pracuje w organiza-
cji społecznej. Poza Linuksem
fascynuje go rock progresywny.
Kontakt z autorem:
autorzy@lpmagazine.org
Rysunek 1. W Linuksie dyski różnego
typu możemy łączyć w jedno urządzenie
RAID lub LVM
60 styczeń 2005
C oraz więcej spośród naszych
439127159.033.png 439127159.034.png 439127159.035.png 439127159.036.png 439127159.001.png 439127159.002.png 439127159.003.png
software raid oraz logical volume manager
sprzęt
Rysunek 2. Sterowniki do RAID i LVM
znajdziemy w jądrze Linuksa
Tworzymy programowy
RAID
Programowy RAID możemy założyć na
co najmniej dwóch dowolnych partycjach.
Aby miał on jakikolwiek sens, partycje te
powinny znajdować się na osobnych dys-
kach. Zakładanie RAID na dwóch party-
cjach jednego dysku nie zwiększy bezpie-
czeństwa danych, ani nie przyspieszy ope-
racji dyskowych. Możemy łączyć w jeden
RAID partycje z całkiem różnych dysków,
np. IDE, SCSI czy SATA, ale z reguły taka
hybryda będzie pracowała z prędko-
ścią najwolniejszego spośród nich. Jeśli
chcemy łączyć dwa dyski IDE, powinny
one znajdować się na osobnych kanałach
IDE – gdy będą połączone jedną taśmą,
zauważymy wyraźny spadek wydajności.
Programowy RAID jest realizowany na
poziomie jądra systemu. Musimy posiadać
w jądrze wsparcie dla RAID. Przy konfi-
guracji jądra, w dziale Multi-device sup-
port (RAID and LVM) , powinniśmy zazna-
czyć RAID support oraz potrzebne tryby
RAID (możemy wszystkie). Najwygodniej
jest wkompilować obsługę RAID na stałe
do jądra. Możemy również nie kompilo-
wać jądra samodzielnie i polegać na dys-
trybucyjnym – we wszystkich nowych
dystrybucjach znajdziemy moduły linear,
raid0, raid5 itd., potrzebne do działa-
nia naszej macierzy. Wystarczy polecenie
cat /proc/mdstat , aby dowiedzieć się, czy
nasze jądro posiada wsparcie dla Software
RAID . Jeśli zobaczymy komunikat o braku
pliku, musimy skonfigurować i skompilo-
wać nowe jądro własnoręcznie.
Programowy RAID jest dostępny w ją-
drze Linuksa od bardzo dawna – jest stan
dardowo obecny w jądrach z serii 2.4.x
i 2.6.x, ale istnieją łatki pozwalające używać
go z jądrami 2.2.x, a nawet 2.0.x. Wszystkie
opisane tutaj czynności wykonywałem na
jądrze 2.6.9 – powinny one wyglądać iden-
tycznie w starszych wersjach jądra, włą-
cznie z serią 2.4.x.
Poza wsparciem w jądrze systemu,
będziemy potrzebować jeszcze dwóch
pakietów z oprogramowaniem: mdadm
oraz raidtools (w Debianie – raidtools2 ).
Ten pierwszy zawiera narzędzie do akty-
wowania i zatrzymywania urządzeń
RAID, a drugi dostarcza podstawowych
narzędzi do tworzenia macierzy. Znajdzie-
my te pakiety we wszystkich popularnych
dystrybucjach Linuksa.
Załóżmy, że nasz system operacyj-
ny jest zainstalowany na dysku sda , a na
RAID chcemy przeznaczyć dyski IDE: hda
RAID i LVM podczas
instalacji dystrybucji
Instalatory większości nowoczesnych dys-
trybucji umożliwiają utworzenie urządzeń
RAID i LVM już podczas instalacji Linuksa.
Przykładowo, w Aurox Linuksie wystarczy,
że wybierzemy Partycjonowanie ręczne
Disk Druidem i będziemy mogli utworzyć
RAID-a, LVM-a, a nawet LVM-a na RAID-
ie. W nowych wersjach Mandrakelinuksa
również musimy wybrać ręczny podział
na partycje, a później dodatkowo przełą-
czyć się na tryb zaawansowany. Instala-
tor tej dystrybucji ma podobne możliwości,
ale zdaje się, że nie pozwala na tworzenie
LVM-a na RAID-ie.
Jeśli wiemy, jak działają urządze-
nia RAID oraz LVM, utworzenie ich przy
pomocy któregoś z tych instalatorów
nie powinno stwarzać żadnych proble-
mów. Przykładowo, aby stworzyć RAID
w Aurox Linuksie, klikamy na RAID, wybie-
ramy pierwszy z dysków i zaznaczamy
utworzyć partycję programowego RAID.
Następnie to samo powtarzamy dla kolej-
nych dysków. Na zakończenie, jeszcze raz
klikamy na RAID i wybieramy utworzyć
urządzenie programowego RAID. Wtedy
będziemy mogli podać jego typ, punkt
zamontowania oraz system plików, który
zostanie na nim utworzony. LVM tworzy-
my podobnie – najpierw tworzymy jedną
lub kilka partycji typu physical volume
LVM , a później klikamy na LVM i tworzymy
poszczególne woluminy logiczne.
Moje doświadczenia z tworzeniem
RAID-a oraz LVM-a przez instalatory
dystrybucji nie są zachęcające. Polecam
instalację na tradycyjnych urządzeniach,
a dopiero później stworzenie RAID-a czy
LVM-a i przeniesienie na nie odpowiednich
katalogów.
• raz utworzony RAID nie może zostać
rozszerzony na więcej dysków.
Dzięki RAID, to co komputer widzi jako
jedno urządzenie blokowe, może być
w istocie kombinacją kilku partycji na róż-
nych dyskach twardych. Logical Volume
Manager idzie znacznie dalej. Udostęp-
niane przez niego urządzenia blokowe
nie tylko mogą fizycznie znajdować się
na dowolnej ilości dysków czy partycji, ale
również możliwe jest ich łatwe powięk-
szanie, zmniejszanie oraz przenoszenie.
To tak, jakby jedna tablica partycji obej-
mowała nie tylko kilka dysków, ale rów-
nież umożliwiała dodawanie/usuwanie,
zwiększanie/zmniejszanie partycji bez
żadnej przerwy w pracy systemu – czasem
nawet bez odmontowania partycji. Możli-
we jest przy tym równie łatwe dokładanie
kolejnych dysków. Reasumując, dzięki LVM
otrzymujemy:
• całkowitą dowolność w przydzielaniu
poszczególnych fizycznych dysków czy
partycji jako urządzeń blokowych w sys-
temie (np. urządzenie zamontowane
jako /home może składać się z jedne-
go dysku IDE i połowy dysku SCSI);
• możliwość łatwego zwiększania i zmnie-
jszania (jeśli system plików umożliwia
to drugie) poszczególnych urządzeń
widzianych przez system operacyjny
oraz przenoszenia ich między dyskami
(obejmuje to również łatwe dodawanie
i odejmowanie dysków z systemu);
• rozdzielanie (ang. striping ) danych na
dwa lub więcej niezależnych urządzeń
fizycznych, aby zwiększyć wydajność;
• funkcję ułatwiającą wykonywanie
kopii bezpieczeństwa ( snapshot ).
i hdd . Na obydwu tych dyskach utwo-
rzyliśmy partycje, przy czym na RAID
mają być przeznaczone hda2 oraz hdd2 .
Zanim rozpoczniemy właściwą pracę,
możemy przetestować szybkość działa-
nia tych dysków, przed zbudowaniem
z nich macierzy. Jak na poważnie podejść
do testowania wydajności dysków, korzy-
stając z programu Bonnie++ , opisuję
w ramce Jak testować dyski? . Przy pro-
jektowaniu systemu, w którym ważną
rolę odgrywa wydajność pamięci maso-
wej, należy zawsze kierować się wskaza-
niami programu Bonnie++ lub podobne-
go. W tym artykule, aby szybko i obrazo-
wo pokazać różnice pomiędzy konfigura-
cjami RAID, posłużę się programem dd .
Przykładowo, po utworzeniu na partycji
Wadą linuksowego LVM-a jest brak możli-
wości stosowania nadmiarowych dysków,
ale możemy połączyć go z programowym
RAID-1, aby zapewnić sobie dodatkowe
zabezpieczenie.
www.lpmagazine.org
61
439127159.004.png 439127159.005.png 439127159.006.png 439127159.007.png 439127159.008.png
 
sprzęt
hda2 systemu plików ext2 , zamontowa-
niu jej w /mnt/test/ , wykonałem komendy:
cd /mnt/test; dd if=/dev/zero of=ska-
suj_mnie count=2000000 . W efekcie otrzy-
małem następującą prędkość zapisu linio-
wego jednego dużego pliku:
cia tej macierzy podczas uruchamiania
się jądra systemu; chunk-size określa w
kilobajtach, na jakie najmniejsze jednost-
ki będą dzielone dane podczas zapisu na
macierz (nie można jednoznacznie powie-
dzieć, jaka wartość spowoduje najlepszą
wydajność, ale wstępnie możemy przyjąć,
że będzie ona równa block size naszego
systemu plików). Dalej wyliczamy i nume-
rujemy wszystkie użyte partycje.
Kolejnym krokiem jest zmiana przy
pomocy programu fdisk identyfikato-
rów partycji, na których będzie działa-
ła macierz. Powinny one otrzymać typ
fd , czyli Linux raid auto . Bez tej czynno-
ści macierz będzie działać, ale nie zosta-
nie automatycznie wykryta przez jądro
systemu.
Gdy wszystko jest gotowe, wykonu-
jemy polecenie mkraid /dev/md0 . Oczy-
wiście, w jego wyniku utracimy wszyst-
kie dane, które mieliśmy na partycjach
wymienionych w /etc/raidtab . W rezulta-
cie powinniśmy otrzymać coś takiego:
Widzimy prawie dwukrotny wzrost pręd-
kości zapisu tego pliku (z 32,8 do 18,4
sekundy). Podobna macierz, utworzo-
na w moim komputerze na dyskach
SATA, poradziła sobie z tym zapisem
w 14 sekund.
W ten sposób otrzymaliśmy urzą-
dzenie, które powinno działać znacz-
nie szybciej od pojedynczego dysku,
zarówno przy operacjach odczytu, jak
i zapisu. Możemy zamontować je
w dowolnym miejscu systemu plików,
w którym występuje intensywne użycie
dysku, np. w /var/www . Wystarczy tylko
odpowiedni wpis w /etc/fstab i prze-
niesienie starych danych na nowe urzą-
dzenie. Jeśli chcemy używać macierzy
w kilku różnych miejscach systemu
plików, musimy dołożyć więcej dysków
lub posiadane dyski podzielić na więcej
partycji, następnie zdefiniować w /etc/
raidtab kolejne urządzenia /dev/md1, md2
itd., wszystkie je zainicjować ( mkraid ), sfor-
matować oraz zamontować.
Jeśli prawidłowo zainstalowaliśmy
pakiety mdadmin oraz raidtools , skryp-
ty odpowiedzialne za zamykanie syste-
mu powinny zatrzymać macierz (wyko-
nać komendę raidstop z odpowiednim
parametrem), zanim nasze dyski zostaną
odłączone od zasilania. W wielu dystry-
bucjach będzie również działało powia-
damianie pocztą administratora systemu
o awarii któregoś z dysków. Wspomnia-
ne pakiety mają jeszcze sporo więcej moż-
liwości – warto przejrzeć ich pliki konfi-
guracyjne w katalogach /etc/default/ oraz
/etc/mdadm/.
1024000000 bytes transferred
in 28,490542 seconds
(35941752 bytes/sec)
Przy zastosowaniu systemu plików ext3
czas potrzebny dla wykonania tej opera-
cji urósł do 32,8 sekundy.
RAID-0
Najpierw wypróbujemy RAID-0. Aby
go utworzyć, musimy napisać plik /etc/
raidtab . Na początek umieściłem tam
następujące wpisy:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hda2
raid-disk 0
device /dev/hdd2
raid-disk 1
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
Jak widzimy, ten plik nie jest skompli-
kowany. Pierwsza linia określa, które-
go urządzenia dotyczy ta konfigura-
cja. Poza md0 możemy mieć dowol-
nie dużą ilość innych urządzeń (oczy-
wiście, powinny się one znajdować na
innych partycjach). Opcją raid-level
ustalamy rodzaj macierzy – w tym
przypadku RAID-0, czyli stripe . Jako nr-
raid-disk podajemy,ilepartycjimapracować
w tym urządzeniu; persistent-superblock
spowoduje, że w superbloku podanych
dalej partycji zostaną zapisane informa-
cje potrzebne do automatycznego wykry-
Jak widzimy, mimo, że partycje te różnią
się wielkością, macierz została utworzona.
Teraz możemy sprawdzić ją komendą cat
/proc/mdstat . Powinniśmy zobaczyć np.
coś takiego:
Personalities : [linear] [raid0]
[raid1] [raid5] [raid6] [raid10]
md0 : active raid0 hdd2[1] hda2[0]
33581760 blocks 4k chunks
unused devices: <none>
RAID-1
Załóżmy, że postanowiliśmy zmienić swoją
konfigurację, tworząc RAID-1 w miejsce
RAID-0 – tak naprawdę dopiero RAID-1
jest prawdziwym RAID , gdyż w RAID-0
nie ma nadmiarowych dysków. Zanim
rozpoczniemy tworzenie nowego urzą-
dzenia, musimy koniecznie dezakty-
wować poprzednie. Pierwszym kro-
kiem jest odmontowanie systemu plików
zamontowanego na macierzy (np. umount
/var/www ). Następnie wykonujemy ko-
mendę raidstop /dev/md0 . Dopiero
wtedy możemy zmieniać układ partycji
na dyskach i tworzyć nowe macierze.
Jeśli pominiemy te kroki, ani konfigura-
cja nowej macierzy, ani zmiany w ukła-
dzie partycji nie będą skuteczne – co naj-
wyżej mogą doprowadzić do bezpowrot-
nej utraty danych.
Od teraz urządzenie /dev/md0 traktujemy
jak partycję dysku twardego. Możemy np.
wykonać polecenia:
# mkfs.ext3 /dev/md0
# mount /dev/md0 /mnt/test/
# cd /mnt/test/
# dd if=/dev/zero of=
skasuj_mnie count=2000000
Rysunek 3. Wszystkie potrzebne
informacje do zbudowania RAID
i LVM możemy znaleźć po angielsku
w odpowiednich HOWTO
Na moim systemie ten szybki test pokazał:
1024000000 bytes transferred
in 18,410448 seconds
(55620591 bytes/sec)
62
styczeń 2005
439127159.009.png 439127159.010.png 439127159.011.png 439127159.012.png 439127159.013.png 439127159.014.png 439127159.015.png
software raid oraz logical volume manager
sprzęt
Plik konfiguracyjny /etc/raidtab dla
RAID-1 jest prawie identyczny, jak dla
RAID-0:
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
Integracja RAID/LVM
w systemie
To, gdzie zamontujemy nowo powsta-
łe urządzenia, zależy od celu, jaki przy-
świecał nam przy koniguracji LVM-a czy
RAID-a, jak również od specyiki nasze-
go systemu. Mogą one zarówno przyspie-
szyć dostęp do danych (jeśli korzystamy z
rozdzielania dostępu na wiele izycznych
urządzeń), jak i usprawnić administrowa-
nie miejscem na dysku i zwiększyć bez-
pieczeństwo danych. Stosujmy więc go
w tych miejscach, gdzie wymagana jest
któraś z tych właściwości. Pierwszymi
lokalizacjami, które przychodzą na myśl
/home oraz /var – z reguły tam naj-
częściej przewidzieliśmy za dużo lub za
mało miejsca na dysku, a także tam na
ogół mamy najważniejsze dane. W przy-
padku, gdy nasze nowe urządzenie działa
szybciej niż zwykłe dyski (dzięki wykorzy-
staniu strip ), możemy zdecydować się na
przeniesienie na niego katalogu /tmp – ist-
nieją aplikacje, które intensywnie go wyko-
rzystują, czy nawet /usr , co może minimal-
nie przyśpieszyć uruchamianie się progra-
mów na komputerze biurkowym.
Aby przenieść dane z podstawowego
urządzenia na nowe, możemy najprościej
zamontować go w tymczasowej lokali-
zacji (np. /mnt/tmp ) i użyć komendy, np.
cp -ax /var/* /mnt/tmp/ , następnie
opróżnić przykładowy katalog /var i uak-
tualnić /etc/fstab , aby właściwe urządze-
nie było montowane w tym miejscu.
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hda2
raid-disk 0
device /dev/hdd2
raid-disk 1
Od teraz urządzenie /dev/md0 jest
gotowe do użycia. Ma ono pojemność 14
GB, czyli tyle samo, ile mniejsza z uży-
tych partycji. Tworzymy na nim system
plików i sprawdzamy, jak działa. Komen-
da dd , użyta identycznie jak w poprzed-
nich przykładach, tym razem potrzebo-
wała aż ponad 35 sekund na wykonanie
swojego zadania. Widzimy, że RAID-1
przy operacji zapisu działa nieznacznie
wolniej niż pojedynczy dysk twardy.
Kosztem zmniejszenia wydajności
otrzymujemy większe bezpieczeństwo
danych. Gdy jeden z dysków ulegnie
awarii, macierz będzie pracowała dalej,
a w logach systemowych pojawi się infor-
macja o konieczności jego wymiany.
Następnie wydajemy polecenie mkraid
/dev/md0 i dostajemy w efekcie komu-
nikat:
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda2, 14659312kB,
raid superblock at 14659200kB
/dev/hda2 appears to be already
part of a raid array -- use -f to
force the destruction of the
old superblock
mkraid: aborted.
RAID-5
Stworzenie RAID-5 nie jest wcale trud-
niejsze niż RAID-0 i RAID-1. Przykła-
dowy /etc/raidtab , który stworzyłem na
swoim komputerze, może wyglądać tak:
Jak widać, system odmówił stworzenia
nowej macierzy na urządzeniach, na któ-
rych poprzednio utworzyliśmy RAID-0.
Jesteśmy jednak pewni, że chcemy całko-
wicie zniszczyć poprzednią macierz, więc
wydajemy polecenie: mkraid -R /dev/md0
i otrzymujemy np.:
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
Wydane polecenie mkraid -R /dev/md0
pokazało:
Rysunek 4. Przykładowa konstrukcja LVM
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
disk 2: /dev/sda3, 39070080kB,
raid superblock at 39070016kB
www.lpmagazine.org
63
439127159.016.png 439127159.017.png 439127159.018.png 439127159.019.png 439127159.020.png 439127159.021.png 439127159.022.png 439127159.023.png 439127159.024.png 439127159.025.png 439127159.026.png 439127159.027.png 439127159.028.png
sprzęt
przystąpimy do pracy, musimy koniecznie
przyswoić sobie kilka podstawowych ter-
minów, stosowanych w LVM-ie – bez tego
dosyć szybko się pogubimy.
LVM tworzy dodatkową warstwę abs-
trakcji pomiędzy urządzeniami pamięci
masowej a systemem plików w systemie.
W efekcie, pomiędzy partycją na dysku
a systemem plików w komputerze poja-
wiają się dodatkowe terminy:
Multiple devices driver support . Z dostęp-
nych tam dodatkowych opcji powinniśmy
zaznaczyć przynajmniej Snapshot target
oraz Mirror target – mimo, że są one ozna-
czone jako eksperymentalne, to są już
w powszechnym użyciu (najpierw musimy
wybrać Prompt for development and/or
incomplete code/drivers w dziale Code
maturity level options ) .
Najwygodniej jest wkompilować
LVM-a na stałe do jądra, ale w niektórych
dystrybucjach znajdziemy go w posta-
ci modułu o nazwie dm-mod . Jeśli pole-
gamy na jądrze dystrybucyjnym, musimy
tylko załadować ten moduł. Powinniśmy
używać jąder z serii 2.6.x, gdyż w star-
szych, z serii 2.4.x, znajduje się poprzed-
nia generacja LVM-a, która posiada nieco
mniejsze możliwości.
Poza wsparciem w jądrze, potrzebu-
jemy również zestawu programów do
tworzenia i administracji LVM. Są one
z reguły w pakiecie o nazwie lvm2 ,
a nie w pakiecie lvm lub lvm01 , który jest
przeznaczony do współpracy ze starszy-
mi wersjami jądra. Używanie złej wersji
programów narzędziowych może ścią-
gnąć na nas nieoczekiwane problemy,
więc zwróćmy uwagę, czy mamy zainsta-
lowany właściwy i tylko właściwy pakiet.
Ponadto, musimy zainstalować wszyst-
kie biblioteki, od których jest on zależny
(zwłaszcza libdevmapper ).
Rysunek 5. Koniguracja naszych
urządzeń wymaga użycia poleceń,
działających z linii komend
physical volume (PV) – wolumin
fizyczny to po prostu dysk twardy lub
częściej partycja na dysku twardym,
ale może to być również urządzenie
programowego RAID-a;
volume group (VG) – grupa wolumi-
nów to jeden lub kilka woluminów
fizycznych (mamy z nią do czynienia
zawsze, nawet gdy posiadamy tylko
jeden PV);
logical volume (LV) – wolumin logicz-
ny (system widzi LV jako urządzenie
blokowe, więc jeśli stosujemy LVM-a,
system plików (np. ext3) zakładamy
nie na partycji, ale na LV; podobnie, w
systemie montujemy LV, a nie partycję;
na jednej grupie woluminów tworzy-
my jeden lub więcej LV);
physical extent (PE) i logical extent
(LE) – ekstenty fizyczny i logicz-
ny (dane na woluminach fizycznych
i logicznych dzielone są na mniejsze
jednostki, np. po 4 MB; wielkość PE
i LE są takie same).
disk 3: /dev/sdb9, 9775521kB,
raid superblock at 9775424kB
Tak utworzone urządzenie ma rozmiar
ok. 27 GB. Dlaczego? Musimy pomnożyć
rozmiar najmniejszej z użytych partycji
(9775521kB ~= 9GB) razy ilość dysków
i odjąć rozmiar jednej partycji, potrzeb-
nej na dane o parzystości, więc 9*4-
9=27.
Szybki test, przy pomocy komendy
dd i urządzenia /dev/zero , zajął na moim
systemie 20 sekund, więc RAID-5 działa
szybciej niż pojedynczy dysk, ale oczy-
wiście wolniej niż RAID-0.
Zapasowe dyski
Dla zwiększenia bezpieczeństwa macierzy
typu RAID-1 i RAID-5 (a także nieopisy-
wanych tutaj RAID-6 i RAID-10) możemy
wykorzystać dyski zapasowe ( spare disk ).
Taki dysk nie jest normalnie używany –
żadne dane nie są zapisywane ani odczy-
tywane z niego. W momencie, gdy jeden
z dysków zostanie uszkodzony, macierz
automatycznie odtworzy jego zawartość
na pierwszym, dostępnym spare disk .
Dzięki temu wyłączenie systemu w celu
wymiany uszkodzonych dysków może
zostać zaplanowane na znacznie później-
szy termin – możemy czekać nawet do
kolejnej awarii któregoś dysku i nie straci-
my żadnych danych.
Aby dodać do macierzy dysk zapaso-
wy, wystarczy do /etc/raidtab dopisać np.
takie linie:
Wybór urządzeń
Przy projektowaniu macierzy dyskowej
musieliśmy wybrać, na których party-
cjach jakich dysków zostanie ona utworzo-
na. LVM może korzystać z poszczególnych
Do działania LVM-a potrzebujemy w ją-
drze wsparcia dla Device mapper . Przy
konfiguracji jądra znajdziemy go w dziale
Listing 1. Przykładowy raport, generowany przez vgdisplay
--- Volume group ---
VG Name dyski_IDE
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 37,27 GB
PE Size 4,00 MB
Total PE 9540
Alloc PE / Size 0 / 0
Free PE / Size 9540 / 37,27 GB
VG UUID OEEclx-9gIP-Oqyl-R1cH-9tkK-Mlm7-rWW4xi
device /dev/sdd1
spare-disk 0
Tworzymy LVM-a
Logical Volume Manager sam w sobie nie
jest trudny do skonfigurowania. To co
odstrasza od niego wielu użytkowników,
to stosowana w nim terminologia. Zanim
64
styczeń 2005
439127159.029.png 439127159.030.png 439127159.031.png 439127159.032.png
 
Zgłoś jeśli naruszono regulamin