Zálohovanie, časť 1: Účel, prehľad metód a technológií

Zálohovanie, časť 1: Účel, prehľad metód a technológií
Prečo potrebujete zálohovať? Koniec koncov, vybavenie je veľmi, veľmi spoľahlivé a okrem toho existujú „oblaky“, ktoré sú spoľahlivosti lepšie ako fyzické servery: pri správnej konfigurácii môže „cloudový“ server ľahko prežiť zlyhanie fyzického servera infraštruktúry a z pohľadu užívateľov služby dôjde k malému, sotva badateľnému skoku v časovej službe. Okrem toho duplikácia informácií často vyžaduje platenie za „extra“ čas procesora, zaťaženie disku a sieťovú prevádzku.

Ideálny program beží rýchlo, nevypúšťa pamäť, nemá diery a neexistuje.

-Neznámy

Keďže programy stále píšu proteínoví vývojári a často sa neuskutočňuje žiadny testovací proces, navyše programy sú zriedka dodávané pomocou „osvedčených postupov“ (ktoré samy osebe sú tiež programami, a preto sú nedokonalé), správcovia systému musia najčastejšie riešiť problémy, ktoré znejú krátko, ale lapidárne: „návrat k tomu, ako to bolo“, „uviesť základňu do normálnej prevádzky“, „funguje pomaly – vrátiť sa späť“ a tiež moje obľúbené „neviem čo, ale opravte to“.

Okrem logických chýb, ktoré vznikajú v dôsledku neopatrnej práce vývojárov alebo súhrou okolností, ako aj neúplnej znalosti alebo nepochopenia malých funkcií stavebných programov - vrátane spojovacích a systémových, vrátane operačných systémov, ovládačov a firmvéru - sú tam aj iné chyby. Väčšina vývojárov sa napríklad spolieha na runtime, pričom úplne zabúda na fyzikálne zákony, ktoré sa pomocou programov stále nedajú obísť. To zahŕňa nekonečnú spoľahlivosť diskového subsystému a vo všeobecnosti akéhokoľvek subsystému na ukladanie údajov (vrátane pamäte RAM a vyrovnávacej pamäte procesora!), nulový čas spracovania na procesore a absenciu chýb počas prenosu cez sieť a počas spracovania na procesor, a latencia siete, ktorá sa rovná 0. Nemali by ste zanedbávať notoricky známy termín, pretože ak ho nestihnete včas, nastanú problémy horšie ako nuansy prevádzky siete a disku.

Zálohovanie, časť 1: Účel, prehľad metód a technológií

Čo robiť s problémami, ktoré narastajú v plnej sile a visia nad cennými dátami? Žijúcich vývojárov nič nenahradí a nie je pravda, že to bude možné v blízkej budúcnosti. Na druhej strane len niekoľkým projektom sa podarilo plne dokázať, že program bude fungovať tak, ako má, a dôkazy nebude nevyhnutne možné vziať a použiť na iné podobné projekty. Takéto dôkazy tiež vyžadujú veľa času a vyžadujú si špeciálne zručnosti a znalosti, čo prakticky minimalizuje možnosť ich použitia pri zohľadnení termínov. Navyše ešte nevieme, ako využiť ultrarýchlu, lacnú a nekonečne spoľahlivú technológiu na ukladanie, spracovanie a prenos informácií. Takéto technológie, ak existujú, sú vo forme konceptov alebo - najčastejšie - iba v knihách a filmoch sci-fi.

Dobrí umelci kopírujú, veľkí umelci kradnú.

— Pablo Picasso.

Najúspešnejšie riešenia a prekvapivo jednoduché veci sa zvyčajne dejú tam, kde sa stretnú na prvý pohľad absolútne nezlučiteľné koncepty, technológie, poznatky a oblasti vedy.

Napríklad vtáky a lietadlá majú krídla, ale napriek funkčnej podobnosti - princíp fungovania v niektorých režimoch je rovnaký a technické problémy sa riešia podobným spôsobom: duté kosti, použitie pevných a ľahkých materiálov atď. výsledky sú úplne odlišné, aj keď veľmi podobné. Najlepšie príklady, ktoré vidíme v našej technológii, sú tiež z veľkej časti prevzaté z prírody: pretlakové komory lodí a ponoriek sú priamou analógiou s annelidami; budovanie raidových polí a kontrola integrity dát – duplikovanie reťazca DNA; ako aj párové orgány, nezávislosť práce rôznych orgánov od centrálneho nervového systému (automatizácia srdca) a reflexy - autonómne systémy na internete. Prijatie a aplikácia hotových riešení „hlavou“ je samozrejme plná problémov, ale ktovie, možno neexistujú žiadne iné riešenia.

