LVM (Polski)
From Wikipedia:Logical Volume Manager (Linux):
- LVM is a logicznym menedżerem woluminów dla Linux kernel; zarządza dyskami i podobnymi urządzeniami pamięci masowej.
LVM Building Blocks
Logical Volume Management wykorzystuje jądro device-mapper funkcja zapewniająca system partycji niezależny od układu dysku. Za pomocą LVM można zarchiwizować pamięć i utworzyć "wirtualne partycje extending/shrinking łatwiejsze (z zastrzeżeniem potencjalnych ograniczeń systemu plików).
Wirtualne partycje umożliwiają dodawanie i usuwanie bez martwienia się o to, czy masz wystarczająco dużo sąsiadującej przestrzeni na danym dysku, oraz o złapanie fdiskowania używanego dysku (i zastanawiasz się, czy jądro używa starej lub nowej tabeli partycji), czy też przeniesienie innego przegródki na uboczu. Jest to rozwiązanie łatwe w zarządzaniu: LVM nie dodaje żadnych zabezpieczeń.
Basic building blocks of LVM:
- Physical volume (PV)
- Partycja na dysku twardym (lub nawet sam dysk lub plik sprzężenia zwrotnego), na którym można tworzyć grupy woluminów. Ma specjalny nagłówek i dzieli się na zakres fizyczny. Pomyśl o objętościach fizycznych jako dużych elementach konstrukcyjnych używanych do budowy dysku twardego.
- Volume group (VG)
- Grupa woluminów fizycznych używanych jako wolumin pamięci (jako jeden dysk). Zawierają woluminy logiczne. Pomyśl o grupach woluminów jako dyskach twardych.
- Logical volume (LV)
- Partycja wirtualna/logiczna, która znajduje się w grupie woluminów i składa się z obszarów fizycznych. Pomyśl o woluminach logicznych jako normalnych partycjach.
- Physical extent (PE)
- Najmniejszy rozmiar woluminu fizycznego, który można przypisać do woluminu logicznego (domyślnie 4 MiB). Pomyśl o rozmiarach fizycznych jako częściach dysków, które można przydzielić do dowolnej partycji.
Przykład:
Physical disks Disk1 (/dev/sda): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |Partition1 50 GiB (Physical volume) |Partition2 80 GiB (Physical volume) | |/dev/sda1 |/dev/sda2 | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | Disk2 (/dev/sdb): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |Partition1 120 GiB (Physical volume) | |/dev/sdb1 | |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM logical volumes Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1): _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |Logical volume1 15 GiB |Logical volume2 35 GiB |Logical volume3 200 GiB | |/dev/MyStorage/rootvol |/dev/MyStorage/homevol |/dev/MyStorage/mediavol | |_ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
Zalety
LVM zapewnia większą elastyczność niż zwykłe partycje dysku twardego:
- Użyj dowolnej liczby dysków jako jednego dużego dysku.
- Mieć woluminy logiczne rozciągnięte na kilku dyskach.
- Twórz małe woluminy logiczne i zmieniaj ich rozmiar "dynamicznie" w miarę zapełniania.
- Zmień wielkość woluminów logicznych, niezależnie od ich kolejności na dysku. Nie zależy od położenia LV w VG, nie ma potrzeby zapewnienia otaczającej dostępnej przestrzeni.
- Zmień rozmiar/utwórz/usuń logiczne i fizyczne woluminy online. Systemy plików na nich nadal wymagają zmiany rozmiaru, ale niektóre (takie jak ext4) obsługują zmianę rozmiaru online.
- Migracja online/na żywo LV używana przez usługi na różnych dyskach bez konieczności restartowania usług.
- Migawki umożliwiają tworzenie kopii zapasowej zamrożonej kopii systemu plików, przy jednoczesnym ograniczeniu przestojów serwisowych do minimum.
- Obsługa różnych urządzeń device-mapper, w tym przejrzyste szyfrowanie i buforowanie często używanych danych. Umożliwia to utworzenie systemu z (jednym lub więcej) dyskami fizycznymi (zaszyfrowanymi za pomocą LUKS) i LVM on top aby umożliwić łatwą zmianę rozmiaru i zarządzanie oddzielnymi woluminami (np
/
,/home
,/backup
, etc.) bez kłopotów z wielokrotnym wprowadzaniem klucza podczas startu.
Wady
- Dodatkowe kroki w konfiguracji systemu, bardziej skomplikowane.
- Jeśli masz podwójne uruchamianie, zwróć uwagę, że system Windows nie obsługuje LVM; nie będzie można uzyskać dostępu do żadnych partycji LVM z systemu Windows.
Instalowanie Arch Linux na LVM
Woluminy LVM powinieneś utworzyć między krokami partycjonowania dysków, a formatowania w procedurze instalacji. Zamiast bezpośrednio formatować partycję, która ma być głównym systemem plików, system plików zostanie utworzony wewnątrz woluminu logicznego (LV).
Upewnij się, że lvm2 pakiet jest zainstalowany.
Szybki przegląd:
- Utwórz partycję, która stanie się twoim woluminem fizycznym (PV).
- Jeśli używasz tabeli partycji Master Boot Record, ustaw opcję partition type ID na
8e
(typ partycjiLinux LVM
w fdisk). - Jeśli używasz tabeli partycji GUID, ustaw opcję partition type GUID do
E6D6D379-F507-44C2-A23C-238F2A3DF928
(typ partycjiLinux LVM
w fdisk i8e00
w gdisk).
- Jeśli używasz tabeli partycji Master Boot Record, ustaw opcję partition type ID na
- Utwórz swoje woluminy fizyczne (PV). Jeśli masz jeden dysk, najlepiej jest po prostu utworzyć jeden PV w jednej dużej partycji. Jeśli masz wiele dysków, możesz utworzyć partycje na każdym z nich i utworzyć PV na każdej partycji.
- Utwórz swoją grupę woluminów (VG) i dodaj do niej wszystkie PV.
- Utwórz woluminy logiczne (LVs) wewnątrz tego VG.
- Kontynuuj instalację (Installation guide#Format the partitions).
- Po przejściu do “Create initial ramdisk environment” w przewodniku instalacji, dodaj hak (hook)
lvm
do/etc/mkinitcpio.conf
(patrz poniżej, aby uzyskać szczegółowe informacje).
/boot
nie może znajdować się w LVM, gdy używa się programu ładującego, który nie obsługuje LVM; musisz utworzyć oddzielną partycję /boot
i sformatować ją bezpośrednio. Tylko GRUB jest znany z obsługi LVM.Utwórz partycje
Jeśli LVM musi być ustawiony na całym dysku, nie ma potrzeby tworzenia żadnych partycji.
W przeciwnym razie przed przystąpieniem do konfigurowania LVM podziel dysk według potrzeb.
Utwórz woluminy fizyczne
Aby wyświetlić listę wszystkich urządzeń, które można wykorzystać jako wolumin fizyczny:
# lvmdiskscan
Utwórz wolumin fizyczny na nich:
# pvcreate DEVICE
To polecenie tworzy nagłówek na każdym urządzeniu, dzięki czemu można go użyć do LVM. Jak określono w #LVM Building Blocks, DEVICE może być dyskiemk (na przykład /dev/sda
), partycja (np. /dev/sda2
) lub urządzenie loop back. Na przykład:
# pvcreate /dev/sda2
Możesz śledzić utworzone woluminy fizyczne za pomocą:
# pvdisplay
pvcreate --dataalignment 1m /dev/sda
(for erase block size < 1 MiB), patrz np. here
Utwórz grupę woluminów
Następnym krokiem jest utworzenie grupy woluminów na tym woluminie fizycznym.
Najpierw musisz utworzyć grupę woluminów na jednym z woluminów fizycznych:
# vgcreate <volume_group> <physical_volume>
Na przykład:
# vgcreate VolGroup00 /dev/sda2
Następnie dodaj do niego wszystkie inne woluminy fizyczne, które chcesz w nim umieścić:
# vgextend <volume_group> <physical_volume> # vgextend <volume_group> <another_physical_volume> # ...
Na przykład:
# vgextend VolGroup00 /dev/sdb1 # vgextend VolGroup00 /dev/sdc
Możesz śledzić, jak powiększa się grupa woluminów:
# vgdisplay
Utwórz PV i VG w jednym kroku
LVM umożliwia łączenie tworzenia grupy woluminów i woluminów fizycznych w jednym prostym kroku. Na przykład, aby utworzyć grupę VolGroup00 z trzema wymienionymi wyżej urządzeniami, możesz uruchomić:
# vgcreate VolGroup00 /dev/sda2 /dev/sdb1 /dev/sdc
To polecenie najpierw skonfiguruje trzy partycje jako woluminy fizyczne (jeśli to konieczne), a następnie utworzy grupę woluminów z trzema woluminami. Polecenie ostrzeże Cię, wykrywa istniejący system plików na dowolnym urządzeniu.
Utwórz woluminy logiczne
Teraz musimy utworzyć woluminy logiczne w tej grupie woluminów. Użytkownik tworzy wolumin logiczny za pomocą następnego polecenia, podając nazwę nowego woluminu logicznego, jego rozmiar i grupę woluminów, na której będzie on działał:
# lvcreate -L <size> <volume_group> -n <logical_volume>
Na przykład:
# lvcreate -L 10G VolGroup00 -n lvolhome
Spowoduje to utworzenie woluminu logicznego, do którego można uzyskać dostęp później /dev/mapper/Volgroup00-lvolhome
lub /dev/VolGroup00/lvolhome
. Podobnie jak w przypadku grup woluminów, podczas tworzenia możesz użyć dowolnej nazwy dla woluminu logicznego.
Można także określić jeden lub więcej woluminów fizycznych, aby ograniczyć miejsce, w którym LVM przydziela dane. Na przykład możesz utworzyć wolumin logiczny dla głównego systemu plików na małym dysku SSD i wolumin domowy na wolniejszym dysku mechanicznym. Wystarczy dodać urządzenia, na których znajdują się woluminy fizyczne, do wiersza poleceń, na przykład:
# lvcreate -L 10G VolGroup00 -n lvolhome /dev/sdc1
Jeśli chcesz wypełnić całe wolne miejsce w grupie woluminów, użyj następnego polecenia:
# lvcreate -l 100%FREE <volume_group> -n <logical_volume>
Możesz śledzić utworzone woluminy logiczne za pomocą:
# lvdisplay
modprobe dm_mod'
) aby powyższe polecenia odniosły sukces.Twórzenie systemów plików i montowanie woluminów logicznych
Twoje woluminy logiczne powinny teraz znajdować się w /dev/mapper/
i /dev/YourVolumeGroupName
. Jeśli nie możesz ich znaleźć, użyj kolejnych poleceń, aby wywołać moduł do tworzenia węzłów urządzeń i udostępnić grupy woluminów:
# modprobe dm_mod # vgscan # vgchange -ay
Teraz możesz tworzyć systemy plików na woluminach logicznych i montować je jak normalne partycje (jeśli instalujesz Arch Linuksa, zajrzyj do montowania partycji po dodatkowe szczegóły):
# mkfs.<fstype> /dev/mapper/<volume_group>-<logical_volume> # mount /dev/mapper/<volume_group>-<logical_volume> /<mountpoint>
Na przykład:
# mkfs.ext4 /dev/mapper/VolGroup00-lvolhome # mount /dev/mapper/VolGroup00-lvolhome /home
/dev/mapper/Volgroup00-lvolhome
). Nie wybieraj rzeczywistych partycji, na których zostały utworzone woluminy logiczne (nie używaj: /dev/sda2
).Skonfiguruj mkinitcpio
W przypadku, gdy twój główny system plików jest na LVM, będziesz musiał włączyć odpowiednie haki (hook) mkinitcpio, inaczej twój system może się nie uruchomić. Włącz:
-
udev
ilvm2
dla domyślnych initramfs opartych na busybox -
systemd
isd-lvm2
dla initramfs opartych na systemd
udev
jest tam domyślnie. Edytuj plik i wstaw lvm2
pomiędzy block
i filesystems
jak na przykład:
/etc/mkinitcpio.conf
HOOKS=(base udev ... block lvm2 filesystems)
Dla initramfs opartych na systemd:
/etc/mkinitcpio.conf
HOOKS=(base systemd ... block sd-lvm2 filesystems)
Następnie możesz kontynuować normalną instrukcę instalacji: utwórz początkowy ramdysk
- Haki
lvm2
isd-lvm2
są instalowane przez lvm2, nie mkinitcpio. Jeśli uruchamiasz mkinitcpio w arch-chroot dla nowej instalacji, lvm2 musi być zainstalowany wewnątrz arch-chroot dla mkinitcpio, aby znaleźćlvm2
lubsd-lvm2
hak. Jeśli lvm2 istnieje tylko poza arch-chroot, mkinitcpio wyświetliError: Hook 'lvm2' cannot be found
. - Jeśli twój główny system plików jest na LVM RAID, zobacz #Skonfiguruj mkinitcpio dla RAID.
Opcje jądra
Jeśli główny system plików znajduje się w woluminie logicznym, to root=
parametr jądra musi być wskazany na zmapowane urządzenie, np /dev/mapper/vg-name-lv-name
.
Volume operations
Zaawansowane opcje
Jeśli potrzebujesz monitorowania (potrzebne do migawek), możesz włączyć
lvmetad. Dla tego zestawu use_lvmetad = 1
w /etc/lvm/lvm.conf
.
To jest teraz domyślne.
Możesz ograniczyć woluminy, które są aktywowane automatycznie, ustawiając auto_activation_volume_list
w /etc/lvm/lvm.conf
. W razie wątpliwości pozostaw tę opcję wykomentowaną.
Zmienianie wielkości woluminów
woluminów fizycznych
Po wydłużeniu lub zmniejszeniu rozmiaru urządzenia, które ma fizyczną objętość, musisz zwiększyć lub zmniejszyć PV za pomocą pvresize
.
Growing
Aby rozwinąć PV na /dev/sda1
po powiększeniu partycji, uruchom:
# pvresize /dev/sda1
To automatycznie wykryje nowy rozmiar urządzenia i rozszerzy PV do maksimum.
Shrinking
Aby zmniejszyć wolumin fizyczny przed zmniejszeniem jego podstawowego urządzenia, dodaj --setphysicalvolumesize size
parametry do polecenia, np.:
# pvresize --setphysicalvolumesize 40G /dev/sda1
Powyższe polecenie może pozostawić Ci ten błąd:
/dev/sda1: cannot resize to 25599 extents as later ones are allocated. 0 physical volume(s) resized / 1 physical volume(s) not resized
Indeed pvresize
will refuse to shrink a PV if it has allocated extents after where its new end would be. One needs to run pvmove beforehand to relocate these elsewhere in the volume group if there is sufficient free space.
Move physical extents
Przed przeniesieniem wolnych zakresów do końca woluminu należy uruchomić pvdisplay -v -m
aby zobaczyć fizyczne segmenty. W poniższym przykładzie istnieje jeden wolumin fizyczny włączony /dev/sdd1
, jedna grupa woluminów vg1
i jeden wolumin logiczny backup
.
# pvdisplay -v -m
Finding all volume groups. Using physical volume(s) on command line. --- Physical volume --- PV Name /dev/sdd1 VG Name vg1 PV Size 1.52 TiB / not usable 1.97 MiB Allocatable yes PE Size 4.00 MiB Total PE 399669 Free PE 153600 Allocated PE 246069 PV UUID MR9J0X-zQB4-wi3k-EnaV-5ksf-hN1P-Jkm5mW --- Physical Segments --- Physical extent 0 to 153600: FREE Physical extent 153601 to 307199: Logical volume /dev/vg1/backup Logical extents 1 to 153599 Physical extent 307200 to 307200: FREE Physical extent 307201 to 399668: Logical volume /dev/vg1/backup Logical extents 153601 to 246068
Przestrzeń wolną można podzielić na wolumen. Aby zmniejszyć objętość fizyczną, musimy najpierw przenieść wszystkie używane segmenty na początek.
Tutaj pierwszy wolny segment ma od 0 do 153600 i pozostawia nam 153601 wolnych zakresów. Możemy teraz przenieść ten numer segmentu z ostatniego zakresu fizycznego do pierwszego zakresu. Polecenie będzie zatem:
# pvmove --alloc anywhere /dev/sdd1:307201-399668 /dev/sdd1:0-92466
/dev/sdd1: Moved: 0.1 % /dev/sdd1: Moved: 0.2 % ... /dev/sdd1: Moved: 99.9 % /dev/sdd1: Moved: 100,0%
- to polecenie przenosi 92468 PE (399668-307200) z ostatniego segmentu do pierwszego segmentu. Jest to możliwe, ponieważ pierwszy segment obejmuje 153600 wolnych PE, które mogą zawierać przesunięte PE-92467.
- opcja
--alloc anywhere
jest używana podczas przenoszenia PE wewnątrz tej samej partycji. W przypadku różnych partycji polecenie wyglądałoby mniej więcej tak:# pvmove /dev/sdb1:1000-1999 /dev/sdc1:0-999
- to polecenie może zająć dużo czasu (od jednej do dwóch godzin) w przypadku dużych woluminów. Dobrym pomysłem może być uruchomienie tego polecenia w sesji Tmux lub GNU Screen. Każde niechciane zatrzymanie procesu może być śmiertelne.
- po zakończeniu operacji uruchom program fsck, aby upewnić się, że system plików jest prawidłowy.
Zmień rozmiar woluminu fizycznego
Gdy wszystkie wolne fizyczne segmenty będą w ostatnim fizycznym zakresie, uruchom vgdisplay
i zobacz swój wolny PE.
Następnie możesz teraz ponownie uruchomić polecenie:
# pvresize --setphysicalvolumesize size PhysicalVolume
Zobacz wynik:
# pvs
PV VG Fmt Attr PSize PFree /dev/sdd1 vg1 lvm2 a-- 1t 500g
Zmień rozmiar partycji
Na koniec, musisz zmniejszyć partycję za pomocą ulubionego narzędzia do partycjonowania.
Logical volumes
lvextend
i lvreduce
pozwalając jednocześnie na wykonywanie obu typów operacji. Niezależnie od tego, wszystkie te narzędzia oferują -r
/--resizefs
opcja, która pozwala na zmianę rozmiaru systemu plików wraz z LV za pomocą fsadm(8) (ext2, ext3, ext4, ReiserFS and XFS supported). Dlatego może być łatwiej po prostu użyć lvresize
dla obu operacji i użyć --resizefs
aby trochę uprościć, chyba że masz określone potrzeby lub chcesz mieć pełną kontrolę nad procesem.Growing or shrinking with lvresize
Rozszerz wolumin logiczny lv1 w grupie woluminów vg1 o 2 GiB bez dotykania jego systemu plików:
# lvresize -L +2G vg1/lv1
Zmniejsz rozmiar vg1/lv1
o 500 MB bez zmiany rozmiaru systemu plików
# lvresize -L -500M vg1/lv1
Ustaw vg1/lv1
na 15 GiB i zmień jednocześnie rozmiar systemu plików:
# lvresize -L 15G -r vg1/lv1
Jeśli chcesz wypełnić całe wolne miejsce w grupie woluminów, użyj następującego polecenia:
# lvresize -l +100%FREE vg/lv
Zobacz lvresize(8) dla bardziej szczegółowych opcji.
Rozszerzanie woluminu logicznego i systemu plików za jednym razem
Rozszerz domyslny wolumin logiczny w grupie woluminów o 10 GiB
# lvresize -L +10G /dev/volume-group/home --resizefs
Alternatywnie z systemem plików XFS
# lvextend -L+10G /dev/volume-group/home # xfs_growfs /home
Uwaga: xfs_growfs pobiera argument montowania jako argument. Zobacz xfs_growfs(8) dla bardziej szczegółowych opcji.
Zmiana rozmiaru systemu plików oddzielnie
Jeśli nie używasz -r
/--resizefs
opcja do lvresize
, lvextend
lub lvreduce
, lub przy użyciu systemu plików nieobsługiwanego przez fsadm(8) (np. Btrfs, ZFS), musisz ręcznie zmienić rozmiar systemu plików przed zmniejszeniem LV lub po jego rozszerzeniu.
Na przykład w systemie plików ext2/ext3/ext4:
# resize2fs vg/lv
rozszerzy FS do maksymalnego rozmiaru bazowego LV, podczas gdy
# resize2fs -M vg/lv
zmniejszy go do swojego minimalnego rozmiaru. Aby zmienić rozmiar na określony rozmiar, użyj:
# resize2fs vg/lv NewSize
Remove logical volume
Najpierw sprawdź nazwę woluminu logicznego, który chcesz usunąć. Możesz uzyskać listę wszystkich woluminów logicznych za pomocą:
# lvs
Następnie wyszukaj punkt montowania wybranego woluminu logicznego:
$ lsblk
Następnie odmontuj system plików na woluminie logicznym:
# umount /<mountpoint>
Na koniec usuń wolumin logiczny:
# lvremove <volume_group>/<logical_volume>
Na przykład:
# lvremove VolGroup00/lvolhome
Potwierdź, wpisując y
.
Zaktualizuj /etc/fstab
, jeśli to konieczne.
Możesz zweryfikować usunięcie woluminu logicznego, wpisując ponownie lvs
jako root (patrz pierwszy krok tej sekcji).
Dodaj wolumin fizyczny do grupy woluminów
Najpierw utwórz nowy wolumin fizyczny na urządzeniu blokowym, którego chcesz użyć, a następnie rozszerz swoją grupę woluminów
# pvcreate /dev/sdb1 # vgextend VolGroup00 /dev/sdb1
To oczywiście zwiększy całkowitą liczbę fizycznych elementów w grupie woluminów, które mogą być przydzielane przez woluminy logiczne według własnego uznania.
8e
dla MBR i 8e00
dla partycji GPT.Usuń partycję z grupy woluminów
Jeśli utworzyłeś wolumin logiczny na partycji, usuń go najpierw.
Wszystkie dane na tej partycji muszą zostać przeniesione na inną partycję. Na szczęście LVM ułatwia to:
# pvmove /dev/sdb1
Jeśli chcesz mieć dane na określonej objętości fizycznej, określ ją jako drugi argument dla pvmove
:
# pvmove /dev/sdb1 /dev/sdf1
Następnie należy usunąć wolumin fizyczny z grupy woluminów:
# vgreduce myVg /dev/sdb1
Lub usuń wszystkie puste woluminy fizyczne:
# vgreduce --all vg0
I na koniec, jeśli chcesz użyć partycji na coś innego i chcesz uniknąć LVM myśląc, że partycja jest woluminem fizycznym:
# pvremove /dev/sdb1
Dezaktywuj grupę woluminów
Po prostu wywołaj
# vgchange -a n my_volume_group
Spowoduje to dezaktywację grupy woluminów i umożliwi odmontowanie kontenera, w którym jest przechowywany.
Typy woluminów logicznych
Oprócz prostych woluminów logicznych LVM obsługuje migawki, buforowanie woluminów logicznych, woluminy logiczne o cienkich wersjach i macierze RAID.
Migawki
LVM pozwala wykonać migawkę systemu w znacznie bardziej wydajny sposób niż tradycyjne kopie zapasowe. Robi to skutecznie, stosując zasady COW (copy-on-write). Początkowa migawka zawiera po prostu twarde linki do i-węzłów rzeczywistych danych. Dopóki dane pozostają niezmienione, migawka zawiera jedynie wskaźniki i-węzłów, a nie same dane. Ilekroć modyfikujesz plik lub katalog, na który wskazuje migawka, LVM automatycznie klonuje dane, starą kopię, do której odwołuje się migawka, oraz nową kopię, do której odwołuje się Twój aktywny system. W ten sposób można wykonać migawkę systemu z 35 GiB danych przy użyciu zaledwie 2 GiB wolnej przestrzeni, o ile zmodyfikowano mniej niż 2 GiB (zarówno na oryginale, jak i na migawce). Aby móc tworzyć migawki, musisz mieć nieprzydzielone miejsce w grupie woluminów. Migawka, jak każdy inny wolumen, zajmie miejsce w grupie woluminów. Tak więc, jeśli zamierzasz używać migawek do tworzenia kopii zapasowej partycji root, nie przydzielaj 100% grupy woluminów dla woluminu logicznego root.
Konfiguracja
Buforowanie woluminów logicznych tworzy się podobnie jak normalne.
# lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv
Przy takim woluminie można zmodyfikować mniej niż 100 MB danych, zanim objętość migawki się zapełni.
Przywracanie zmodyfikowanego woluminu logicznego "pv" do stanu po zrobieniu migawki "snap01" można wykonać za pomocą
# lvconvert --merge /dev/mapper/vg0-snap01
W przypadku, gdy początkowy wolumin logiczny jest aktywny, scalanie nastąpi przy następnym ponownym uruchomieniu. (Scalanie można wykonać nawet z LiveCD)
Migawka nie będzie już istnieć po scaleniu.
Można również wykonać wiele migawek i każdy z nich można dowolnie łączyć z początkowym woluminem logicznym.
Migawkę można zamontować i zarchiwizować za pomocą narzędzia dd lub tar. Rozmiar pliku kopii zapasowej wykonanego przy pomocy dd będzie wielkości plików znajdujących się na woluminie migawki. Aby przywrócić, po prostu utwórz migawkę, zamontuj ją i napisz lub wyodrębnij do niej kopię zapasową, a następnie scal ją z punktem początkowym.
Migawki są używane przede wszystkim do zapewnienia zamrożonej kopii systemu plików do tworzenia kopii zapasowych; wykonanie kopii zapasowej trwającej dwie godziny zapewnia bardziej spójny obraz systemu plików niż bezpośrednie tworzenie kopii zapasowej partycji.
Zobacz Create root filesystem snapshots with LVM do automatyzacji tworzenia czystych migawek systemu plików root podczas uruchamiania systemu w celu tworzenia kopii zapasowych i przywracania.
dm-crypt/Encrypting an entire system#LVM on LUKS i dm-crypt/Encrypting an entire system#LUKS on LVM.
Jeśli masz woluminy LVM nie aktywowane przez initramfs, enable lvm-monitoring.service
, który jest dostarczany przez lvm2 pakiet.
LVM cache
From lvmcache(7):
- Typ woluminu logicznego w pamięci podręcznej wykorzystuje mały i szybki LV, aby poprawić wydajność dużego i wolnego LV. Czyni to poprzez przechowywanie często używanych bloków na szybszym LV. LVM odnosi się do małego szybkiego LV jako puli pamięci podręcznej LV. Duża wolna LV nazywana jest początkową LV. Ze względu na wymagania z pamięci podręcznej dm (sterownik jądra), LVM dalej dzieli pulę pamięci podręcznej LV na dwa urządzenia - dane LH pamięci podręcznej i LV pamięci podręcznej. Dane Lache pamięci podręcznej to miejsca, w których kopie bloków danych są przechowywane od punktu początkowego LV w celu zwiększenia prędkości. Metadane pamięci podręcznej LV przechowuje informacje rozliczeniowe, które określają miejsce przechowywania bloków danych (np. W punkcie początkowym LV lub w danych Lache pamięci podręcznej). Użytkownicy powinni być zaznajomieni z tymi LV, jeśli chcą stworzyć najlepsze i najbardziej odporne buforowane woluminy logiczne. Wszystkie te powiązane LV muszą znajdować się w tym samym VG.
Create cache
Szybka metoda polega na utworzeniu PV (jeśli to konieczne) na szybkim dysku i dodaniu go do istniejącej grupy woluminów:
# vgextend dataVG /dev/sdx
Utwórz pulę pamięci podręcznej z automatycznymi metadanymi na sdb i przekonwertuj istniejący wolumin logiczny (dataLV) na wolumin w pamięci podręcznej, a wszystko to w jednym kroku:
# lvcreate --type cache --cachemode writethrough -L 20G -n dataLV_cachepool dataVG/dataLV /dev/sdx
Oczywiście, jeśli chcesz, aby pamięć podręczna była większa, możesz zmienić parametr -L
na inny rozmiar.
-
writethrough
zapewnia, że wszelkie zapisane dane będą przechowywane zarówno w puli pamięci podręcznej LV, jak i w punkcie początkowym LV. Utrata urządzenia związanego z pulą pamięci podręcznej LV w tym przypadku nie oznacza utraty jakichkolwiek danych; -
writeback
zapewnia lepszą wydajność, ale kosztem większego ryzyka utraty danych w przypadku awarii dysku używanego do buforowania.
Jeśli określony --cachemode
nie jest wskazany, system przyjmie writethrough
wartość domyśln
Usuń pamięć podręczną
Jeśli kiedykolwiek zajdzie potrzeba cofnięcia operacji tworzenia o jeden krok powyżej:
# lvconvert --uncache dataVG/dataLV
Spowoduje to zatwierdzenie wszystkich oczekujących zapisów w pamięci podręcznej z powrotem do początkowego LV, a następnie usunięcie pamięci podręcznej. Inne opcje są dostępne i opisane w lvmcache(7).
RAID
From lvmraid(7):
- lvm(8) RAID is a way to create a Logical Volume (LV) that uses multiple physical devices to improve performance or tolerate device failures. In LVM, the physical devices are Physical Volumes (PVs) in a single Volume Group (VG).
LVM RAID supports RAID 0, RAID 1, RAID 4, RAID 5, RAID 6 and RAID 10. See Wikipedia:Standard RAID levels for details on each level.
Konfiguracja RAID
Utwórz woluminy fizyczne:
# pvcreate /dev/sda2 /dev/sdb2
Utwórz grupę woluminów na woluminach fizycznych:
# vgcreate VolGroup00 /dev/sda2 /dev/sdb2
Utwórz woluminy logiczne za pomocą lvcreate --type raidlevel
, Zobacz lvmraid(7) i lvcreate(8) aby uzyskać więcej opcji
# lvcreate --type RaidLevel [OPTIONS] -n Name -L Size VG [PVs]
Na przykład:
# lvcreate --type raid1 --mirrors 1 -L 20G -n myraid1vol VolGroup00 /dev/sda2 /dev/sdb2
utworzy wolumin logiczny o rozmiarze 20 GiB o nazwie "myraid1vol" w VolGroup00 na /dev/sda2
i /dev/sdb2
.
Skonfiguruj mkinitcpio dla RAID
Jeśli twój rootowy system plików znajduje się na LVM RAID dodatkowo do haków lvm2
lub sd-lvm2
, musisz dodać moduł dm-raid
i odpowiednie moduły RAID (np. raid0
, raid1
, raid10
i / lub raid456
) do tablicy MODULES w pliku mkinitcpio.conf
.
Dla initramfs opartych na busybox
/etc/mkinitcpio.conf
MODULES=(dm-raid raid0 raid1 raid10 raid456) HOOKS=(base udev ... block lvm2 filesystems)
Dla initramfs opartych na systemd:
/etc/mkinitcpio.conf
MODULES=(dm-raid raid0 raid1 raid10 raid456) HOOKS=(base systemd ... block sd-lvm2 filesystems)
Graficzna konfiguracja
Nie ma "oficjalnego" narzędzia GUI do zarządzania woluminami LVM, ale system-config-lvmAUR[broken link: package not found] obejmuje większość typowych operacji i zapewnia proste wizualizacje stanu woluminu. Może automatycznie zmieniać rozmiar wielu systemów plików podczas zmiany rozmiaru woluminów logicznych.
Rozwiązywanie problemów
Zmiany, które mogą być wymagane ze względu na zmiany w domyślnych ustawieniach Arch-Linux
Parametr use_lvmetad = 1
musi być ustawiony w pliku /etc/lvm/lvm.conf
. To jest teraz domyślne - jeśli masz plik lvm.conf.pacnew
, musisz scalić tę zmianę.
Komendy LVM nie działają
- Załaduj odpowiedni moduł:
# modprobe dm_mod
Moduł dm_mod
powinien zostać załadowany automatycznie. Jeśli nie, możesz spróbować:
/etc/mkinitcpio.conf
MODULES=(dm_mod ...)
Będziesz musiał zregenerować initramfs, aby zatwierdzić wprowadzone zmiany.
- Wypróbuj wcześniejsze polecenia za pomocą lvm:
# lvm pvdisplay
Woluminy logiczne się nie wyświetlają
Jeśli próbujesz zamontować istniejące woluminy logiczne, ale nie pojawiają się one w programie lvscan
, możesz użyć następujących poleceń, aby je aktywować:
# vgscan # vgchange -ay
LVM na nośnikach wymiennych
Objawy
# vgscan
Reading all physical volumes. This may take a while... /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836585984: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 319836643328: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 0: Input/output error /dev/backupdrive1/backup: read failed after 0 of 4096 at 4096: Input/output error Found volume group "backupdrive1" using metadata type lvm2 Found volume group "networkdrive" using metadata type lvm2
Przyczyna:
- Usuwanie zewnętrznego napędu LVM bez uprzedniej dezaktywacji grup woluminów. Zanim się rozłączysz, upewnij się, że:
# vgchange -an volume group name
Naprawiono: zakładając, że próbowałeś już aktywować grupę woluminów za pomocą vgchange -ay vg
, i otrzymujesz błędy Input/output:
# vgchange -an volume group name
Odłącz dysk zewnętrzny i poczekaj kilka minut:
# vgscan # vgchange -ay volume group name
Zmiana rozmiaru sąsiedniego woluminu logicznego kończy się niepowodzeniem
W przypadku próby rozszerzenia błędów woluminu logicznego za pomocą:
" Insufficient suitable contiguous allocatable extents for logical volume "
Powodem jest to, że wolumin logiczny został utworzony z wyraźną, ciągłą polityką alokacji (opcje -C y
lub --alloc contiguous
) i brak sąsiadujących sąsiednich zakresów (Zobacz też reference).
Aby to naprawić, przed rozszerzeniem woluminu logicznego zmień jego strategię alokacji za pomocą polecenia lvchange lvchange --alloc inherit <logical_volume>
. Jeśli chcesz zachować politykę alokacji przyległej, alternatywnym podejściem jest przeniesienie woluminu na obszar dysku z wystarczającymi swobodnymi zakresami (Zobacz [1]).
Polecenie "grub-mkconfig" zgłasza błędy "unknown filesystem" errors
Pamiętaj, aby wcześniej usunąć woluminy migawek generating grub.cfg.
Thinly-provisioned root volume device times out
Przy dużej liczbie migawek, thin_check
działa przez wystarczająco długi czas, aby wyczekiwać na przekroczenie limitu czasu roota. Aby to zrekompensować, dodaj parametr startowy rootdelay=60
jądra do konfiguracji programu ładującego.
Opóźnienie przy wyłączaniu
Jeśli używasz RAID, migawek lub alokacji i masz opóźnienie przy wyłączaniu, upewnij się, że uruchomiono lvm2-monitor.service
. Zobacz FS#50420.
Zobacz też
- LVM2 Resource Page on SourceWare.org
- LVM article at Gentoo wiki
- Ubuntu LVM Guide Part 1Part 2 detals snapshots
- Red Hat: Logical Volume Manager Administration