Narzędzia użytkownika

Narzędzia witryny


materialy:podstawy-administracji:lvm

Logical Volume Manager

Wstęp

LVM - zarządca woluminów logicznych - zapewnia kilka kluczowych i wygodnych funkcjonalności w zakresie obsługi przestrzenią dyskową:

  • pozwala na budowanie dużych, wirtualnych partycji (partycji logicznych) opartych o wiele fizycznych dysków lub partycji różnych wielkości;
  • pozwala na powiększanie partycji logicznej on-line;
  • pozwala na wykonanie migawek (ang. snapshot) partycji logicznych (możliwość powrotu stanu partycji do momentu wykonania migawki, możliwość zapewnienia konsystentnego backupu).

Aby korzystać z LVM w systemie musi być zainstalowane oprogramowanie do jego obsługi. W większości obecnych dystrybucji znajduje się ono w pakiecie lvm2 i jest najczęściej instalowane wraz z instalacją systemu operacyjnego.

Trzy warstwy LVM

Architektura LVM oparta jest o trzy warstwy:

  • fizyczne, ang. physical volumes - do zarządzania służą wszystkie komendy pv…, np. pvscan
  • grupy, ang. volume group - komendy vg…, np. vgrename
  • logiczna, ang. logical volumes - komendy lv…, np lvcreate

Warstwa fizyczna odpowiada za zarządzanie (w tym definiowanie) dysków lub partycji z których będą tworzone grupy woluminów.

Warstwa volume group odpowiada za zarządzanie (tworzenie, rozszerzanie itp.) kontenerów woluminów utworzonych z jednego lub więcej woluminów fizycznych. Jeden physical volume może być składnikiem jednej volume group.

Warstwa logiczna jest odpowiedzialna za zarządzanie (tworzenie, kasowanie, rozszerzanie) logicznych woluminów/partycji - logical volume w ramach określonej grupy woluminów. Logical volume jest tym elementem LVM który później może być formatowany i montowany do struktury katalogów systemu.

Studium przypadku

Aby zademonstrować działanie LVM poniżej przedstawiono kilka kluczowych przypadków konfiguracji i wykorzystania LVM w praktyce.

Utworzenie ciągłej przestrzeni dyskowej z dwóch, różnej wielkości dysków

Celem demonstracji jest przygotowanie ciągłej przestrzeni o pojemności 12GB z dwóch dysków, sformatowanie jej w systemie plików ext4 oraz podmonotwanie do katalogu /media/itmz/

  • /dev/sdb o pojemności 4GB
  • /dev/sdc o pojemności 8GB

Czy w systemie istnieją dyski sdb i sdc i jakiej pojemności:

ls /dev/sd[bc]
fdisk -l /dev/sd[bc]

Utworzenie physical volume z dysków sdb i sdc:

pvcreate /dev/sdb
pvcreate /dev/sdc

Sprawdzenie, czy LVM widzi nowo utworzone woluminy fizyczne i o jakiej pojemności:

pvscan

Utworzenie volume group o nazwie vgitmz z dwóch woluminów fizycznych:

vgcreate vgitmz /dev/sdb /dev/sdc

Sprawdzenie, czy LVM widzi volume group o nazwie vgitmz i o jakiej pojemności:

vgs

Utworzenie partycji logicznej - logical volume o nazwie lvitmz, pojemności bliskiej 12GB w grupie vgitmz:

lvcreate --size 11,99G --name lvitmz vgitmz

Sprawdzenie, czy partycja została utworzona:

lvscan
ls -l /dev/vgitmz/

Formatowanie partycji:

mkfs.ext4 /dev/vgitmz/lvitmz

Utworzenie punktu montowania i zamontowanie partycji do katalogu:

mkdir /media/itmz
mount /dev/vgitmz/lvitmz /media/itmz/
mount | grep itmz

Sprawdzenie wolnej przestrzeni na partycji logicznej:

df -h /media/itmz

Jeśli partycja miałaby być montowana automatycznie po starcie systemu należałoby dokonać odpowiednich wpisów do pliku /etc/fstab, na przykład:

echo /dev/vgitmz/lvitmz /media/itmz ext4 defaults 0 0 >> /etc/fstab

Aby zademonstrować, że jest to przestrzeń jednorodnie ciągła z punktu widzenia systemu plików a LVM zajmuje się transparetnie obsługą dużych plików można utworzyć w katalogu /media/itmz plik o pojemności 10GB pamiętając, że volume group był utworzony z dysków o pojemności 8GB i 4GB.