Keby som len vedel, kam spadneš, rozložil by som slamky!

— bieloruské ľudové príslovie

To znamená, že záložné kópie sú životne dôležité pre tých, ktorí chcú:

  • Byť schopný obnoviť prevádzku svojich systémov s minimálnymi prestojmi alebo dokonca bez nich
  • Konajte odvážne, pretože v prípade chyby vždy existuje možnosť vrátenia späť
  • Minimalizujte dôsledky úmyselného poškodenia údajov

Tu je malá teória

Akákoľvek klasifikácia je ľubovoľná. Príroda neklasifikuje. Klasifikujeme, lebo je to pre nás pohodlnejšie. A klasifikujeme podľa údajov, ktoré tiež ľubovoľne berieme.

— Jean Bruler

Bez ohľadu na spôsob fyzického ukladania možno logické ukladanie údajov rozdeliť na dva spôsoby prístupu k týmto údajom: blok a súbor. Toto rozdelenie bolo v poslednej dobe veľmi nejasné, pretože čisto blokové, ako aj čisto súborové logické úložisko neexistuje. Pre jednoduchosť však budeme predpokladať, že existujú.

Blokové ukladanie údajov znamená, že existuje fyzické zariadenie, kde sa údaje zapisujú do určitých pevných častí, blokov. K blokom sa pristupuje na určitej adrese, pričom každý blok má v rámci zariadenia svoju vlastnú adresu.

Záloha sa zvyčajne robí kopírovaním blokov údajov. Aby sa zabezpečila integrita údajov, zaznamenávanie nových blokov, ako aj zmien existujúcich blokov, je v čase kopírovania pozastavené. Ak vezmeme prirovnanie z bežného sveta, najbližšie je skriňa s rovnako očíslovanými bunkami.

Zálohovanie, časť 1: Účel, prehľad metód a technológií

Súborové dátové úložisko založené na princípe logického zariadenia je blízke blokovému úložisku a je často organizované navrchu. Dôležitými rozdielmi sú prítomnosť hierarchie úložiska a ľudsky čitateľné názvy. Abstrakcia je pridelená vo forme súboru - pomenovanej dátovej oblasti, ako aj adresára - špeciálneho súboru, v ktorom sú uložené popisy a prístup k iným súborom. Súbory môžu byť dodané s ďalšími metaúdajmi: čas vytvorenia, príznaky prístupu atď. Zálohy sa zvyčajne robia týmto spôsobom: hľadajú zmenené súbory a potom ich skopírujú na iné úložisko súborov s rovnakou štruktúrou. Integrita údajov je zvyčajne implementovaná absenciou súborov, do ktorých sa zapisova. Metadáta súboru sa zálohujú rovnakým spôsobom. Najbližšou analógiou je knižnica, ktorá má sekcie s rôznymi knihami a má aj katalóg s ľudsky čitateľnými názvami kníh.

Zálohovanie, časť 1: Účel, prehľad metód a technológií

V poslednej dobe sa niekedy popisuje ďalšia možnosť, z ktorej sa v princípe začalo ukladanie dát do súborov a ktorá má rovnaké archaické znaky: objektové dátové úložisko.

Od úložiska súborov sa líši tým, že nemá viac ako jedno vnorenie (plochá schéma) a názvy súborov, aj keď sú čitateľné človekom, sú stále vhodnejšie na spracovanie strojmi. Pri zálohovaní sa s ukladaním objektov najčastejšie zaobchádza podobne ako s ukladaním súborov, ale občas existujú aj iné možnosti.

— Existujú dva typy správcov systému, tí, ktorí nevytvárajú zálohy, a tí, ktorí UŽ robia.
- V skutočnosti existujú tri typy: sú aj takí, ktorí kontrolujú, či je možné zálohy obnoviť.

-Neznámy

Je tiež potrebné pochopiť, že samotný proces zálohovania údajov vykonávajú programy, takže má všetky rovnaké nevýhody ako ktorýkoľvek iný program. Na odstránenie (nie odstránenie!) závislosti od ľudského faktora, ako aj vlastností - ktoré jednotlivo nepôsobia silno, ale spolu môžu dať citeľný efekt - tzv. pravidlo 3-2-1. Existuje veľa možností, ako to dešifrovať, ale viac sa mi páči nasledujúci výklad: musia byť uložené 3 sady rovnakých údajov, 2 sady musia byť uložené v rôznych formátoch a 1 sada musí byť uložená na geograficky vzdialenom úložisku.

