Migawki LVM jako strategia tworzenia kopii zapasowych


17

Jak opłacalna jako strategia tworzenia kopii zapasowych byłyby okresowe migawki LVM xen domU? Plusy, minusy, jakieś problemy?

Wydaje mi się, że to idealne rozwiązanie do szybkiego, bezmózgiego przywracania. Każde dochodzenie może mieć miejsce na uszkodzonym woluminie logicznym, a domU z powodzeniem działa bez zakłóceń.

EDYTOWAĆ:

Oto gdzie jestem teraz, kiedy wykonuję pełne kopie zapasowe systemu.

  • migawka lvm dysku domU
  • nowy wolumin logiczny, którego rozmiar jest równy rozmiarowi migawki.
  • dd if = / dev / snapshot of = / dev / new_lv
  • pozbywanie się migawki za pomocą lvremove
  • opcjonalna weryfikacja za pomocą kpartx / mount / ls

Teraz muszę to zautomatyzować.

Odpowiedzi:


32

Migawki LVM mają na celu przechwycenie systemu plików w stanie zawieszenia. Nie mają one stanowić kopii zapasowej same w sobie. Są one jednak przydatne do uzyskiwania spójnych obrazów kopii zapasowych, ponieważ zamrożony obraz nie może i nie zmieni się podczas procesu tworzenia kopii zapasowej. Chociaż nie będziesz ich używać bezpośrednio do tworzenia długoterminowych kopii zapasowych, będą one miały wielką wartość w każdym procesie tworzenia kopii zapasowej, którego zdecydujesz się użyć.

Istnieje kilka kroków do wdrożenia migawki. Po pierwsze, należy przydzielić nowy wolumin logiczny. Celem tego woluminu jest zapewnienie obszaru, w którym zapisywane są delty (zmiany) w systemie plików. Dzięki temu oryginalny wolumin może być kontynuowany bez zakłócania istniejącego dostępu do odczytu / zapisu. Wadą tego jest to, że obszar migawki ma skończony rozmiar, co oznacza, że ​​w systemie z zajętym zapisem może dość szybko się zapełnić. W przypadku woluminów, które mają znaczną aktywność zapisu, należy zwiększyć rozmiar migawki, aby zapewnić wystarczającą ilość miejsca do zarejestrowania wszystkich zmian. Jeśli twoja migawka przepełni się (zapełni), zarówno migawka zostanie zatrzymana i oznaczona jako nieużyteczna. W takim przypadku należy zwolnić migawkę, aby można było przywrócić oryginalny wolumin z powrotem do trybu online. Po zakończeniu wydania „

Drugą rzeczą, która się dzieje, jest to, że LVM „zamienia” prawdziwe cele omawianych tomów. Można by pomyśleć, że nowo przydzielona migawka będzie miejscem, w którym można szukać zmian w systemie plików, w końcu to tam będą wszystkie zapisy, prawda? Nie, jest na odwrót. Systemy plików są montowane do nazw woluminów LVM , więc zamiana nazwy spod reszty systemu byłaby nie-nie (ponieważ migawka używa innej nazwy). Więc rozwiązanie jest proste: Jeśli dostęp do oryginalnej nazwy głośności, będzie nadal odnosić się do żywego (odczyt / zapis) wersji objętości zrobiłeś migawkę. Utworzony wolumin migawki będzie odnosił się do zamrożonego(tylko do odczytu) wersja woluminu, którego kopię zapasową chcesz utworzyć. Na początku trochę mylące, ale będzie miało sens.

Wszystko to dzieje się w mniej niż 2 sekundy. Reszta systemu nawet tego nie zauważa. Chyba że oczywiście nie zwolnisz migawki przed jej przepełnieniem ...

W pewnym momencie będziesz chciał zwolnić migawkę, aby odzyskać zajmowane miejsce. Po zakończeniu wydania wolumin migawki jest zwalniany z powrotem do woluminu, a oryginał pozostaje.

Nie polecam realizowania tego jako długoterminowej strategii tworzenia kopii zapasowych. Nadal przechowujesz dane na tym samym dysku fizycznym, który może ulec awarii, a odzyskiwanie systemu plików z dysku, który uległ awarii, w ogóle nie jest kopią zapasową.