dd if=/dev/zero of=/media/itmz/plik10GB bs=1G count=10
ls -lh /media/itmz/plik10GB
df -h /media/itmz

Powiększenie przestrzeni partycji on-line

Pożądaną funkcjonalnością LVM jest możliwość powiększania partycji logicznej on-line bez konieczności odmontowania systemu plików od katalogu. System plików który został utworzony na logicznej partycji musi również posiadać funkcjonalność powiększania przestrzeni on-line. Obecnie funkcję tą wspierają najpopularniejsze systemy plików w systemie Linux - ext3, ext4 oraz xfs.

Celem tej demonstracji będzie powiększenie wolnej przestrzeni na /media/itmz poprzez powiększenie logicznej partycji. Aby udostępnić więcej przestrzeni dla LVM do systemu dołączono kolejny dysk twardy o pojemności 12GB /dev/sdd z założonymi już 2 partycjami o pojemności 2GB /dev/sdd1 i 10GB /dev/sdd2. Na partycji /dev/sdd1 istnieją dane, które nie mogą być usunięte, ale /dev/sdd2 może przeznaczyć całkowicie na LVM.

Aby udowodnić, że w trakcie powiększania przestrzeni na partycji system plików może być zamontowany cały czas w trybie rw i operacje na partycji mogą być wykonywane można uruchomić komendę, która będzie dopisywała informacje do pliku na tej partycji.

ping localhost > /media/itmz/ping.test.out &

W osobnym terminalu można podejrzeć powiększający się plik:

tail -f /media/itmz/ping.test.out

Wyświetlenie listy partycji na dysku /dev/sdd za pomocą narzędzia gdisk:

gdisk -l /dev/sdd

Oznaczenie partycji /dev/sdd2 jako physical volume dla LVM:

pvcreate /dev/sdd2

Sprawdzenie, czy LVM widzi nowo utworzony wolumin fizyczny i o jakiej pojemności:

pvscan

Poszerzenie volume group o nazwie vgitmz - dodanie partycji /dev/sdd1 do grupy woluminów:

vgextend vgitmz /dev/sdd2

Sprawdzenie, czy LVM widzi powiększoną volume group vgitmz (wynik komendy powinien pokazać, że na vgitmz jest 10GB wolnej przestrzeni):

vgs

Sprawdzenie obecnej wolnej przestrzeni na zamontowanej partycji:

df -h /media/itmz/

Powiększenie partycji logicznej lvitmz o 3GB:

lvextend --size +3G /dev/vgitmz/lvitmz

Powiększenie systemu plików na partycji logicznej:

fsadm resize /dev/vgitmz/lvitmz

Ponowne sprawdzenie obecnej wolnej przestrzeni na zamontowanej partycji:

df -h /media/itmz/

Sprawdzenie ile wolnej przestrzeni pozostało na volume group vgitmz:

vgs

Snapshot LVM - tworzenie migawki logicznej partycji

W celach demonstracyjnych warto uruchomić proces zapisujący w sposób ciągły dane na dysku logicznym:

ping localhost > /media/itmz/ping.test.out &

W osobnym terminalu można podejrzeć powiększający się plik:

tail -f /media/itmz/ping.test.out

Aby utworzyć migawkę (ang. snapshot) partycji lvitmz o wielkości 1GB i nazwie lvitmzsnapshot:

lvcreate --snapshot --size=1G -n lvitmzsnapshot /dev/vgitmz/lvitmz

Rozmiar migawki należy dobrać odpowiednio do rozmiaru danych, które zostaną zapisane na partycji logicznej lvitmz podczas życia miagawki.

Po utworzeniu migawki użytkownicy i system mogą korzystać nadal z zasobu /media/itmz/ jak do tej pory. Administrator może natomiast podmontować samą migawkę do osobnego katalogu:

mkdir /media/itmz-snapshot
mount /dev/vgitmz/lvitmzsnapshot /media/itmz-snapshot

Proszę zwrócić uwagę, że zawartość katalogu /media/itmz-snapshot odzwierciedla stan plików w momencie utworzenia migawki (lvcreate –snapshot) i nie zmienia się w czasie mimo, że do pliku /media/itmz/ping.test.out cały czas są dopisywane dane.