Formát ukladania by sa mal chápať takto:

  • Ak existuje závislosť od fyzického spôsobu uloženia, zmeníme fyzický spôsob.
  • Ak existuje závislosť od metódy logického ukladania, zmeníme logickú metódu.

Na dosiahnutie maximálneho účinku pravidla 3-2-1 sa odporúča zmeniť formát ukladania oboma spôsobmi.

Z hľadiska pripravenosti zálohy na jej zamýšľaný účel – obnovenie funkčnosti – sa rozlišuje medzi „horúcimi“ a „studenými“ zálohami. Horúce sa líšia od studených iba v jednej veci: sú okamžite pripravené na použitie, zatiaľ čo studené vyžadujú niektoré ďalšie kroky na obnovenie: dešifrovanie, extrakcia z archívu atď.

Nezamieňajte horúce a studené kópie s online a offline kópiami, ktoré znamenajú fyzickú izoláciu údajov a v skutočnosti sú ďalším znakom klasifikácie metód zálohovania. Takže offline kópia – nie je priamo pripojená k systému, kde je potrebné ju obnoviť – môže byť horúca alebo studená (v zmysle pripravenosti na obnovu). Online kópia môže byť dostupná priamo tam, kde ju treba obnoviť a najčastejšie je horúca, no nájdu sa aj studené.

Okrem toho nezabudnite, že samotný proces vytvárania záložných kópií zvyčajne nekončí vytvorením jednej záložnej kópie a kópií môže byť pomerne veľké množstvo. Preto je potrebné rozlišovať medzi plnými zálohami, t.j. tie, ktoré je možné obnoviť nezávisle od iných záloh, ako aj rozdielové (prírastkové, rozdielové, dekrementálne atď.) kópie – tie, ktoré sa nedajú obnoviť samostatne a vyžadujú predbežné obnovenie jednej alebo viacerých ďalších záloh.

Rozdielové prírastkové zálohy sú pokusom ušetriť úložný priestor zálohy. Do záložnej kópie sa teda zapíšu len zmenené údaje z predchádzajúcej zálohy.

Rozdielové dekrementálne sa vytvárajú na rovnaký účel, ale trochu iným spôsobom: vytvorí sa úplná záložná kópia, ale v skutočnosti sa uloží iba rozdiel medzi novou kópiou a predchádzajúcou kópiou.

Samostatne stojí za zváženie proces zálohovania cez úložisko, ktorý podporuje absenciu ukladania duplikátov. Ak teda na to napíšete úplné zálohy, v skutočnosti sa zapíšu iba rozdiely medzi zálohami, ale proces obnovy záloh bude podobný obnove z úplnej kópie a bude úplne transparentný.

Quis custodiet ipsos custodes?

(Kto bude strážiť samotných strážcov? - lat.)

Je veľmi nepríjemné, keď neexistujú žiadne záložné kópie, ale oveľa horšie je, ak sa zdá, že záložná kópia bola vytvorená, ale pri obnove sa ukáže, že ju nemožno obnoviť, pretože:

  • Integrita zdrojových údajov bola narušená.
  • Záložné úložisko je poškodené.
  • Obnova funguje veľmi pomaly, nemôžete použiť údaje, ktoré boli čiastočne obnovené.

Správne zostavený proces zálohovania musí zohľadňovať takéto pripomienky, najmä prvé dve.

Integritu zdrojových údajov je možné zaručiť niekoľkými spôsobmi. Najčastejšie sa používajú tieto: a) vytváranie snímok systému súborov na úrovni bloku, b) „zmrazenie“ stavu systému súborov, c) špeciálne blokové zariadenie s ukladaním verzií, d) sekvenčné nahrávanie súborov resp. bloky. Kontrolné súčty sa tiež používajú na zabezpečenie overenia údajov počas obnovy.

Poškodenie úložiska sa dá zistiť aj pomocou kontrolných súčtov. Doplnkovou metódou je použitie špecializovaných zariadení alebo súborových systémov, v ktorých už zaznamenané údaje nie je možné meniť, ale možno pridávať nové.

Na urýchlenie obnovy sa obnova dát používa s viacerými procesmi obnovy – za predpokladu, že sa nevyskytuje úzke miesto v podobe pomalej siete alebo pomalého diskového systému. Ak chcete obísť situáciu s čiastočne obnovenými údajmi, môžete proces zálohovania rozdeliť na relatívne malé čiastkové úlohy, z ktorých každá sa vykonáva samostatne. Takto je možné konzistentne obnovovať výkon pri predpovedaní času obnovy. Tento problém najčastejšie spočíva v organizačnej rovine (SLA), takže sa tomu nebudeme podrobne venovať.

