Migawki LVM a migawki systemu plików

32

O ile mi wiadomo, LVM umożliwia robienie migawek woluminu. Istnieje również wiele systemów plików (ZFS, Btrfs, reiserfs, ...), które obsługują migawki.

Jednak nigdy nie zrozumiałem różnicy między migawkami LVM a migawkami systemu plików. Jeśli możliwe jest robienie migawek za pomocą LVM, dlaczego ktoś nie poświęca czasu na wdrożenie go w systemie plików?

Edycja: Czy któryś z nich jest preferowany w niektórych sytuacjach? Czemu?

nip3o
źródło

Odpowiedzi:

25

Większość tych migawek to migawki kopiowania przy zapisie, które są naprawdę szybkie i bardzo tanie (pod względem pamięci) w rzadko aktualizowanych systemach. Migawki LVM są migawkami COW, ZFS / BTRFS mają tryb COW dla migawek, reiserfs nie ma migawek natywnie, system plików Novell NSS jest również COW, podobnie jak woluminy Shadow Copy dla woluminów Windows NTFS.

Migawki kopiowania przy zapisie przenoszą kopię metadanych woluminu docelowego do puli migawek. Następnie, w zależności od używanego trybu COW, kopiują dane, które zostałyby nadpisane przez nowe zapisy do puli migawek przed zapisaniem nowych danych.

ZFS i (ewentualnie, jeśli jeszcze ich nie ma) BTRFS mają możliwości tworzenia pełnych zdjęć, co jest przydatne do przyciągania do oddzielnych nośników, co z kolei jest bardzo przydatne w przypadku sneakernetowych systemów tworzenia kopii zapasowych wykorzystujących nośniki wymienne. ZFS nie nazywa tego jednak „migawką”, wykorzystują zdolność ZFS do używania zfs sendi zfs recvkopiowania woluminów i migawek przez sieć na zdalnym hoście (lub tablicy lokalnej).

Wolę możliwości tworzenia migawek na poziomie systemu plików niż LVM, ponieważ lepiej ufam samemu systemowi plików, aby dobrze obsługiwał proces. Jednak przy braku bezpośredniego wsparcia systemu plików LVM powinien działać dobrze w większości przypadków.

Migawki COW są dobre, jeśli potrzebujesz kopii zapasowej w określonym momencie, wykonanej naprawdę szybko na potrzeby odzyskiwania krótkoterminowego. Na przykład robienie codziennych lub 4x codziennych przystawek przez tydzień. Jest to przydatne, jeśli chcesz odzyskać pliki, które użytkownicy przypadkowo usuną lub chcesz przywrócić cały system do konfiguracji przed aktualizacją. Mogą być również używane przez niektóre systemy tworzenia kopii zapasowych jako całkowicie wyciszony system plików, więc kopie zapasowe pobrane z woluminu migawki nie muszą się martwić, że otwarte pliki staną się przeszkodą. Najważniejszą rzeczą do zapamiętania jest to, że woluminy migawek będą znajdować się w tym samym magazynie co wolumin podstawowy, więc nie dawaj niczego w przypadku awarii tablicy.

PEŁNE migawki są dobre, jeśli są przenoszone na nośniki wymienne lub zdalne. Jeśli masz pamięć sieciową, miejscem docelowym może być inna macierz iSCSI lub Fibre Channel niż ta, w której przechowywana jest pamięć podstawowa. Zapewnia to ochronę poza macierzą dla niektórych rodzajów błędów. Jeśli używasz nośników wymiennych, takich jak dysk ESATA 3 TB, możesz nawet użyć go jako prostego systemu kopii zapasowej na dysk. Te migawki mogą znajdować się na innym sprzęcie niż ich bracia z COW, więc są przydatne w przypadku odporności na awarie.


Na migawkach Full vs COW.

Termin „migawka” nieco się zmienił na przestrzeni lat. W tym roku jestem prawie pewien, że oznacza to „kopiowanie oryginalnych danych metodą kopiowania przy zapisie przy użyciu przenoszenia bloków”. Zgodnie z tą definicją migawka „Pełna” przedstawiona powyżej nie jest tak naprawdę migawką, lecz replikacją. Niektórzy dostawcy pamięci masowej używali w przeszłości różnych definicji „migawki”, aby opisać różne operacje na poziomie bloków, które wykonują. Mylące są systemy, które używają migawek jako części procesu replikacji.