Krótko mówiąc:

  • Migawki są przydatne do tworzenia kopii zapasowych
  • Migawki same w sobie nie stanowią formy kopii zapasowej
  • Migawki nie trwają wiecznie
  • Pełna migawka nie jest dobrą rzeczą
  • Migawki muszą być w pewnym momencie udostępnione
  • LVM jest twoim przyjacielem, jeśli używasz go mądrze.

4
Również wydajność migawek LVM zmniejsza się liniowo - 8 migawek 8 razy więcej niż we / wy.
Steven,

9
W twoim opisie jest kilka punktów, które moim zdaniem są nieprawidłowe. W aktualnych wersjach LVM, jeśli migawka zapełni się, jest po prostu oznaczana jako nieużywalna i musi zostać usunięta. Wejścia / wyjścia w urządzeniu nie zostają zatrzymane. Po drugie, po usunięciu migawki żadne dane nie są kopiowane z powrotem do oryginalnego woluminu. Zasadniczo, kiedy piszesz do woluminu na żywo, oryginalne bloki są najpierw kopiowane do migawki, a następnie bloki na żywo są aktualizowane. Następnie po upuszczeniu migawki wystarczy usunąć wpis z mapowania urządzenia. Kopiowanie nie jest wymagane.
Kamil Kisiel

2
W trosce o kompletność Kamil Kisiel ma rację. Zobacz: tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html
ktower

1
Po dużo narzekania na siebie za to, że jestem źle poinformowany, odpowiedź została zmodyfikowana na podstawie wielu źródeł dokumentacji i dyskusji. Przepraszam, mój zły.
Avery Payne,

10

Migawki LVM doskonale nadają się do tworzenia kopii zapasowych serwera bez przełączania go w tryb offline. Jak stwierdzono, migawki LVM są niemal natychmiastowymi kopiami. Tworzysz je za pomocą lvcreatepolecenia tak, jak chcesz stworzyć LV, tyle że dajesz mu --snapshotopcję i oryginalny LV zamiast VG. Na przykład:

lvcreate -L <LV size> -s -n <snapshot name> /dev/<VG name>/<LV name>

Spowoduje to utworzenie migawki danego LV z określoną nazwą migawki, którą można następnie zamontować i użyć tej migawki LV do wykonania kopii zapasowej bez obawy o aktywne używanie plików. Jest to szczególnie przydatne, jeśli próbujesz wykonać kopię zapasową aktywnego serwera bazy danych.

Po zakończeniu tworzenia kopii zapasowej z migawki należy ją usunąć, aby zmniejszyć wszelkie dodatkowe koszty we / wy lub inne problemy z wydajnością, o których wspominali inni:

lvremove /dev/<VG name>/<snapshot name>

Podczas gdy migawki LVM mogą być nieocenione przy tworzeniu niezawodnych kopii zapasowych systemów takich jak bazy danych i takie, że normalnie chcesz zamknąć kopię zapasową, aby uniknąć rywalizacji o pliki, nie są one idealne do długotrwałej pracy jako szybkie przywracanie.


9

To nie jest dobry pomysł, IMO.

Migawki są implementowane w sposób kopiowania przy zapisie, dzięki czemu każdy zapis staje się odczytem i dwoma zapisami (blok, który aktualizujesz, jest najpierw czytany z woluminu głównego i zapisywany w woluminie migawki przed umieszczeniem nowych danych w jego miejsce), więc zobaczysz pewien spadek wydajności, jeśli dużo pisania jest powszechne na maszynach wirtualnych.

Również IIRC, jeśli wolumin migawki zapełni się, jest po prostu bezceremonialnie upuszczany. Nie jest to dobre do celów tworzenia kopii zapasowych! Jeśli więc spróbujesz wykonać to jako metodę tworzenia kopii zapasowych, upewnij się, że wolumin migawki jest wystarczająco duży, aby obsłużyć wszystkie zmiany, które pojawią się w okresie użytkowania migawki. Oczywiście, jeśli zdajesz sobie sprawę i monitorujesz problem z rozmiarem, a problem z wydajnością nie stanowi dla ciebie problemu, to co sugerujesz, może być przydatnym dodatkiem do innych procesów tworzenia kopii zapasowych, które masz.