Expert na korenie nie je ten, kto ich pridáva do každého jedla, ale ten, kto doň nikdy nepridáva nič navyše.

-V. Sinyavskij

Postupy týkajúce sa softvéru používaného správcami systému sa môžu líšiť, ale všeobecné princípy sú stále, tak či onak, rovnaké, najmä:

  • Dôrazne sa odporúča používať hotové riešenia.
  • Programy by mali fungovať predvídateľne, t.j. Nemali by existovať žiadne nezdokumentované funkcie alebo prekážky.
  • Nastavenie každého programu by malo byť také jednoduché, aby ste nemuseli zakaždým čítať manuál alebo cheat.
  • Ak je to možné, riešenie by malo byť univerzálne, pretože hardvérové ​​vlastnosti serverov sa môžu značne líšiť.

Existujú nasledujúce bežné programy na vytváranie záloh z blokových zariadení:

  • dd, známy veteránom správy systému, sem patria aj podobné programy (napríklad rovnaký dd_rescue).
  • Pomôcky zabudované do niektorých súborových systémov, ktoré vytvárajú výpis súborového systému.
  • Všežravé nástroje; napríklad partclone.
  • Vlastné, často vlastnícke rozhodnutia; napríklad NortonGhost a novšie.

V prípade súborových systémov je problém zálohovania čiastočne vyriešený pomocou metód použiteľných pre blokové zariadenia, ale problém možno efektívnejšie vyriešiť napríklad pomocou:

  • Rsync, univerzálny program a protokol na synchronizáciu stavu súborových systémov.
  • Zabudované archivačné nástroje (ZFS).
  • nástroje na archiváciu tretích strán; najobľúbenejším zástupcom je decht. Existujú aj iné, napríklad dar - náhrada dechtu zameraná na moderné systémy.

Samostatne stojí za zmienku o softvérových nástrojoch na zabezpečenie konzistencie údajov pri vytváraní záložných kópií. Najčastejšie používané možnosti sú:

  • Pripojenie súborového systému v režime len na čítanie (ReadOnly) alebo zmrazenie systému súborov (zmrazenie) - metóda má obmedzenú použiteľnosť.
  • Vytváranie snímok stavu súborových systémov alebo blokových zariadení (LVM, ZFS).
  • Používanie nástrojov tretích strán na organizovanie zobrazení, a to aj v prípadoch, keď z nejakého dôvodu nemožno poskytnúť predchádzajúce body (programy ako hotcopy).
  • Technika kopírovania pri zmene (CopyOnWrite) je však najčastejšie viazaná na použitý súborový systém (BTRFS, ZFS).

Takže pre malý server musíte poskytnúť schému zálohovania, ktorá spĺňa nasledujúce požiadavky:

  • Jednoduché použitie – počas prevádzky nie sú potrebné žiadne špeciálne dodatočné kroky, minimálne kroky na vytváranie a obnovu kópií.
  • Univerzálny - funguje na veľkých aj malých serveroch; je to dôležité pri zvyšovaní počtu serverov alebo pri škálovaní.
  • Inštaluje sa správcom balíkov alebo jedným alebo dvoma príkazmi, ako napríklad „stiahnuť a rozbaliť“.
  • Stabilný - používa sa štandardný alebo dlhodobo zavedený formát úložiska.
  • Rýchlo v práci.

Uchádzači z radov tých, ktorí viac-menej spĺňajú požiadavky:

  • rdiff-backup
  • rsnapshot
  • grgnutie
  • duplikát
  • neúprimnosť
  • nech dup
  • ale
  • zbackup
  • zvyšok
  • borgbackup

Zálohovanie, časť 1: Účel, prehľad metód a technológií

Ako testovacia stolica sa použije virtuálny stroj (založený na XenServer) s nasledujúcimi charakteristikami:

  • 4 jadrá 2.5 GHz,
  • 16 GB RAM,
  • 50 GB hybridné úložisko (úložný systém s cachovaním na SSD 20 % veľkosti virtuálneho disku) vo forme samostatného virtuálneho disku bez rozdelenia,
  • Internetový kanál 200 Mbit.

Takmer rovnaký stroj bude použitý ako záložný server prijímača, len s 500 GB pevným diskom.

Operačný systém - Centos 7 x64: štandardný oddiel, ako zdroj údajov bude použitý ďalší oddiel.

Ako počiatočné údaje si vezmime web WordPress so 40 GB mediálnych súborov a databázou mysql. Keďže virtuálne servery sa veľmi líšia charakteristikami a tiež kvôli lepšej reprodukovateľnosti, tu je