sysadmin1138
źródło
«Migawka na poziomie systemu plików jest lepsza niż jedna za pośrednictwem LVM z tego prostego faktu, że system plików wie, jak zachować spójność podczas procesu migawki, w którym LVM może” »- w rzeczywistości okazało się, że to nieprawda. Sprawdź to: serverfault.com/questions/300961/…
poige
1
«ZFS i (ewentualnie, jeśli jeszcze ich nie ma) BTRFS mają możliwości wykonywania pełnych migawek» - Powinieneś wyjaśnić, co masz na myśli przez „pełne” migawki. AFAIK, nie ma opcji „COW / full” dla migawek z ZFS. Wszystkie migawki są COW, ale mimo to można je później zapisać na osobnym nośniku jako cały system plików lub wolumin.
jlliagre
5

LVM wymaga wstępnego planowania. Zwykle go nie używam, ponieważ jest to także kolejna warstwa abstrakcji i jest rzadko dostępna, gdy jej potrzebuję. Istnieją jednak inne opcje klonowania na poziomie systemu plików (w systemie Linux) bez LVM. Aby to zrobić, możesz użyć Hot Copy z R1Soft . Jest to moduł jądra, ale umożliwia dodanie tej możliwości w locie.

ewwhite
źródło
3

Bardzo wyraźny problem: nie ma gwarancji, że migawki LVM mają spójne FS Jue, ponieważ LVM „nic” nie wie o FS, którym jest obciążony

Edytowane (patrz komentarze): - prawda, chyba że FS ma wsparcie dla .freeze_fs, w przeciwnym razie powinno być obsługiwane przez FS z wdziękiem.

poige
źródło
2
Fałszywe; LVM wykonuje synchronizację systemu plików przed zrobieniem migawki.
womble
1
@womble: nawet po synctym migawka jest dokładną kopią już zamontowanego systemu plików; więc kiedy go montujesz, pojawia się jako „nie odmontowany całkowicie” (ponieważ nie został odmontowany) i musisz wykonać pewne działania naprawcze, zanim będzie spójny. Oczywiście jest to zwykle powtórka dziennika, a po syncniej powinna być powtórka pusta; więc nie ma niebezpieczeństwa utraty danych.
Javier,
1
@womble, 1) Synchronizacja to za mało , ponieważ pojawiłoby się okno dla nowych żądań we / wy między synchronizacją a obsługą migawek LVM. Wymaga pewnego rodzaju blokowania. 2) XFS ma specjalną funkcję o nazwie „freeze” ( xfs_freeze is intended to be used with volume managers and hardware RAID devices that support the creation of snapshots.) - specjalną cechę dla migawek, czy LVM-2 wie o tym i już z niej korzysta? 3) Powiedz mi, gdzie w przestrzeni użytkownika ( sources.redhat.com/cgi-bin/cvsweb.cgi/LVM2/?cvsroot=lvm2 ) lub w źródłach jądra mogę udowodnić, że masz rację mówiąc nam, że LVM produkuje FS do synchronizacja
poige
9
ok, odrobiłem pracę domową i teraz mogę odpowiedzieć na trzecią część mojego pytania - w rzeczywistości LVM używa jądra freeze_bdev (), co, jak powiedziano w jego tytule, to lock a filesystem and force it into a consistent state. Tak więc przynajmniej mogę powiedzieć, że prawdopodobnie się myliłem mówiąc „nie ma gwarancji posiadania spójnego FS”, ponieważ jest to kwestia obsługi metody „freeze_fs” w implementacji FS - niektóre FS z pewnością mają taką obsługę (EXT3, Reiser3, XFS), a niektóre nie (np. EXT2). Odpowiada również na drugie pytanie - prawdopodobnie zamrożenie XFS będzie automatycznie obsługiwane przez LVM.
poige
1

Jako uzupełnienie innych odpowiedzi. W migawkach FS można korzystać z funkcji FS, takich jak kompresja i deduplikacja we wszystkich migawkach.

Rufo El Magufo
źródło