Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij

Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij
Zakaj je treba delati varnostne kopije? Oprema je zelo in zelo zanesljiva, poleg tega so tu 'oblaki', ki so zanesljivejši od fizičnih strežnikov: pri pravilni nastavitvi lahko 'oblačni' strežnik enostavno preživi okvaro infrastrukture fizičnega strežnika, kar bo za uporabnike storitev povzročilo majhen, komaj opazen skok v času obravnave. Poleg tega podvajanje informacij pogosto pomeni dodatne stroške procesorskega časa, obremenitve diska in omrežnega prometa.

Idealni program deluje hitro, ne pušča po pomnilniku, nima napak in ne obstaja.

—Neznanec

Ker programe še vedno pišejo človeški razvijalci, testiranje pa pogosto ni prisotno, poleg tega se dostava programov redko opravi z uporabo 'najboljših praks' (ki so same po sebi prav tako programi in torej nepopolni), se sistemskim administratorjem pogosto postavljajo naloge, ki se zdijo kratke, a zelo vsebine: 'vrni nazaj, kot je bilo', 'privedi bazo nazaj v normalno delovanje', 'počasno deluje — vračamo nazaj', pa tudi moja najljubša 'ne vem kaj, a popravi'.

Poleg logičnih napak, ki se pojavijo kot posledica neprevidnega dela razvijalcev ali naključnih okoliščin, ter zaradi pomanjkljivega znanja ali razumevanja manjših posebnosti razvoja programov — vključno s povezovalnimi in sistemskimi, vključno z operacijskimi sistemi, gonilniki in programsko opremo — obstajajo tudi druge napake. Na primer, večina razvijalcev se zanaša na runtime, popolnoma pozabljajoč na fizična pravila, katerih s programi še vedno ni mogoče obiti. To vključuje neskončno zanesljivost disčnih podsistemov in pravzaprav katerega koli sistema za shranjevanje podatkov (vključno s pomnilnikom in procesorskim predpomnilnikom!), ničelno obdelovalno zamudo na procesorju, odsotnost napak pri prenosu podatkov po omrežju in pri obdelavi na procesorju ter zamude v omrežju, ki so enake 0. Ne smemo pozabiti niti na zloglasni rok, ker, če ga ne uspemo izpolniti — bodo težave, ki so lahko še hujše od odtenkov delovanja omrežja in diska.

Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij

Kaj naj storimo glede težav, ki se pojavijo in visijo nad dragocenimi podatki? Živih razvijalcev ni mogoče zamenjati, poleg tega pa ni nujno, da jih bomo lahko kmalu našli. Po drugi strani pa so doslej le nekateri projekti uspeli dokazati, da programska oprema deluje, kot je bilo zamišljeno, in ni nujno, da lahko te dokaze uporabimo na podobnih projektih. Takšni dokazi zahtevajo ogromno časa ter posebne spretnosti in znanje, kar praktično zmanjšuje možnosti njihove uporabe ob obratih. Poleg tega še vedno ne obvladamo superhitre, poceni in neskončno zanesljive tehnologije za shranjevanje, obdelavo in prenos informacij. Takšne tehnologije, če sploh obstajajo, so večinoma le v obliki konceptov ali — pogosteje — le v fantastičnih knjigah in filmih.

Dobri umetniki kopirajo, veliki umetniki kradejo.

—Pablo Picasso.

Najboljši in presenetljivo preprosti koncepti pogosto nastanejo tam, kjer se srečujejo na prvi pogled popolnoma nezdružljiva pojma, tehnologije, znanja in znanstvena področja.

Na primer, ptice in letala imata krila, vendar kljub funkcionalni podobnosti — princip delovanja se v nekaterih režimih ujema, in tehnične težave se rešujejo podobno: votle kosti, uporaba trdnih in lahkih materialov itd. — so rezultati povsem drugačni, čeprav zelo podobni. Najboljši modeli, ki jih opazujemo v naši tehniki, so prav tako večinoma prevzeti iz narave: hermetični oddelki na ladjah in podmornicah so neposredna analogija s kolobarjevimi črvi; gradnja raid-masivov in preverjanje celovitosti podatkov — podvajanje DNK verige; prav tako parni organi, neodvisno delovanje različnih organov od CNS (avtomatika delovanja srca) in refleksi — avtonomni sistemi v internetu. Seveda imeti in uporabiti pripravne rešitve 'na pamet' prinaša težave, a kdo ve, morda drugih rešitev sploh ni.

Kje bi padel, bi si slamo podložil!

—Beloruska ljudska pregovorna modrost