výsledky testovania servera pomocou sysbench.sysbench --threads=4 --time=30 --cpu-max-prime=20000 spustených procesorov
sysbench 1.1.0-18a9f86 (pomocou balíka LuaJIT 2.1.0-beta3)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializuje sa generátor náhodných čísel z aktuálneho času

Limit prvočísel: 20000 XNUMX

Inicializujú sa pracovné vlákna…

Vlákna začali!

Rýchlosť procesora:
udalostí za sekundu: 836.69

priepustnosť:
udalosti/s (eps): 836.6908
uplynulý čas: 30.0039 s
celkový počet udalostí: 25104

Latencia (ms):
min: 2.38
priemer: 4.78
max: 22.39
95. percentil: 10.46
súčet: 119923.64

Spravodlivosť nití:
udalosti (priemer/stddev): 6276.0000/13.91
čas vykonania (priem./štddev): 29.9809/0.01

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=spustenie pamäte
sysbench 1.1.0-18a9f86 (pomocou balíka LuaJIT 2.1.0-beta3)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializuje sa generátor náhodných čísel z aktuálneho času

Spustenie testu rýchlosti pamäte s nasledujúcimi možnosťami:
veľkosť bloku: 1KiB
celková veľkosť: 102400MiB
prevádzka: čítať
rozsah: globálny

Inicializujú sa pracovné vlákna…

Vlákna začali!

Celkový počet operácií: 50900446 (1696677.10 za sekundu)

Prenesené 49707.47 MiB (1656.91 MiB/s)

priepustnosť:
udalosti/s (eps): 1696677.1017
uplynulý čas: 30.0001 s
celkový počet udalostí: 50900446

Latencia (ms):
min: 0.00
priemer: 0.00
max: 24.01
95. percentil: 0.00
súčet: 39106.74

Spravodlivosť nití:
udalosti (priemer/stddev): 12725111.5000/137775.15
čas vykonania (priem./štddev): 9.7767/0.10

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=spustenie pamäte
sysbench 1.1.0-18a9f86 (pomocou balíka LuaJIT 2.1.0-beta3)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializuje sa generátor náhodných čísel z aktuálneho času

Spustenie testu rýchlosti pamäte s nasledujúcimi možnosťami:
veľkosť bloku: 1KiB
celková veľkosť: 102400MiB
operácia: písať
rozsah: globálny

Inicializujú sa pracovné vlákna…

Vlákna začali!

Celkový počet operácií: 35910413 (1197008.62 za sekundu)

Prenesené 35068.76 MiB (1168.95 MiB/s)

priepustnosť:
udalosti/s (eps): 1197008.6179
uplynulý čas: 30.0001 s
celkový počet udalostí: 35910413

Latencia (ms):
min: 0.00
priemer: 0.00
max: 16.90
95. percentil: 0.00
súčet: 43604.83

Spravodlivosť nití:
udalosti (priemer/stddev): 8977603.2500/233905.84
čas vykonania (priem./štddev): 10.9012/0.41

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=spustenie súboru 1G
sysbench 1.1.0-18a9f86 (pomocou balíka LuaJIT 2.1.0-beta3)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializuje sa generátor náhodných čísel z aktuálneho času

Príznaky otvorenia súboru navyše: (žiadne)
128 súborov, každý 8MiB
Celková veľkosť súboru 1GiB
Veľkosť bloku 4KiB
Počet požiadaviek IO: 0
Pomer čítania/zápisu pre kombinovaný náhodný test IO: 1.50
Periodická funkcia FSYNC je povolená, volá fsync() po každých 100 požiadavkách.
Volanie fsync() na konci testu, povolené.
Použitie synchrónneho režimu I/O
Robiť náhodný r/w test
Inicializujú sa pracovné vlákna…

Vlákna začali!

priepustnosť:
čítanie: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
zápis: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS=8226.98

Latencia (ms):
min: 0.00
priemer: 0.27
max: 18.01
95. percentil: 1.08
súčet: 238469.45

Táto poznámka začína vo veľkom

séria článkov o zálohovaní

  1. Zálohovanie, časť 1: Prečo je potrebné zálohovanie, prehľad metód, technológií
  2. Zálohovanie, časť 2: Kontrola a testovanie zálohovacích nástrojov založených na rsync
  3. Zálohovanie Časť 3: Kontrola a testovanie duplicity, duplicity, deja dup
  4. Zálohovanie Časť 4: Kontrola a testovanie zbackup, restic, borgbackup
  5. Zálohovanie, časť 5: Testovanie zálohovania bacula a veeam pre linux
  6. Zálohovanie Časť 6: Porovnanie nástrojov zálohovania
  7. Zálohovanie Časť 7: Závery

Zdroj: hab.com

Pridať komentár