Migawki LVM są bardzo przydatne jako część procesu tworzenia kopii zapasowej (robienie migawki, tworzenie kopii zapasowej migawki w innym miejscu, aby zapewnić spójność kopii zapasowej bez konieczności wyłączania aktualizacji „rzeczywistego” wolumenu, upuszczanie migawki później), między innymi, ale same w sobie nie są przeznaczone do tworzenia kopii zapasowych.


Może nie rozumiem, jak działają migawki. Podręcznik mówi, że migawka jest niemal natychmiastową kopią woluminu logicznego, co pozwala uniknąć konieczności przełączania systemu, który używa go w tryb offline. Z twojego opisu wydaje się, że migawka to raczej gałąź, replika, a nie zamrożona kopia. Czy migawka jest aktualizowana o wszystkie zmiany wprowadzone w oryginalnym systemie po jej wykonaniu? Jeśli tak, muszę natychmiast usunąć z niego dane i zniszczyć migawkę, ponieważ nie jest to mechanizm przechowywania kopii zapasowych? Dzięki!
Karolis T.

2
Jest to zamrożona kopia woluminu, z którego został utworzony, ale zawiera tylko bloki, które zmieniły się od czasu wykonania migawki (stąd objętość migawki może być znacznie mniejsza niż objętość, z której jest migawka). Jeśli bloki są aktualizowane w woluminie na żywo, zawartość oryginalnych bloków jest dodawana do pamięci migawki, więc gdy spojrzysz na migawkę, LVM może obsługiwać oryginalne bloki zamiast zaktualizowanych.
David Spillett,

Ale jeśli to się zmieni (migawka), skąd pochodzi ta „zamrożona”? Powiedzmy, że mam taki scenariusz, działający system z czasem ulega uszkodzeniu. Mam jego migawkę, gdy działała poprawnie. Czy migawka będzie reprezentacją systemu, gdy nadal działał poprawnie, czy też będzie zawierała zmiany, które spowodowały uszkodzenie oryginalnego systemu? Mam nadzieję, że jestem wystarczająco jasny, chcę tylko mieć pewność, że naprawdę to rozumiem.
Karolis T.

Aby zrozumieć, skąd się bierze zamrożony, zdaj sobie sprawę, że masz teraz dwa osobne woluminy - oryginał zawierający aktywny system plików oraz migawkę, która zmienia zamrożoną wersję systemu plików. Zobacz moją odpowiedź, aby uzyskać więcej informacji.
Avery Payne

1
Wy, ludzie, sprawcie, że zabrzmi to bardziej skomplikowane niż jest. Migawka przechowuje stan źródłowego systemu plików w stanie, w jakim był on tworzony. Gdy zmienia się źródło fs, migawka nie zmienia się, co pozwala wskazać programowi do tworzenia kopii zapasowych odczyt z migawki zamiast źródła fs. Tak, kopiowanie przy zapisie odbywa się za ekranami, ale użytkownik tego nie zauważa, z wyjątkiem dodatkowego użycia IO.
Martijn Heemels

6

Musisz upewnić się, że dane na dysku są w spójnym stanie przed utworzeniem migawki. np. mysql może mieć dane buforowane w pamięci, które należy wymusić na dysku, albo zrzucając bazę danych, albo zamykając ją. Szczegółowe informacje można znaleźć w instrukcjach aplikacji.


5