Torej so rezervne kopije življenjskega pomena za tiste, ki želijo:

  • Imeti možnost, da obnovijo delovanje svojih sistemov z minimalnimi zastoji ali celo brez njih.
  • Delujte s zaupanjem, saj v primeru napake vedno obstaja možnost povrata.
  • Minimiziranje posledic namernega uničenja podatkov.

Tukaj je malo teorije.

Vsaka klasifikacija je poljubna. Narava ne klasificira. Klasificiramo mi, ker je to za nas bolj priročno, in klasificiramo glede na podatke, ki jih prav tako izbiramo poljubno.

—Jean Bruyère

Ne glede na fizični način shranjevanja, lahko logično shranjevanje podatkov grobo razdelimo na dva načina dostopa do teh podatkov: blokovno in datotečno. Takšna delitev je v zadnjem času precej zamegljena, saj čisto blokovnih ali čisto datotečnih logičnih shranjevalnikov dejansko ni. Vendar naj enostavno domneva, da obstajajo.

Blokovno shranjevanje podatkov pomeni, da obstaja fizična naprava, kamor se podatki zapisujejo v nekaterih fiksnih delih, blokih. Dostop do blokov poteka preko nekega naslova, vsak blok ima svoj naslov znotraj naprave.

Varnostna kopija se običajno izvaja z kopiranjem blokov podatkov. Da bi zagotovili celovitost podatkov ob času kopiranja, se ustavi zapis novih blokov in spremembe obstoječih. Če vzamemo analogijo iz običajnega sveta, je najbolj podobna omara z enakimi oštevilčenimi predali.

Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij

Datotečno shranjevanje podatkov po načelu logične naprave je blizu blokovnemu in pogosto se organizira nad njim. Pomembne razlike so prisotnost hierarhije shranjevanja in razumljiva imena. Izpostavlja se abstrakcija v obliki datoteke — poimenovanega območja podatkov, pa tudi imenik — poseben dokument, v katerem so shranjeni opisi in dostopi do drugih datotek. Datoteke so lahko opremljene z dodatnimi metapodatki: čas ustvarjanja, dostopne zastavice itd. Varnostno kopiranje se običajno izvaja tako, da se poiščejo spremenjene datoteke, nato pa se kopirajo v drugo, strukturalno enako datotečno shranjevanje. Celovitost podatkov se običajno izvaja s pomanjkanjem datotek, v katere poteka zapis. Metapodatki datotek se rezervirajo na podoben način. Najbližja analogija je knjižnica, v kateri so različni oddelki z različnimi knjigami, ter je tudi katalog z razumljivimi imeni knjig.

Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij

V zadnjem času se včasih opisuje še ena različica, s katero se je v bistvu začelo shranjevanje podatkov in ki ima iste arhaične značilnosti: objektno shranjevanje podatkov.

Razlikuje se od shranjevanja datotek po tem, da nima več kot enega nivoja (ploščata shema), imena datotek pa so, čeprav berljiva, bolje prilagojena za obdelavo s stroji. Pri varnostnem kopiranju objektni shranjevalniki večinoma delujejo podobno kot datotečni, vendar redko obstajajo tudi druge možnosti.

— Obstajajo dve vrsti sistemskih administratorjev: tisti, ki ne delajo varnostnih kopij, in tisti, ki JIH ŽE delajo.
— Dejansko so trije: obstajajo še tisti, ki preverjajo, ali je mogoče varnostne kopije obnoviti.

—Neznanec

Prav tako je pomembno razumeti, da se sam proces varnostnega kopiranja podatkov izvaja s programi, zato ima vse iste slabosti kot vsaka druga programska oprema. Da bi zmanjšali (ne izključili!) odvisnost od človeškega faktorja in posebnosti — ki morda posamezno ne vplivajo močno, a skupaj lahko privedejo do opaznega učinka — se uporablja t. i. pravilo 3-2-1. Obstaja mnogo načinov, kako ga razlagati, vendar mi je bolj všeč naslednja interpretacija: shraniti je treba 3 nize istih podatkov, 2 niza je treba shraniti v različnih formatih, in 1 niz je treba imeti na geografsko oddaljenem shranjevanju.

Pod formatom shranjevanja se razume naslednje:

  • Če obstaja odvisnost od fizičnega načina shranjevanja — spremenimo fizični način.
  • Če obstaja odvisnost od logičnega načina shranjevanja — spremenimo logični način.

Za dosego maksimalnega učinka pravila 3-2-1 se priporoča, da se format shranjevanja spreminja na oba načina.

