logo
 
 

Witamy w Art-Info

Nasza firma powstała w 1993 roku, to już całkiem sporo lat współpracy z Państwem na naszym rynku. Zajmujemy się kompleksową obsługą z zakresu szeroko pojętej informatyki małych, średnich jak i dużych przedsiębiorstw. Nasze usługi świadczone są na najwyższym możliwym poziomie. Dysponujemy wykwalifikowaną kadrą, zapewniającą naszym klientom poczucie bezpieczeństwa, fachowe wsparcie oraz konsulting. Możemy być dumni, że pozyskaliśmy Państwa zaufanie i kontynuujemy dalszą współpracę na bazie solidności i rzetelności wykonywanych usług.

 

LVM - zarządzanie

Kopia artykułu znaleionego w internecie:

 

LVM

by XANi on Dec.27, 2008, under Arty, Linux

Jak ustawić LVM, jak robić snapshoty oraz automatycznie powiększać LV, czyli małe howto +tips n’ tricks

1. Co to jest i do czego służy

LVM (Logical Volume Manager) pozwala na grupowanie urządzeń w wirtualne Volume Group (VG, nie lubię polskich tłumaczeń ;p) z których potem można tworzyć Logical Volume (LV) czyli taki wirtualny odpowiednik partycji dyskowych.

1.1 No dobra, ale po co mi coś takiego ?

LV różnią się od fizycznych partycji tym że po pierwsze, jeden LV może rozciągać się po paru fizycznych dyskach, oprócz tego obsługuje zmianę rozmiaru w locie, wiec jeżeli kiedyś zabraknie Ci miejsca możesz po prostu dorzucic drugi dysk, dodać go do VG i powiększyć LV o dodatkowe miejsce.

1.2 Czym to się różni od RAID i dlaczego nie uzyć RAID zamiast tego

RAID Pozwala na zgrupowanie dyskót tak żeby były widziane przez system jako jeden, ale nie pozwala na takie rzeczy jak zmienianie rozmiaru partycji w locie, snapshoting (wiecej o tym pozniej) czy zwiekszanie rozmiaru dostepnego storage.

Opórcz tego RAID świętnie współgra z LVM, wystarczy użyć RAID-u jako bazę do LVMowego VG i można cieszyć się bezpiecznym i elastycznym storage.

2. Ok, chce mieć u siebie LVM, jak zacząć ?

Pokażę to sposób instalacji i konfiguracji LVM pod debianem, pod innymi distro powinno to wygladać podobnie, po dokładniejsze instrukcje instalacji zapraszam do LVM HOWTO

2.1 Instalacja niezbędnego softu

Narzędzia userspace:

aptitude install lvm2 reiserfsprogs

Kernel:

W kernelu musisz mieć włączone (zalecam wkompilowane w kernel):

Device Drivers -> Multiple devices driver support (RAID and LVM) -> Device mapper support
[*] Snapshot target
[*] Mirror target
[*] DM uevents

2.1 Mój pierwszy LVM

Na początku musimy przygotować partycje pod LVM:

pvcreate /dev/sdc1

Następnie tworzymy nowy VG:

vgcreate vg0 /dev/sdc1

Mozna podac pare PV (Physical volume) przy tworzeniu, nalezy tylko pamietac o zainicjowaniu ich przez pvcreate

Teraz mozemy juz utworzyc pierwszy LV

lvcreate -n muzyka -L 10G /dev/vg0

Tworzy nam LV o nazwie muzyka w LV testvg o rozmiarze 10G
Urządzenie które reprezentuje ten LV to /dev/mapper/testvg-muzyka (na marginesie debian tworzy tez /dev/testvg/muzyka nie wiem jak inne distro) wiec teraz mozemy stworzyć i zamontować partycje:

mkreiserfs /dev/mapper/vg0-muzyka
mount
/dev/mapper/vg0-muzyka /var/music

Analogocznie można tworzyć dodatkowe LV. Polecam reiserfs z powodu tego ze mozna go latwo resizowac w locie ;].

2.2 Zabrakło mi miejsca na jakimś LVM, co robić ?

Możesz zwiększyć wielkość LV i systemu plików na nim. Najpierw sprawdź czy masz miejsce na VG:

vgdisplay vg0
— Volume group —
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 152
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 180,25 GB
PE Size 128,00 MB
Total PE 1442
Alloc PE / Size 504 / 63,00 GB
Free PE / Size 938 / 117,25 GB
VG UUID WNqUPq-g2×2-BMwg-83Pq-D26a-XpYV-qTZNAF

Jak widac mamy jeszcze troche wolnego miejsca. Teraz tylko

lvresize -L +10G /dev/mapper/vg0-muzyka
resize_reiserfs -s +10G /dev/mapper/vg0-muzyka

i voila, mamy wiecej miejsca na nasze MP3 ;]

2.3 Cool ale mój dysk jest pełen, jak dodać nowe urządzenie do LVM?

