Ważne pojęcia:
LVM – Logical Volume Manager (Menadżer Woluminów Logicznych), jest to system zaawansowanego zarządzania przestrzenią dysku. Jest on o wiele bardziej elastyczny, niż klasyczne partycje dyskowe.
PV – Physical Volume (Woluminy fizyczny, partycja fizyczna), są bezpośrednio związane z partycjami na dyskach (np. /dev/hda1, /dev/sdb3), które możemy wykorzystać do utworzenia wirtualnych grup.
VG – Volume Group (Grupa woluminów, grupa partycji), składają się co najmniej z jednego PV, ich wielkość to suma wielkości wszystkich PV należących do danej grupy. Całkowite miejsce VG możemy dowolnie rozdzielać pomiędzy kolejne LV.
LV – Logical Volume (Wolumin logiczny, partycja logiczna), są obszarami dostępnymi dla systemu (podobnie jak standardowe partycje). LV są obszarami wydzielonymi z VG, zatem suma wielkości LV nie może przekraczać objętości VG, do którego należą.
LVM powinien być elementem naszego systemu. Jeśli jest inaczej wystarczy wydać z konsoli poniższą komendę:
root@server:/# apt-get install lvm2
Poniżej przykład użycia dysku 50GB, na którym utworzone są 2 partycje 20GB i 30GB jako magazynu LVM. Na bazie 2 partycji została utworzona wirtualna grupa 50GB. W grupie utworzono logiczne woluminy o rozmiarze odpowiednio: lv01 – 5GB i lv02 – 20GB. Wolny obszar jaki został do wykorzystania w wirtualne grupie to 25GB.
<- /dev/sdc ---------------- Fizyczny twardy dysk 50GB ------------------> <- /dev/sdc1 ---- PV 20GB ----><-- /dev/sdc2 -------- PV 30GB -----------> <- /dev/new_vg ---------------------- VG 50GB ---------------------------> <- /dev/new_vg/lv01 -LV 5GB -><- /dev/new_vg/lv02 -LV 20GB -><-Free 25GB->
Jeśli chcemy wykorzystać cały dysk (np. sdc) jako magazyn LVM dla fizycznego woluminu wydajemy poniższe polecenie:
root@server:/# pvcreate /dev/sdc
Wyświetlić woluminy fizyczne możemy poleceniem:
root@server:/# pvscan
Bardziej szczegółowe informacje o woluminach fizycznych uzyskamy wydając polecenie:
root@server:/# pvdisplay
Jeśli chcemy poznać dokładny rozmiar fizycznego woluminu, możemy użyć poniższego polecenia wpisując odpowiedni parametr:
m – megabajty
g – gigabajty
t – terabajty.
root@server:/# pvs --units m
Po utworzeniu fizycznych woluminów tworzymy wirtualną grupę o nazwie main poniższym poleceniem:
root@server:/# vgcreate main /dev/sdc
Wyświetlamy wirtualne grupy poleceniem:
root@server:/# vgdisplay
Jeśli chcemy poznać dokładny rozmiar wirtualnej grupy, możemy użyć poniższego polecenia wpisując odpowiedni parametr:
m – megabajty
g – gigabajty
t – terabajty.
root@server:/# vgs --units m
Rozszerzenie wirtualnej grupy o nowy dysk (wcześniej należy oczywiście dodać nowy dysk poleceniem pvcreate jak wyżej):
root@server:/# vgextend main /dev/sdd1
Po tych zabiegach możemy utworzyć logiczne woluminy w wirtualnej grupie main. Poniższym poleceniem utworzymy logiczny wolumin o rozmiarze 100GB, nazwie backup w wirtualnej grupie main:
root@server:/# lvcreate -L 100G -n backup main
Możemy też utworzyć logiczny wolumin wykorzystujący całą wolną powierzchnię w wirtualnej grupie main:
root@server:/# lvcreate -l 100%FREE -n backup main
Aby wyświetlić logiczne woluminy należy wydać polecenie:
root@server:/# lvdisplay
Jeśli chcemy poznać dokładny rozmiar logicznego woluminu, możemy użyć poniższego polecenia wpisując odpowiedni parametr:
m – megabajty
g – gigabajty
t – terabajty.
root@server:/# lvs --units m
Sformatować utworzony wolumin logiczny o nazwie backup możemy poniższym poleceniem:
root@server:/# mkfs.ext4 -m 0 /dev/main/backup
W celu utworzenia Logicznych partycji można użyć komendy pvcreate dla całego dysku /dev/sdc lub utworzyć partycje np. programem cfdisk (jak w przykładzie), a później komendą pvcreate utworzyć partycje, które mogą być wykorzystane do zbudowania Wirtualnej grupy.
root@server:/# pvcreate /dev/sdb1 root@server:/# pvcreate /dev/sdb2
wyświetlenie fizycznych partycji odpowiednio: wszystkich, dla sdc1 o sdc2
root@server:/# pvdisplay root@server:/# pvdisplay /dev/sdc1 root@server:/# pvdisplay /dev/sdc1
Zwiększenie rozmiaru logicznego woluminu o 40GB wykonamy poniższym poleceniem:
root@server:/# lvresize -L +40GB /dev/main/backup
root@server:/# lvextend -L +40GB /dev/main/backup
lub wykorzystując całą dostępną powierzchnię wirtualnej grupy:
root@server:/# lvextend -l +100%FREE /dev/main/backup
Zmiany nazwy logicznego woluminu dokonamy jednym z poniższych poleceń:
root@server:/# lvrename /dev/main/backup /dev/main/newname root@server:/# lvrename main backup newname
Odświeżyć informacje o utworzonych woluminach możemy poniższym poleceniem:
root@server:/# udevadm trigger
lub
root@server:/# vgscan --mknodes
Po zwiększeniu rozmiaru dysku, który zawiera partycje i dane, aby nowy rozmiar był widoczny dla systemu operacyjnego należy wykonać dodatkowe czynności. Jeśli na dysku jest tylko jedna partycja uruchamiamy kolejno:
uruchomić poniższe polecenia:
root@server:/# e2fsck -f /dev/main/backup root@server:/# resize2fs /dev/main/backup
Jeśli na dysku są inne partycje (np. swap) powinniśmy w pierwszej kolejności wykonać mapowanie partycji:
root@server:/# kpartx -av /dev/main/backup
otrzymamy wynik podobny do poniższego:
add map main-backupp1 (252:1): 0 7811072 linear 252:0 2048 add map main-backupp2 (252:2): 0 306759680 linear 252:0 7813120
Następnie jak poprzednio wykonujemy powyższe polecenia jednak tylko dla wybranej i wcześniej zmapowanej partycji:
root@server:/# e2fsck -f /dev/mapper/main-backupp2 root@server:/# resize2fs /dev/mapper/main-backupp2
Ostatnim krokiem jest usuniecie mapowania:
root@server:/# kpartx -d /dev/main/backup
Usunąć logiczny wolumin o nazwie backup z grupy main możemy poniższym poleceniem
root@server:/# lvremove /dev/main/backup
Jeżeli po wydaniu powyższego polecenia otrzymamy komunikat podobny do poniższego:
Logical volume main/backup is used by another device.
Rozwiązanie jest pod tym linkiem.
Utworzenie migawki dysku LVM (zachowanie stanu dysku na moment tworzenia migawki):
root@server:/# lvcreate -s -n backup_snap -L 20GB main/backup
Odtworzenie stanu dysku zachowanego w migawce (Uwaga: dysk backup nie może być zamontowany ani używany):
root@server:/# lvconvert --merge main/backup
Uwaga: po odtworzeniu dysku LVM z migawki jest ona automatycznie usuwana. Jeśli chcemy mieć w dalszym ciągu zachowany stan dysku LVM na dany moment, zaraz po jego odtworzeniu musimy utworzyć ponownie migawkę identycznie jak poprzednio.
Usunięcie migawki:
root@server:/# lvremove /dev/main/backup_snap
Dodatkowe parametry poleceń:
root@server:/# man vgdisplay root@server:/# man lvcreat
Dezaktywowanie wszystkie woluminów:
root@server:/# vgchange -a n
Aktywowanie wszystkich woluminów:
root@server:/# vgchange -a y
Uszkodzenia fizyczne możemy sprawdzić programem badblocks z pakietu e2fsprogs):
root@server:/# badblocks -s /dev/sda
Naprawa systemu plików:
root@server:/# fsck.ext2 root@server:/# fsck.reiserfs root@server:/# fsck.vfat root@server:/# fsck.jfs root@server:/# xfs_repair