Z vidika pripravljenosti varnostne kopije za njeno neposredno nalogo — obnovo delovanja — razlikujemo 'vroče' in 'hladne' varnostne kopije. Vroče se od hladnih razlikujejo le v eni stvari: takoj so pripravljene za delo, medtem ko hladne zahtevajo dodatne korake za obnovo: dešifriranje, pridobivanje iz arhiva itd.

Ne zamenjujte vroče in hladne kopije s spletnimi in brez povezave kopijami, ki pomenijo fizično izolacijo podatkov in so v bistvu drugačna kategorija klasifikacije načinov varnostnega kopiranja. Tako je brez povezave kopija - ni neposredno povezana s sistemom, kjer jo je treba obnoviti - lahko tako vroča kot hladna (z vidika pripravljenosti za obnovitev). Spletna kopija je lahko dostopna tam, kjer jo je treba obnoviti, in je največkrat vroča, vendar so lahko tudi hladne.

Poleg tega ne smete pozabiti, da se sam postopek ustvarjanja varnostnih kopij običajno ne konča z ustvarjanjem ene same varnostne kopije, temveč lahko kopij obstaja precejšnje število. Zato je treba razlikovati med popolnimi varnostnimi kopijami, tj. tistimi, ki so obnovljive neodvisno od drugih varnostnih kopij, pa tudi med razlikovnimi (inkrementalnimi, diferencialnimi, dekremenalnimi itd.) kopijami - tistimi, ki jih ni mogoče obnoviti samostojno in zahtevajo predhodno obnovitev ene ali več drugih varnostnih kopij.

Razlikovne inkrementalne kopije so poskus, da bi prihranili prostor za shranjevanje varnostnih kopij. Tako se v varnostno kopijo zapišejo le spremenjeni podatki od zadnje varnostne kopije.

Razlikovne dekremenalne kopije se ustvarjajo z enakim namenom, vendar nekoliko drugače: naredi se popolna varnostna kopija, vendar se dejansko hrani le razlika med svežo kopijo in prejšnjo.

Posebej je vredno razmisliti o procesu varnostnega kopiranja nad shranjevanjem, ki podpira pomanjkanje shranjevanja podvojenih podatkov. Tako, če zapisujemo popolne varnostne kopije nad njim, se dejansko zapiše le razlika med varnostnimi kopijami, vendar se bo proces obnove varnostnih kopij odvijal podobno kot obnova iz popolne kopije in popolnoma prozorno.

Quis custodiet ipsos custodes?

(Kdo bo varoval same varuhe? — latinščina)

Zelo neprijetno je, ko varnostne kopije ne obstajajo, vendar je še huje, če je varnostna kopija na videz narejena, vendar se ob obnovi izkaže, da je ni mogoče obnoviti, ker:

  • Celovitost izvornih podatkov je bila motena.
  • Shranjevanje varnostnih kopij je poškodovano.
  • Obnova poteka precej počasi, ni mogoče uporabljati podatkov, ki so delno obnovljeni.

Pravilno zasnovan postopek varnostnega kopiranja mora upoštevati take pripombe, zlasti prvih dveh.

Celovitost izvornih podatkov je mogoče zagotoviti na več načinov. Najpogosteje se uporabljajo naslednje metode: a) izdelava posnetkov datotečnega sistema na blokovni ravni, b) 'zamrznitev' stanja datotečnega sistema, c) posebno blokovno napravo za shranjevanje različic, d) zaporedno zapisovanje datotek ali blokov. Prav tako se uporabljajo kontrolne vsote za zagotavljanje preverjanja podatkov med obnovitvijo.

Okvare shranjevanja je mogoče prav tako odkriti s pomočjo kontrolnih vsot. Dodatna metoda je uporaba specializiranih naprav ali datotečnih sistemov, v katerih ni mogoče spreminjati že zapisanih podatkov, temveč je mogoče dodajati nove.

Za pospešitev obnove se uporablja obnova podatkov z več procesi za obnovo — pod pogojem, da ni 'ozkih grl' v obliki počasnega omrežja ali počasnega sistemskega diska. Da bi se izognili situaciji delno obnovljenih podatkov, lahko postopek varnostnega kopiranja razdelimo na relativno majhne podnaloge, ki jih vsako izvajamo posebej. Tako imamo možnost zaporedno obnoviti delovanje s napovedovanjem časa obnove. Ta težava je najpogosteje organizacijske narave (SLA), zato se ne bomo na to podrobno ustavili.