pvcreate /dev/sdd
vgextend vg0 /dev/sdd

I tyle. Teraz tylko powiększyć twoje LV.

3 Zaawansowane zastosowania

3.1 Snapshot

Zacznę może od końca. Wyobraź sobie że masz do zrobienia backup jakiegoś dużego “czegoś”. Nieważne czy to strona, czy jakiś fileshare, masz 50GB do zbackupowania. Nis prostrzego, piszesz jakiś skrypt lub używasz jakiegoś softu typu Bacula, 2h i backup zrobiony. Jest tylko jeden problem.

Pliki zmieniają się podczas backupowania. Jakiś soft zmienia wlasnie coś w pierwszej części pliku podczas gdy program wlaśnie backupuje drugą cześć tego pliku i w rezultacie plik się popsuł. Jak temu zaradzić ?

Snapshot w LVM jest to obraz systemu plików z danego momentu. Jak to działa ? Przydzielasz snapshotowi powiedzmy 15GB i dopóki na LV-matce nie zmieni się 15GB (przy czym wielokrotne zmieny w tym samym miejscu dysku liczone sa jako jedna zmiana) to snapshot bedzie pokazywał stan z danego czasu

Działa to tak że od zrobienia snapshotu każdy zapis na LV-matce powoduje to że stara zawartość kopiowana jest na LV-snapshot.

Co to nam daje ? To że można zrobić snapshot np. bazy danych (chociaż lepszą opcją jest backupowanie bazy przez zrobienie jej dumpa na dysk) o 23:20, potem odpalic na nim backup i ma się pewność że przez najbliższe 30 min podczas robienia backupu nic sie na tym nie zmieni, tworząc działający backup

Ułatwia też np. takie rzeczy jak testowanie nowych appów, czy updatów. Tworzymy snapshot naszego appa, potem robimy upgrade na snapshocie, sprawdzamy czy działa, usuwamy snapshot.

No to jak to zrobić ?

lvcreate -s –n snapmusik -L 10G /dev/vg0/muzyka
mount /dev/mapper/vg0-snapmusik /mnt/mirror

I tyle. Należy tylko pamietać ze do dziala do 10G zmian na dysku, oczywiście rozmiar można odpowiedni zwiększyć/

Usuwanie:

umount /dev/mapper/vg0-snapmusik
lvremove /dev/mapper/vg0-snapmusik

I teraz uwaga. LV z podłączonym snapshotem będzie miał obniżoną wydajność podczas zapisu.
Dlaczego ? Ponieważ gdy app chce zapisać np. blok nr. 2697 to LVM musi:
1.Odczytać ten blok z oryginalnego LV
2.Zapisać go w mirrorze (żeby mieć jego starą wersję w snapshocie)
3.Zapisać go w oryginale.
Gdy app po raz drugi będzie chciała blok 2697 to LVM już nie będzie tego robić ponieważ ma już starą wersję na snapshocie, ale przy pierwszym zapisie jest dość duży overhead

3.2 Mirroring

Czyli jak zrobić prosty RAID 1

przy tworzeniu LV przy pomocy lvcreate, dodać
-m 1
przy czym “1″ to liczba dodatkowych kopii czyli np “-m 3” zapisze w sumie w 4 miejscach (oryginał + 4 kopie)
Oczywiście musimy mieć odpowiednią ilość PV (dysk./part. fizycznych) w VG. UWAGA! LVM nie rozróżnia czy PV dodane do VG są na tym samym dysku czy różnym wiec raczej należy się trzymać zasady “1 dysk – 1 PV”

3.3 Stripping (czyli mini RAID0)

Nie, nie striptiz, striping polega na rozdzieleniu jednego LV na parę dysków fizycznych, taki prosty RAIDzik0.
Dodaj przy tworzeniu LV do lvcreate:
-i 2
I raid0 gotowy. numer określa (oczywiście) na ile należy podzielić.
Dodaj:
-I 128
żeby ustalić wielkość bloku (tylko potęgi dwójki).

4.Auto-resize

No dobra wypatrywanie kiedy się skończy miejsce na dysku i potem klepanie komend z konsoli nie jest zbyt ciekawym sposobem spędziania czasu ;] Napisałem malutki program w perlu robiący to za nas:

http://devrandom.pl/wp-content/uploads/2008/12/lvautoresize.tar.gz

kopiujemy plik lvautoresize.conf do /etc/ i odpalamy program, wczyta on dane z configa, popatrzy na systemy plików i powiękrszy co trzeba. Za wszelkie spsucia przez ten program nie odpowiadam ;] Plik konfiguracyjny jest w XMLu, wszystkie dane w MBajtach. Proponuje dodać ten programik do crona, co godzinę;]. Potrafi też pisać to sysloga (jako “lvautosize”), podstawowe info, co zwiekszył i czy zakonczyło się to sukcesem

Edit: przeniesiono w inne mejsce ;]