Czy tak działają migawki LVM?

19

Próbuję dowiedzieć się, jak działają migawki LVM, aby móc je zaimplementować na moim serwerze plików, ale mam trudności ze znalezieniem w Google czegoś, co wyjaśnia, jak to działa, zamiast używania go w podstawowym systemie kopii zapasowych.

Z tego, co przeczytałem, myślę, że działa to mniej więcej tak:

  • Masz LVM z partycją podstawową i dużą ilością nieprzydzielonego wolnego miejsca poza partycją
  • Następnie wykonaj migawkę i zamontuj ją na nowym woluminie logicznym. Migawki powinny mieć zmiany, więc ta pierwsza migawka byłaby całą kopią, prawda?
  • Następnego dnia robisz kolejną migawkę (rozmiar partycji nie musi być tak duży) i montujesz.
  • W jakiś sposób LVM śledzi migawki i nie przechowuje niezmienionych bitów w głównym woluminie.
  • Następnie decydujesz, że masz wystarczająco dużo migawek i pozbywasz się pierwszego. Nie mam pojęcia, jak to działa ani jak wpłynie to na następną migawkę.

Czy ktoś może mnie poprawić, gdy się mylę. W najlepszym razie zgaduję, że nie mogę nic znaleźć w Google.


vgdiplay

obu1: / home / jail / home / qps / backup / D # vgdisplay
  --- Grupa woluminów ---
  Nazwa serwera plików VGLVM
  ID systemu
  Sformatuj lvm2
  Obszary metadanych 1
  Sekwencja metadanych nr 3
  VG Access odczyt / zapis
  Status VG można zmienić
  MAX LV 0
  Cur LV 2
  Otwórz LV 2
  Max PV 0
  Cur PV 1
  Akt PV 1
  Rozmiar VG 931,51 GB
  Rozmiar PE 4,00 MB
  Ogółem PE 238467
  Alloc PE / Rozmiar 238336 / 931,00 GB
  Darmowy PE / Rozmiar 131 / 524,00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU
Malfist
źródło

Odpowiedzi:

30

Nie chcesz rzucić okiem na sekcję migawek LVM-HOWTO ?

Migawki LVM są podstawowym rozwiązaniem migawkowym „kopiuj przy zapisie”. Migawka jest tak naprawdę niczym innym jak proszeniem LVM o „wskazanie” bieżącego stanu systemu plików i zapisanie zmian dokonanych po migawce w wyznaczonym obszarze.

Migawki LVM „na żywo” w grupie woluminów hostującej wolumin objęty migawką - nie inny wolumin. Twoje stwierdzenie „... dużo nieprzydzielonego wolnego miejsca, nie partycja” sprawia, że ​​brzmi to tak, jakbyś myślał, że migawki „na żywo” poza grupą woluminów podlegają migawce, i to nie jest dokładne. Twoja grupa woluminów mieszka na partycji dysku twardego, a wolumin podlega migawce i wszelkim zdjęciom migawkowym, które wykonałeś na żywo w tej grupie woluminów.

Zwykłym sposobem używania migawek LVM nie jest przechowywanie długoterminowe, ale raczej uzyskanie spójnego „obrazu” systemu plików, aby można było wykonać kopię zapasową. Po utworzeniu kopii zapasowej migawka jest odrzucana.

Podczas tworzenia migawki LVM wyznacza się miejsce do przechowywania wszelkich zmian wprowadzonych podczas działania migawki. Jeśli wprowadzonych zostanie więcej zmian, niż wyznaczone miejsce na migawkę, stanie się bezużyteczne i musi zostać odrzucone. Nie chcesz pozostawiać migawek, ponieważ (a) wypełnią się i staną się bezużyteczne, oraz (b) wpłynie na wydajność systemu, gdy migawka jest aktywna - wszystko staje się wolniejsze.

Edytować:

Usługi kopiowania woluminów w tle i migawek LVM firmy Microsoft nie różnią się zbytnio. Rozwiązanie Microsoftu jest nieco bardziej kompleksowe (jak to zwykle ma miejsce w przypadku Microsoftu - na lepsze lub na gorsze ich narzędzia i produkty często starają się rozwiązać dość duże problemy zamiast koncentrować się na jednej rzeczy).

VSS to bardziej kompleksowe rozwiązanie, które ujednolica obsługę urządzeń sprzętowych obsługujących migawki i migawki programowe w jednym interfejsie API. Ponadto VSS ma interfejsy API, które pozwalają aplikacjom na wyciszenie za pomocą interfejsów API migawek, podczas gdy migawki LVM dotyczą tylko migawek - wszelkie aplikacje wygaszające stanowią problem (przenoszenie baz danych do stanów „tworzenia kopii zapasowych” itp.).

Evan Anderson
źródło
1
Więc to nie jest tak naprawdę modelowane po Volume Shadow Copy (VSS), ponieważ nie tak działa VSS?
Malfist
Ma to o wiele większy sens.
Malfist
1
Myślę, że nieco nie rozumiesz migawek LVM. Migawki LVM tworzą „wirtualne” urządzenia montowane jak autonomiczne woluminy, ale tak naprawdę nie są „partycjami”. Migawki LVM „żyją” w wolumenie będącym przedmiotem migawki, podobnie jak migawki VSS.
Evan Anderson
1
Czy możesz wyjaśnić, dokąd trafiają zaktualizowane dane, gdy migawka jest aktywna? do głównej LV, a migawka przechowuje kopię starego bloku? lub do migawkowego LV, podczas gdy główny LV pozostaje nietknięty?
Benoît
1
@ benoit link w pierwszym wierszu odpowiedzi obejmuje to. Przeczytaj notatkę o zachowaniu migawek LVM1 tylko do odczytu i myślę, że otrzymasz odpowiedź. (To pierwsze podejście, które opisujesz, a nie drugie.)
Peter Hansen
28