Ne ve dosti o začimbah tisti, ki jih doda v vsako jed, ampak tisti, ki nikoli ne doda ničesar odvečne.

—V. Sinjavski

Praksa v zvezi z uporabo programske opreme pri sistemskih administratorjih se lahko razlikuje, vendar so osnovna načela vseeno, takšna ali drugačna, enaka, zlasti:

  • Priporočljivo je uporabljati pripravljene rešitve.
  • Programi morajo delovati predvidljivo, torej ne sme biti nedokumentiranih posebnosti ali ozkih grl.
  • Nastavitev vsakega programa mora biti enostavna, da ni treba vsakič znova brati priročnika ali opomnika.
  • Rešitev mora biti univerzalna, saj se strežniki po svojih strojnih značilnostih lahko precej razlikujejo.

Za ustvarjanje varnostnih kopij z blokovnimi napravami so na voljo naslednji razširjeni programi:

  • dd, ki je znana veteranom sistemskega administriranja; tukaj spadajo tudi podobni programi (na primer dd_rescue).
  • Vgrajeni programi v nekatere datotečne sisteme, ki ustvarjajo odtis (dump) datotečnega sistema.
  • Vsestranski pripomočki; na primer, partclone.
  • Lastne, pogosto patacijo zaščitene rešitve; na primer, NortonGhost in novejše različice.

Za datotečne sisteme se naloga varnostnega kopiranja delno rešuje z metodami, uporabnimi za blokovne naprave, vendar je nalogo možno rešiti tudi bolj učinkovito, na primer:

  • Rsync, univerzalni program in protokol za sinhronizacijo stanja datotečnih sistemov.
  • Vgrajena sredstva za arhiviranje (ZFS).
  • Tretja sredstva za arhiviranje; najbolj priljubljen predstavnik je tar. Obstajajo tudi drugi, na primer, dar — zamenjava tar, usmerjena na sodobne sisteme.

Posebej je vredno omeniti programska sredstva za zagotavljanje doslednosti podatkov pri ustvarjanju varnostnih kopij. Najpogosteje se uporabljajo naslednje možnosti:

  • Priključitev datotečnega sistema v način samo za branje (ReadOnly) ali zamrznitev datotečnega sistema (freeze) — ta metoda je omejena.
  • Ustvarjanje odtisov stanja datotečnega sistema ali blokovne naprave (LVM, ZFS).
  • Uporaba tretjih sredstev za organizacijo odtisov, tudi v primerih, ko prejšnji koraki niso izvedljivi iz kakršnih koli razlogov (programi vrste hotcopy).
  • Tehnika kopiranja ob spremembi (CopyOnWrite), ki pa je pogosto vezana na uporabljeni FS (BTRFS, ZFS).

Torej, za majhen strežnik je treba zagotoviti shemo varnostnega kopiranja, ki izpolnjuje naslednje zahteve:

  • Enostavna za uporabo — ni potrebnih posebnih dodatnih dejanj pri delovanju, minimalna dejanja za ustvarjanje in obnavljanje kopij.
  • Univerzalna — deluje tako na velikih kot na majhnih strežnikih; to je pomembno ob naraščajočem številu strežnikov ali pri širjenju.
  • Namesti se z upravljalnikom paketov ali v eni–dveh ukazih vrste 'prenesite in razpakirajte'.
  • Stabilna - se uporablja standardni ali že dolgo ustaljen format shranjevanja.
  • Hitra pri delu.

Kandidati, ki v večji meri ustrezajo zahtevam:

  • rdiff-backup
  • rsnapshot
  • burp
  • duplicati
  • duplicity
  • deja dup
  • dar
  • zbackup
  • restic
  • Kot testno okolje bo uporabljena virtualna naprava (na osnovi XenServer) z naslednjimi značilnostmi:

Varnostno kopiranje, del 1: Namen, pregled metod in tehnologij

4 jedra 2.5 GHz,

  • 16 GB RAM-a,
  • 50 GB hibridnega shranjevanja (SBD z 20% SSD predpomnjenjem glede na velikost virtualnega diska) v obliki ločenega virtualnega diska brez particioniranja,
  • 200 Mbit/s povezava z internetom.
  • Kot strežnik za sprejemanje varnostnih kopij bo uporabljena praktično enaka naprava, samo s trdim diskom velikosti 500 GB.

Operacijski sistem - Centos 7 x64: standardna razdelitev; dodaten razdelek se bo uporabljal kot vir podatkov.

Kot izvorne podatke bomo uporabili spletno stran na wordpressu, z medijskimi datotekami velikosti 40 GB in bazo podatkov na mysql. Ker