Pod sprytnie wyglądającymi rzeczami LVM to tak naprawdę „tylko” sztuczka mapowania urządzeń. Tworzenie migawki za pomocą programu lvcreate to niewiele więcej niż opakowanie niektórych rzeczy związanych z dmsetup. Opakowanie tworzy nowe urządzenie (wolumin migawki) z jednego starego woluminu (oryginalny lv) i nowego (wolumin kopiowania przy zapisie). Wraz z tym pierwotna nazwa LV zostaje przemianowana na -real (patrz poniżej, która jest wyjściem dmsetup ls --tree). Ten -real LV jest odwzorowany zarówno na wolumin migawki, jak i pierwotny wolumin, więc można go używać w obu miejscach. Wolumin kopiowania przy zapisie działa jako nakładka na -real LV. Opcja -snap LV pokazuje kombinację woluminu kopiowania przy zapisie i woluminu -real. To rzeczywiście powoduje pewne obciążenie wydajności.

Volume00-snap (253:11)
 |-Volume00-snap-cow (253:13)
 |  `- (104:2)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Volume00-LogVol01 (253:5)
 `-Volume00-LogVol01-real (253:12)
    `- (104:2)

Podczas usuwania migawki ponownie następuje zmiana nazwy i mapowanie. Potem sytuacja znów będzie wyglądać jak

Volume00-LogVol01 (253:5)
 `- (104:2)

Jeśli chodzi o to, w jaki sposób jest to dobra metoda tworzenia kopii zapasowych rzeczy: może być, jeśli weźmiesz pod uwagę, że (1) nie pomoże na pamięć RAM maszyn wirtualnych, (2) stworzy karę wydajności i (3) będziesz potrzebować do przechowywania obrazów migawki w innym miejscu.

VMware VCB działa również z migawkami, przy okazji, choć nie z LVM.


4

Nawet jeśli migawki nie miały żadnego wpływu na wydajność, musisz zrozumieć: Migawki nie stanowią więcej kopii zapasowej niż kopia do innego folderu na tym samym dysku.

Jeśli dysk ulegnie awarii, dane i kopia zapasowa zostaną utracone. Nawet jeśli przypiszesz obszar migawki do innego PE w VG, zawiera on tylko dane zmodyfikowane od czasu migawki.

Tworzenie kopii zapasowej oznacza co najmniej kopię na całkowicie oddzielny dysk.


Tak rozumiem to. RAID 1 ma na celu ochronę przed awariami urządzeń pamięci masowej, tworzenie kopii zapasowych w zdalnej lokalizacji - przed uszkodzeniem oprogramowania. Rozważam migawki LVM jako narzędzie do NAPRAWDĘ szybkiego przywracania, gdy nie wiesz, co się stało, i potrzebujesz teraz systemu online. Jakieś inne opcje, szybsze niż przywracanie domU z kopii zapasowej LVM?
Karolis T.

3

używam takiej konfiguracji do tworzenia migawek maszyn serwerów vmware i baz danych mysql. jak dotąd działa dobrze. przywrócono kilka - wszystko bez problemów. jedna rzecz do rozważenia - podczas pracy z migawką lvm uzyskuje znaczący spadek wydajności dla operacji we / wy. spójrz tutaj . zignoruj ​​fakt, że mówią o mysql, operacje we / wy to operacje we / wy ... bez względu na to, jakie dane znajdują się na lvm.


1
Aha. tak - zakładam, że migawka zostanie pobrana i wyeksportowana na zdalny serwer pamięci. nie pozostawiono na lokalnym hoście.
pQd

2

Używam migawek lvm tylko do skopiowania DomU Lv kolejnej w osobnej Vg, gdzie każda domena ma do dyspozycji trzy zapasowe „węzły”.

Następnie migawka zostaje zniszczona, a zapasowe Lv pozostają do następnej rundy. Jeśli mam przywrócenie, muszę tylko wybrać źródło Lv z kopii zapasowej Vg i skopiować je do domeny Lv.

Raz na jakiś czas kopia zapasowa Lv jest zrzucana do pliku obrazu na oddzielnym serwerze.

Wszystko to jest zautomatyzowane za pomocą skryptu, z kopią zapasową co dwa dni i zrzutem co tydzień.

Miałem nawet na myśli tryb „paniki”, w którym Domena Lv zostanie przywrócona, ale będzie uruchamiana z migawki i resetowana co 2 godziny, aby utrzymać witrynę w trybie online w przypadku poważnych włamań, aż do zorganizowania odpowiedniej obrony .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.