Migawki LVM są przykładem rozwiązania migawkowego kopiowania przy zapisie, jak powiedział Evan. Jego działanie różni się nieco od sugerowanego przez Evana, ale nie za bardzo.

Gdy masz wolumin LVM bez migawek, zapisywanie w woluminie odbywa się zgodnie z oczekiwaniami. Blok się zmienia i to wszystko.

Po utworzeniu migawki LVM tworzy pulę bloków. Pula ta zawiera również pełną kopię metadanych LVM woluminu. Gdy do woluminu głównego, na przykład podczas aktualizowania i-węzła, dochodzi do zapisu, zastępowany blok jest kopiowany do nowej puli, a nowy blok jest zapisywany w głównym woluminie. To jest „kopiowanie przy zapisie”. Z tego powodu im więcej danych ulega zmianie między momentem wykonania migawki a bieżącym stanem woluminu głównego, tym więcej miejsca zajmie ta pula migawek.

Po zamontowaniu migawki metadane zapisane podczas wykonywania migawki umożliwiają mapowanie bloków puli migawek na zmienione bloki w woluminie (lub migawce wyższego poziomu). W ten sposób, gdy przychodzi dostęp do określonego bloku, LVM wie, który dostęp do bloku. Jeśli chodzi o system plików na tym woluminie, nie ma migawek.

James wskazał na jedną z wad tego systemu. Jeśli masz wiele migawek tego samego woluminu, za każdym razem, gdy piszesz do bloku w woluminie głównym, potencjalnie wyzwalasz zapis w każdej pojedynczej migawce. Jest tak, ponieważ każda migawka utrzymuje własną pulę zmienionych bloków. Ponadto w przypadku długich drzew migawek dostęp do migawki może spowodować sporo obliczeń na serwerze, aby dowiedzieć się, który dokładnie blok należy obsłużyć w celu uzyskania dostępu.

Kiedy pozbywasz się migawki, LVM po prostu upuszcza pulę migawek i aktualizuje drzewo migawek w razie potrzeby. Jeśli upuszczona migawka jest częścią drzewa migawek, niektóre bloki zostaną skopiowane do migawki niższego poziomu. Jeśli jest to najniższa migawka (lub jedyna), pula jest po prostu upuszczana, a operacja jest bardzo szybka.


Niektóre systemy plików oferują migawki wewnątrz systemu plików, ZFS i BTRFS to tylko dwa z bardziej znanych. Działają podobnie, chociaż sam system plików zarządza zmienionym / niezmienionym odwzorowaniem. Jest to prawdopodobnie lepszy sposób na zrobienie tego, ponieważ można sprawdzić spójność całej rodziny migawek, czego nie można zrobić z prostym LVM.

sysadmin1138
źródło
Dziękuję za to szczegółowe wyjaśnienie. Przepraszam, że jestem zdezorientowany: „Jeśli chodzi o system plików na tym woluminie, nie ma migawek”. Czy możesz wyjaśnić więcej na temat tego, co to znaczy? Bardzo dziękuję za każdą odpowiedź ~
Carr
2
@ Carr Oznacza to, że migawki są obsługiwane całkowicie poza systemem plików. Inne systemy plików, które mają wbudowaną funkcję migawek, takie jak BTRFS i XFS, mają pojęcie migawek i nie powinieneś używać migawek LVM w tych systemach.
sysadmin1138
@ sysadmin1138 Jestem ciekawy wbudowanych migawek z XFS, o których wspomniałeś, w celu sprawdzenia spójności / naprawy FS. Mam XFS FS z wieloma TB, który uległ awarii i chcę go sprawdzić / naprawić, bez przełączania go w tryb offline (setki użytkowników, nie mogą przejść do trybu offline przez wiele godzin). Zastanawiam się nad utworzeniem migawki XFS, a następnie uruchomieniem na niej fsck, aby znaleźć / naprawić błędy, gdy system plików na żywo jest utrzymywany w trybie online, a następnie, jeśli dokonano poprawki, zamień na system plików na żywo. Czy migawka XFS byłaby lepsza do tego celu niż migawka LVM?
Ján Lalinský
2

Nie określasz, czy korzystasz z systemu Linux, czy HP-UX. W HP-UX tworzysz wolumin logiczny i montujesz go jako migawkę innego woluminu logicznego. W systemie Linux tworzysz wolumin logiczny jako wolumin migawki.

Usuwanie migawki w systemie HP-UX odbywa się przez podłączenie woluminu; w Linuksie odbywa się to za pomocą lvremove do usunięcia woluminu logicznego.

W każdym razie zmiany są jedyną rzeczą przechowywaną w migawce. Im dłużej migawka pozostaje dostępna, tym więcej zmian gromadzi - i istnieje szansa, że ​​zapełni się ona, jeśli nie będzie odpowiednio zwymiarowana lub zwolniona.

Szybkość dostępu do dysku na woluminie migawkowym jest wolniejsza niż na normalnym woluminie; musisz to wziąć pod uwagę.

Mei
źródło
1

Migawki LVM są nieefektywne, im więcej migawek, tym wolniej będzie działał system.

Obsługuję tylko xfs, ponieważ używamy tego, a xfs_freeze może służyć do zatrzymania nowego dostępu do systemu plików i utworzenia stabilnego obrazu na dysku.

Funkcja Kopiuj przy zapisie jest używana, więc miejsce na dysku jest efektywnie wykorzystywane.

Utworzono system plików w woluminie logicznym, który ma wolne miejsce na migawki.

To jest przykład z FAQ

James
źródło