Backup na migawce, usunięcie migawki

Na zamontowanym katalogu /media/itmz-snasphot można wykonać backup. Administrator będzie miał pewność wykonania backupu wszystkich plików z partycji z określonego momentu w czasie (zapewnienie konsystencji backupu). Po wykonaniu backupu snapshot należy usunąć:

lvremove /dev/vgitmz/lvitmzsnapshot

Przywrócenie stanu dysku z momentu wykonania migawki

Snapshot czasami jest wykonywany po to, aby przywrócić stan zawartości partycji z momentu wykonania migawki. W takim przypadku należy odmontować obie partycje logiczne - oryginalną i snapshot, następnie dokonać konwersji:

umount /media/itmz
umount /media/itmz-snapshot
lvconvert --merge /dev/vgitmz/lvitmzsnapshot

Po zakończeniu pomyślnym operacji można ponownie montować /dev/vgitmz/lvitmz do katalogu /media/itmz. Będzie on odzwierciedlał stan plików z momentu wykonania snapshotu:

mount /dev/vgitmz/lvitmz /media/itmz

Lista podstawowych komend LVM

  • Operacje na woluminach fizycznych (physical volumes):
    • pvs - physical volumes - raport o woluminach fizycznych
    • pvscan - physicial volume scan - skanowanie fizycznych partycji i generowanie raportu (podobnego do pvs)
    • pvdisplay - physical volume display - więcej informacji o fizycznych woluminach
    • pvcreate - physical volume create - tworzenie woluminów fizycznych z fizycznych partycji lub całych dysków
    • pvremove - physical volume remove - usuwanie woluminów fizycznych
    • pvck - physical volume check - sprawdzenie metadanych woluminów fizycznych
    • pvchange - physical volume change - zestaw narzędzi do zmiany atrybutów woluminu
    • pvmove - physical volume move - narzędzie do przesuwania danych z fizycznego woluminu na inny wolumin fizyczny w ramach tej samej volume grupy - narzędzie przydatne, gdy chcemy odłączyć od wolume grupy fizyczny wolumin (np. z powodu jego uszkodzenia)
    • pvresize - physical volume resize - zmiana rozmiaru woluminu fizycznego
  • Operacje na grupach woluminów (volume groups):
    • vgs - volume groups - raport o woluminach grup
    • vgscan - volume group scan - skanowanie wszystkich volume group i generowanie raportu podobnego do vgs
    • vgdisplay - volume group display - więcej informacji o volume grupach
    • vgcreate - volume group create - tworzenie volume grupy
    • vgremove - volume group remove - usuwanie volume grupy
    • vgrename - volume group rename - zmiana nazwy volume grupy
    • vgchange - volume group change - zmiana parametrów volume grupy
    • vgextend - volume group extend - powiększenie volume grupy o dodatkowy wolumin fizyczny
    • vgreduce - volume group reduce - odłączenie określonego woluminu fizycznego od volume grupy (wcześniej należy wykonać pvmove, aby wolumin fizyczny był pusty)
    • vgcfgbackup - volume group config backup - wykonanie backupu metadanych określonej lub wszystkich volumegroup
    • vgmerge - volume group merge - połączenie kilku volume group w jeden
    • vgsplit - volume group split - podział jednej volume grupy na dwie
  • Operacje na logicznych voluminach/partycjach (logical volumes):
    • lvs - logical volume - raport o logicznych partycjach
    • lvscan - volume group scan - skanowanie wszystkich logicznych partycji i generowanie raportu podobnego do lvs
    • lvdisplay - logical volume display - więcej informacji o logicznych partycjach
    • lvcreate - logical volume create - tworzenie logicznej partycji
    • lvremove - logical volume remove - usuwanie logicznej partycji
    • lvrename - logical volume rename - zmiana nazwy logicznej partycji
    • lvchange - logical volume change - zmiana parametrów logicznej partycji
    • lvextend - logical volume extend - powiększenie logicznej partycji
    • lvreduce - logical volume reduce - pomniejszenie logicznej partycji
    • lvresize - logical volume resize - zmiana rozmiaru logicznej partycji (obsługuje obie poprzednie funkcjonalności)
materialy/podstawy-administracji/lvm.txt · ostatnio zmienione: 2014/11/02 18:31 przez mzalewski

(C) 2017 ITMZ Mariusz Zalewski