virtualni strežniki se zelo razlikujejo po značilnostih, ter za boljšo reproducibilnost so tukaj rezultati testiranja strežnika s pomočjo sysbench.

sysbench --threads=4 --time=30 --cpu-max-prime=20000 cpu runsysbench 1.1.0-18a9f86 (uporablja priloženi LuaJIT 2.1.0-beta3)
Zagon testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa
Meja prostih števil: 20000

Inicializacija delovnih niti…

Niti so bile začete!

Hitrost CPU:

dogodki na sekundo: 836.69
Pretočnost:

dogodki/s (eps): 836.6908
čas, pretečen: 30.0039s
skupno število dogodkov: 25104
Zakasnitev (ms):

min: 2.38
avg: 4.78
max: 22.39
95. percentil: 10.46
vsota: 119923.64
Poštenost niti:

dogodki (avg/stddev): 6276.0000/13.91
čas izvajanja (avg/stddev): 29.9809/0.01
sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory run

Zagon testa hitrosti pomnilnika z naslednjimi možnostmi:
Zagon testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa
Meja prostih števil: 20000

velikost bloka: 1KiB
skupna velikost: 102400MiB
operacija: branje
obseg: globalno
Skupno število operacij: 50900446 (1696677.10 na sekundo)

Niti so bile začete!

Hitrost CPU:

49707.47 MiB prenesenih (1656.91 MiB/s)

dogodki/s (eps): 1696677.1017

dogodki/s (eps): 836.6908
čas, pretečen: 30.0001s
skupno število dogodkov: 50900446
min: 0.00

min: 2.38
avg: 0.00
max: 24.01
95. percentil: 0.00
vsota: 39106.74
dogodki (avg/stddev): 12725111.5000/137775.15

dogodki (avg/stddev): 6276.0000/13.91
čas izvajanja (avg/stddev): 9.7767/0.10
sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory run

operacija: pisanje
Zagon testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa
Meja prostih števil: 20000

velikost bloka: 1KiB
skupna velikost: 102400MiB
operacija: branje
Skupno število operacij: 35910413 (1197008.62 na sekundo)
Skupno število operacij: 50900446 (1696677.10 na sekundo)

Niti so bile začete!

Hitrost CPU:

35068.76 MiB prenesenih (1168.95 MiB/s)

dogodki/s (eps): 1197008.6179

dogodki/s (eps): 836.6908
skupno število dogodkov: 35910413
skupno število dogodkov: 50900446
max: 16.90

min: 2.38
avg: 0.00
max: 24.01
vsota: 43604.83
vsota: 39106.74
dogodki (avg/stddev): 8977603.2500/233905.84

dogodki (avg/stddev): 6276.0000/13.91
čas izvajanja (avg/stddev): 10.9012/0.41
sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run

Dodatne možnosti za odpiranje datotek: (noben)
Zagon testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa
Meja prostih števil: 20000

128 datotek, 8MiB vsaka
Skupna velikost datotek 1GiB
Velikost bloka 4KiB
Število IO zahtevkov: 0
Razmerje branja/pisanja med testom naključnega IO: 1.50
Periodični FSYNC omogočen, klic fsync() vsakih 100 zahtevkov.
Klic fsync() na koncu testa, omogočeno.
Uporaba sinhronega I/O načina
Izvajanje naključnega r/w testa
Izvajanje naključnega r/w testa
Niti so bile začete!

Hitrost CPU:

dogodki/s (eps): 836.6908
bere: IOPS=3868.21 15.11 MiB/s (15.84 MB/s)
pisanje: IOPS=2578.83 10.07 MiB/s (10.56 MB/s)
fsync: IOPS=8226.98

min: 2.38
avg: 0.00
povprečno: 0.27
maks: 18.01
95. percentil: 1.08
vsota: 238469.45

Ta opomba začenja velik

cikel člankov o varnostnem kopiranju

  1. Varnostno kopiranje, del 1: Zakaj je varnostno kopiranje potrebno, pregled metod in tehnologij
  2. Varnostno kopiranje, del 2: Pregled in testiranje orodij za varnostno kopiranje, temelječih na rsync
  3. Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicaty, deja dup
  4. Varnostno kopiranje, del 4: Pregled in testiranje zbackup, restic, borgbackup
  5. Varnostno kopiranje, del 5: Testiranje bacula in veeam backup for linux
  6. Varnostno kopiranje, del 6: Primerjava orodij za varnostno kopiranje
  7. Varnostno kopiranje, del 7: Sklepi

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster