Kopia zapasowa, część 1: Cel, przegląd metod i technologii

Kopia zapasowa, część 1: Cel, przegląd metod i technologii
Dlaczego musisz tworzyć kopie zapasowe? W końcu sprzęt jest bardzo, bardzo niezawodny, a poza tym istnieją „chmury”, które są bardziej niezawodne niż serwery fizyczne: przy odpowiedniej konfiguracji serwer „w chmurze” może z łatwością przetrwać awarię serwera fizycznego infrastruktury, a z z punktu widzenia użytkowników serwisu nastąpi niewielki, ledwo zauważalny przeskok w czasie obsługi. Ponadto powielanie informacji często wymaga płacenia za „dodatkowy” czas procesora, obciążenie dysku i ruch sieciowy.

Idealny program działa szybko, nie powoduje wycieków pamięci, nie ma dziur i nie istnieje.

-Nieznany

Ponieważ programy są nadal pisane przez twórców białek i często nie ma procesu testowania, a programy rzadko są dostarczane przy użyciu „najlepszych praktyk” (które same w sobie są również programami i dlatego są niedoskonałe), administratorzy systemów najczęściej muszą rozwiązywać problemy, które wydają się krótkie, ale zwięźle: „wróć do tego, co było”, „przywróć bazę do normalnej pracy”, „działa powoli - wycofaj”, a także moje ulubione „nie wiem co, ale napraw to”.

Oprócz błędów logicznych, które powstają w wyniku nieostrożnej pracy programistów lub splotu okoliczności, a także niepełnej wiedzy lub niezrozumienia drobnych funkcji tworzenia programów - w tym łączących i systemowych, w tym systemów operacyjnych, sterowników i oprogramowania układowego - są też inne błędy. Na przykład większość programistów polega na czasie wykonywania, całkowicie zapominając o prawach fizycznych, których nadal nie da się obejść za pomocą programów. Obejmuje to nieskończoną niezawodność podsystemu dyskowego i w ogóle dowolnego podsystemu przechowywania danych (w tym pamięci RAM i pamięci podręcznej procesora!), zerowy czas przetwarzania na procesorze oraz brak błędów podczas transmisji przez sieć i podczas przetwarzania na serwerze procesor i opóźnienie sieci, które wynosi 0. Nie należy zaniedbywać notorycznego terminu, ponieważ jeśli nie dotrzymamy go na czas, pojawią się problemy gorsze niż niuanse działania sieci i dysku.

Kopia zapasowa, część 1: Cel, przegląd metod i technologii

Co zrobić z problemami, które narastają i wiszą nad cennymi danymi? Żyjących deweloperów nic nie zastąpi i nie jest faktem, że będzie to możliwe w najbliższej przyszłości. Z drugiej strony tylko nielicznym projektom udało się w pełni wykazać, że program będzie działać zgodnie z zamierzeniami i niekoniecznie będzie możliwe zebranie i zastosowanie dowodów w innych, podobnych projektach. Również takie dowody zajmują dużo czasu i wymagają specjalnych umiejętności i wiedzy, a to praktycznie minimalizuje możliwość ich wykorzystania, biorąc pod uwagę terminy. Poza tym nie wiemy jeszcze, jak wykorzystać ultraszybką, tanią i nieskończenie niezawodną technologię przechowywania, przetwarzania i przesyłania informacji. Technologie takie, jeśli istnieją, to występują w formie koncepcji lub – najczęściej – jedynie w książkach i filmach science fiction.

Dobrzy artyści kopiują, świetni artyści kradną.

-Pablo Picasso.

Najbardziej udane rozwiązania i zaskakująco proste rzeczy dzieją się zwykle tam, gdzie spotykają się koncepcje, technologie, wiedza i dziedziny nauki, które na pierwszy rzut oka zupełnie do siebie nie pasują.

Na przykład ptaki i samoloty mają skrzydła, ale pomimo podobieństwa funkcjonalnego - zasada działania w niektórych trybach jest taka sama, a problemy techniczne rozwiązuje się w podobny sposób: puste kości, zastosowanie mocnych i lekkich materiałów itp. - wyniki są zupełnie inne, choć bardzo podobne. Najlepsze przykłady naszej technologii są również w dużej mierze zapożyczone z natury: przedziały ciśnieniowe statków i łodzi podwodnych są bezpośrednią analogią do pierścieni; budowanie macierzy raid i sprawdzanie integralności danych - duplikacja łańcucha DNA; a także sparowane narządy, niezależność pracy różnych narządów od centralnego układu nerwowego (automatyzacja serca) i odruchów - systemy autonomiczne w Internecie. Oczywiście przyjmowanie i stosowanie gotowych rozwiązań „od ręki” jest obarczone problemami, ale kto wie, może nie ma innych rozwiązań.

Gdybym tylko wiedział, gdzie upadniesz, rozłożyłbym słomki!

—Białoruskie przysłowie ludowe

Oznacza to, że kopie zapasowe są niezbędne dla tych, którzy chcą:

  • Będziesz w stanie przywrócić działanie swoich systemów przy minimalnych przestojach lub nawet bez nich
  • Działaj odważnie, bo w przypadku błędu zawsze istnieje możliwość wycofania się
  • Minimalizuj konsekwencje celowego uszkodzenia danych

Oto mała teoria

Jakakolwiek klasyfikacja jest dowolna. Natura nie klasyfikuje. Klasyfikujemy, bo tak jest dla nas wygodniej. Klasyfikujemy według danych, które również przyjmujemy arbitralnie.

—Jean Bruler

Niezależnie od fizycznego sposobu przechowywania, logiczne przechowywanie danych można podzielić na dwa sposoby dostępu do tych danych: blokowy i plikowy. Podział ten ostatnio bardzo się zatarł, gdyż nie istnieje pamięć logiczna czysto blokowa, tak jak i czysto plikowa. Jednak dla uproszczenia założymy, że istnieją.

Blokowe przechowywanie danych oznacza, że ​​istnieje fizyczne urządzenie, w którym dane są zapisywane w określonych stałych fragmentach, czyli blokach. Dostęp do bloków jest możliwy pod określonym adresem; każdy blok ma swój własny adres w urządzeniu.

Kopia zapasowa jest zwykle tworzona poprzez kopiowanie bloków danych. Aby zapewnić integralność danych, w momencie kopiowania wstrzymuje się rejestrowanie nowych bloków, a także zmian w istniejących. Jeśli weźmiemy analogię ze zwykłego świata, najbliższą rzeczą jest szafa z identycznymi numerami komórek.

Kopia zapasowa, część 1: Cel, przegląd metod i technologii

Przechowywanie danych plikowych oparte na zasadzie urządzenia logicznego jest zbliżone do przechowywania blokowego i często jest zorganizowane od góry. Istotnymi różnicami są obecność hierarchii przechowywania i nazw czytelnych dla człowieka. Abstrakcja przydzielana jest w formie pliku – nazwanego obszaru danych, a także katalogu – specjalnego pliku, w którym przechowywane są opisy i dostęp do innych plików. Pliki mogą być opatrzone dodatkowymi metadanymi: czasem utworzenia, flagami dostępu itp. Kopie zapasowe są zwykle wykonywane w ten sposób: wyszukują zmienione pliki, a następnie kopiują je do innego magazynu plików o tej samej strukturze. Integralność danych jest zwykle realizowana poprzez brak zapisów w plikach. Kopia zapasowa metadanych plików jest tworzona w ten sam sposób. Najbliższą analogią jest biblioteka, która ma sekcje z różnymi książkami, a także posiada katalog z czytelnymi dla człowieka nazwami książek.

Kopia zapasowa, część 1: Cel, przegląd metod i technologii

Ostatnio czasami opisuje się inną opcję, od której w zasadzie zaczęło się przechowywanie danych plikowych i która ma te same archaiczne cechy: przechowywanie danych obiektowych.

Różni się od przechowywania plików tym, że nie ma więcej niż jednego zagnieżdżenia (schemat płaski), a nazwy plików, choć czytelne dla człowieka, są nadal bardziej odpowiednie do przetwarzania przez maszyny. Podczas tworzenia kopii zapasowych pamięć obiektową traktowana jest najczęściej podobnie do przechowywania plików, ale czasami dostępne są inne opcje.

— Istnieją dwa typy administratorów systemu: ci, którzy nie tworzą kopii zapasowych, i ci, którzy JUŻ to robią.
- Właściwie są trzy typy: są też takie, które sprawdzają, czy kopie zapasowe można przywrócić.

-Nieznany

Warto również zrozumieć, że sam proces tworzenia kopii zapasowych danych jest wykonywany przez programy, więc ma te same wady, co każdy inny program. Aby usunąć (nie wyeliminować!) zależność od czynnika ludzkiego, a także cech – które pojedynczo nie dają silnego efektu, ale razem mogą dać zauważalny efekt – tzw. zasada 3-2-1. Istnieje wiele możliwości jego rozszyfrowania, ale bardziej podoba mi się następująca interpretacja: muszą być przechowywane 3 zestawy tych samych danych, 2 zestawy muszą być przechowywane w różnych formatach, a 1 zestaw musi być przechowywany w geograficznie odległym magazynie.

Przez format przechowywania należy rozumieć:

  • Jeśli istnieje zależność od fizycznej metody przechowywania, zmieniamy metodę fizyczną.
  • Jeśli istnieje zależność od logicznej metody przechowywania, zmieniamy metodę logiczną.

Aby osiągnąć maksymalny efekt zasady 3-2-1, zaleca się zmianę formatu przechowywania w obie strony.

Z punktu widzenia gotowości kopii zapasowej do zamierzonego celu - przywrócenia funkcjonalności - rozróżnia się kopie zapasowe „gorące” i „zimne”. Gorące różnią się od zimnych tylko jednym: są natychmiast gotowe do użycia, podczas gdy zimne wymagają dodatkowych kroków w celu odzyskania: odszyfrowania, wyodrębnienia z archiwum itp.

Nie należy mylić kopii gorących i zimnych z kopiami online i offline, które implikują fizyczną izolację danych i w rzeczywistości są kolejnym przejawem klasyfikacji metod tworzenia kopii zapasowych. Zatem kopia offline – niepodłączona bezpośrednio do systemu, w którym ma zostać przywrócona – może być albo gorąca, albo zimna (pod względem gotowości do odzyskania). Egzemplarz online może być dostępny bezpośrednio tam, gdzie wymaga przywrócenia, i najczęściej jest gorąco, ale zdarzają się też zimne.

Ponadto nie zapominaj, że sam proces tworzenia kopii zapasowych zwykle nie kończy się na utworzeniu jednej kopii zapasowej, a kopii może być dość duża. Dlatego należy rozróżnić kopie pełne, czyli tzw. takie, które można przywrócić niezależnie od innych kopii zapasowych, a także kopie różnicowe (przyrostowe, różnicowe, dekrementalne itp.) - takie, których nie można przywrócić samodzielnie i wymagają wstępnego przywrócenia jednej lub większej liczby innych kopii zapasowych.

Różnicowe przyrostowe kopie zapasowe są próbą zaoszczędzenia miejsca na kopie zapasowe. W ten sposób w kopii zapasowej zapisywane są tylko zmienione dane z poprzedniej kopii zapasowej.

Różnicowe kopie dekrementacyjne tworzone są w tym samym celu, ale w nieco inny sposób: wykonywana jest pełna kopia zapasowa, ale faktycznie zapisywana jest tylko różnica między świeżą kopią a poprzednią.

Osobno warto rozważyć proces tworzenia kopii zapasowych na dysku, który wspiera brak przechowywania duplikatów. Tak więc, jeśli zapiszesz na nim pełne kopie zapasowe, w rzeczywistości zostaną zapisane tylko różnice między kopiami zapasowymi, ale proces przywracania kopii zapasowych będzie podobny do przywracania z pełnej kopii i całkowicie przezroczysty.

Quis custodiet ipsos custodes?

(Kto będzie strzegł samych stróżów? - łac.)

Bardzo nieprzyjemnie jest, gdy nie ma kopii zapasowych, ale znacznie gorzej jest, gdy wydaje się, że kopia zapasowa została wykonana, ale podczas przywracania okazuje się, że nie da się jej przywrócić, ponieważ:

  • Integralność danych źródłowych została naruszona.
  • Pamięć kopii zapasowych jest uszkodzona.
  • Przywracanie przebiega bardzo wolno i nie można wykorzystać danych, które zostały częściowo odzyskane.

Prawidłowo skonstruowany proces tworzenia kopii zapasowych musi uwzględniać takie uwagi, zwłaszcza dwa pierwsze.

Integralność danych źródłowych można zagwarantować na kilka sposobów. Najczęściej stosowane to: a) tworzenie migawek systemu plików na poziomie bloków, b) „zamrażanie” stanu systemu plików, c) specjalne urządzenie blokowe z przechowywaniem wersji, d) sekwencyjny zapis plików lub Bloki. Aby zapewnić weryfikację danych podczas odzyskiwania, stosowane są także sumy kontrolne.

Uszkodzenie pamięci można również wykryć za pomocą sum kontrolnych. Dodatkową metodą jest wykorzystanie specjalizowanych urządzeń lub systemów plików, w których nie można zmienić już zarejestrowanych danych, lecz można dodać nowe.

Aby przyspieszyć odzyskiwanie, stosuje się odzyskiwanie danych w ramach wielu procesów odzyskiwania – pod warunkiem, że nie ma wąskiego gardła w postaci wolnej sieci lub wolnego systemu dyskowego. Aby obejść sytuację w przypadku częściowo odzyskanych danych, można podzielić proces tworzenia kopii zapasowej na stosunkowo małe podzadania, z których każde jest wykonywane osobno. W ten sposób możliwe staje się konsekwentne przywracanie wydajności przy jednoczesnym przewidywaniu czasu odzyskiwania. Problem ten najczęściej leży na płaszczyźnie organizacyjnej (SLA), więc nie będziemy się nad tym szczegółowo rozwodzić.

Ekspertem w przyprawach nie jest ten, kto dodaje je do każdego dania, ale ten, który nigdy nie dodaje do niego niczego dodatkowego.

-W. Siniawski

Praktyki dotyczące oprogramowania stosowanego przez administratorów systemów mogą się różnić, ale ogólne zasady są w dalszym ciągu takie same, w szczególności:

  • Zdecydowanie zaleca się korzystanie z gotowych rozwiązań.
  • Programy powinny działać przewidywalnie, tj. Nie powinno być żadnych nieudokumentowanych funkcji ani wąskich gardeł.
  • Konfiguracja każdego programu powinna być na tyle prosta, aby nie trzeba było za każdym razem czytać instrukcji ani ściągawki.
  • Jeśli to możliwe, rozwiązanie powinno być uniwersalne, ponieważ serwery mogą znacznie różnić się charakterystyką sprzętową.

Istnieją następujące popularne programy do wykonywania kopii zapasowych z urządzeń blokowych:

  • dd, znany weteranom administracji systemem, obejmuje to również podobne programy (na przykład ten sam dd_rescue).
  • Narzędzia wbudowane w niektóre systemy plików, które tworzą zrzut systemu plików.
  • Wszystkożerne narzędzia; na przykład partclone.
  • Własne, często zastrzeżone decyzje; na przykład NortonGhost i nowsze wersje.

W przypadku systemów plików problem tworzenia kopii zapasowych można częściowo rozwiązać za pomocą metod stosowanych w urządzeniach blokowych, ale problem można rozwiązać skuteczniej, na przykład:

  • Rsync, program i protokół ogólnego przeznaczenia do synchronizacji stanu systemów plików.
  • Wbudowane narzędzia do archiwizacji (ZFS).
  • Narzędzia do archiwizacji stron trzecich; najpopularniejszym przedstawicielem jest smoła. Są inne, na przykład dar - zamiennik tar przeznaczony dla nowoczesnych systemów.

Warto osobno wspomnieć o narzędziach programowych zapewniających spójność danych podczas tworzenia kopii zapasowych. Najczęściej używane opcje to:

  • Montowanie systemu plików w trybie tylko do odczytu (ReadOnly) lub zamrażanie systemu plików (freeze) - metoda ma ograniczone zastosowanie.
  • Tworzenie migawek stanu systemów plików lub urządzeń blokowych (LVM, ZFS).
  • Korzystanie z zewnętrznych narzędzi do organizowania wyświetleń, nawet w przypadkach, gdy z jakiegoś powodu nie można zapewnić poprzednich punktów (programy typu hotcopy).
  • Technika kopiowania przy zmianie (CopyOnWrite) jest jednak najczęściej powiązana z używanym systemem plików (BTRFS, ZFS).

Zatem w przypadku małego serwera należy zapewnić schemat tworzenia kopii zapasowych spełniający następujące wymagania:

  • Łatwy w użyciu - podczas pracy nie są wymagane żadne specjalne dodatkowe kroki, minimalne kroki do tworzenia i przywracania kopii.
  • Uniwersalny - działa zarówno na dużych, jak i małych serwerach; jest to ważne przy zwiększaniu liczby serwerów lub skalowaniu.
  • Instalowany przez menedżera pakietów lub za pomocą jednego lub dwóch poleceń, takich jak „pobierz i rozpakuj”.
  • Stabilny — używany jest standardowy lub ugruntowany format przechowywania.
  • Szybki w pracy.

Kandydaci spośród tych, którzy mniej więcej spełniają wymagania:

  • rdiff-kopia zapasowa
  • rsnapshot
  • beknięcie
  • duplikat
  • dwulicowość
  • niech dup
  • dar
  • zkopia zapasowa
  • restrykcyjny
  • kopia zapasowa borga

Kopia zapasowa, część 1: Cel, przegląd metod i technologii

Jako stanowisko testowe zostanie wykorzystana maszyna wirtualna (oparta na XenServer) o następujących parametrach:

  • 4 rdzenie 2.5 GHz,
  • 16 GB RAM-u,
  • Pamięć hybrydowa 50 GB (system pamięci masowej z buforowaniem na dysku SSD 20% wielkości dysku wirtualnego) w formie osobnego dysku wirtualnego bez partycjonowania,
  • Kanał internetowy 200 Mbit.

Prawie ta sama maszyna będzie służyć jako serwer odbiorczy kopii zapasowych, tyle że z dyskiem twardym o pojemności 500 GB.

System operacyjny - Centos 7 x64: partycja standardowa, jako źródło danych zostanie wykorzystana dodatkowa partycja.

Jako dane początkowe weźmy witrynę WordPress z 40 GB plików multimedialnych i bazą danych mysql. Ponieważ serwery wirtualne różnią się znacznie pod względem cech, a także lepszej odtwarzalności, oto

Wyniki testów serwera przy użyciu sysbench.sysbench --threads=4 --time=30 --cpu-max-prime=20000 uruchomień procesora
sysbench 1.1.0-18a9f86 (przy użyciu dołączonego LuaJIT 2.1.0-beta3)
Uruchomienie testu z następującymi opcjami:
Liczba wątków: 4
Inicjowanie generatora liczb losowych z bieżącego czasu

Limit liczb pierwszych: 20000

Inicjowanie wątków roboczych…

Wątki rozpoczęte!

Prędkość CPU:
zdarzeń na sekundę: 836.69

Wydajność:
zdarzenia/y (eps): 836.6908
czas, który upłynął: 30.0039 s
łączna liczba zdarzeń: 25104

Opóźnienie (ms):
min: 2.38
średnia: 4.78
maks.: 22.39
95. percentyl: 10.46
suma: 119923.64

Sprawiedliwość wątków:
zdarzenia (średnio/stddev): 6276.0000/13.91
czas wykonania (średni/stddev): 29.9809/0.01

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=odczyt pamięci
sysbench 1.1.0-18a9f86 (przy użyciu dołączonego LuaJIT 2.1.0-beta3)
Uruchomienie testu z następującymi opcjami:
Liczba wątków: 4
Inicjowanie generatora liczb losowych z bieżącego czasu

Uruchamianie testu szybkości pamięci z następującymi opcjami:
rozmiar bloku: 1KiB
całkowity rozmiar: 102400MiB
operacja: czytaj
zasięg: globalny

Inicjowanie wątków roboczych…

Wątki rozpoczęte!

Łączna liczba operacji: 50900446 (1696677.10 na sekundę)

Przesłano 49707.47 MiB (1656.91 MiB/s)

Wydajność:
zdarzenia/y (eps): 1696677.1017
czas, który upłynął: 30.0001 s
łączna liczba zdarzeń: 50900446

Opóźnienie (ms):
min: 0.00
średnia: 0.00
maks.: 24.01
95. percentyl: 0.00
suma: 39106.74

Sprawiedliwość wątków:
zdarzenia (średnio/stddev): 12725111.5000/137775.15
czas wykonania (średni/stddev): 9.7767/0.10

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=zapis pamięci
sysbench 1.1.0-18a9f86 (przy użyciu dołączonego LuaJIT 2.1.0-beta3)
Uruchomienie testu z następującymi opcjami:
Liczba wątków: 4
Inicjowanie generatora liczb losowych z bieżącego czasu

Uruchamianie testu szybkości pamięci z następującymi opcjami:
rozmiar bloku: 1KiB
całkowity rozmiar: 102400MiB
operacja: napisz
zasięg: globalny

Inicjowanie wątków roboczych…

Wątki rozpoczęte!

Łączna liczba operacji: 35910413 (1197008.62 na sekundę)

Przesłano 35068.76 MiB (1168.95 MiB/s)

Wydajność:
zdarzenia/y (eps): 1197008.6179
czas, który upłynął: 30.0001 s
łączna liczba zdarzeń: 35910413

Opóźnienie (ms):
min: 0.00
średnia: 0.00
maks.: 16.90
95. percentyl: 0.00
suma: 43604.83

Sprawiedliwość wątków:
zdarzenia (średnio/stddev): 8977603.2500/233905.84
czas wykonania (średni/stddev): 10.9012/0.41

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G uruchomienie fileio
sysbench 1.1.0-18a9f86 (przy użyciu dołączonego LuaJIT 2.1.0-beta3)
Uruchomienie testu z następującymi opcjami:
Liczba wątków: 4
Inicjowanie generatora liczb losowych z bieżącego czasu

Dodatkowe flagi otwarcia pliku: (brak)
128 plików, każdy o rozmiarze 8 MB
Całkowity rozmiar pliku 1GiB
Rozmiar bloku 4KiB
Liczba żądań IO: 0
Współczynnik odczytu/zapisu dla połączonego losowego testu I/O: 1.50
Włączono okresową funkcję FSYNC, wywołując fsync() co 100 żądań.
Wywołanie fsync() na koniec testu, włączone.
Używanie synchronicznego trybu we/wy
Wykonuję losowy test r/w
Inicjowanie wątków roboczych…

Wątki rozpoczęte!

Wydajność:
czytaj: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
zapis: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS=8226.98

Opóźnienie (ms):
min: 0.00
średnia: 0.27
maks.: 18.01
95. percentyl: 1.08
suma: 238469.45

Ta notatka zaczyna się od czegoś wielkiego

seria artykułów na temat tworzenia kopii zapasowych

  1. Backup, część 1: Dlaczego backup jest potrzebny, przegląd metod, technologii
  2. Kopia zapasowa Część 2: Przegląd i testowanie narzędzi do tworzenia kopii zapasowych opartych na rsync
  3. Kopia zapasowa Część 3: Przeglądanie i testowanie dwulicowości, duplikatów, deja dup
  4. Kopia zapasowa, część 4: Przegląd i testowanie zbackup, restic, borgbackup
  5. Kopia zapasowa, część 5: Testowanie kopii zapasowych Bacula i Veeam dla systemu Linux
  6. Kopia zapasowa, część 6: Porównanie narzędzi do tworzenia kopii zapasowych
  7. Część zapasowa 7: Wnioski

Źródło: www.habr.com

Dodaj komentarz