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

Varnostno kopiranje, 1. del: Namen, pregled metod in tehnologij
Zakaj morate narediti varnostne kopije? Navsezadnje je oprema zelo, zelo zanesljiva, poleg tega pa obstajajo »oblaki«, ki so bolj zanesljivi kot fizični strežniki: s pravilno konfiguracijo lahko »oblačni« strežnik zlahka preživi okvaro infrastrukturnega fizičnega strežnika in od z vidika uporabnikov storitev bo prišlo do majhnega, komaj opaznega skoka v časovni storitvi. Poleg tega podvajanje informacij pogosto zahteva plačilo za "dodaten" procesorski čas, obremenitev diska in omrežni promet.

Idealen program deluje hitro, ne pušča pomnilnika, nima lukenj in ne obstaja.

-Neznano

Ker programe še vedno pišejo razvijalci proteinov in pogosto ni postopka testiranja, poleg tega pa so programi redko dostavljeni z uporabo »najboljših praks« (ki so tudi sami programi in zato nepopolni), morajo sistemski skrbniki najpogosteje reševati probleme, ki se slišijo kratko, a jedrnato: "vrni se na tisto, kar je bilo", "spravi bazo v normalno delovanje", "deluje počasi - vrni nazaj", in tudi moj najljubši "ne vem kaj, ampak popravi".

Poleg logičnih napak, ki nastanejo kot posledica neprevidnega dela razvijalcev ali spleta okoliščin, pa tudi nepopolnega poznavanja ali nerazumevanja majhnih funkcij gradnje programov - vključno s povezovalnimi in sistemskimi, vključno z operacijskimi sistemi, gonilniki in vdelano programsko opremo - so tudi druge napake. Na primer, večina razvijalcev se zanaša na čas izvajanja, popolnoma pozabijo na fizikalne zakone, ki jih je še vedno nemogoče obiti s programi. To vključuje neskončno zanesljivost diskovnega podsistema in na splošno katerega koli podsistema za shranjevanje podatkov (vključno z RAM-om in procesorskim predpomnilnikom!), ter ničelni čas obdelave na procesorju in odsotnost napak med prenosom po omrežju in med obdelavo na procesorja in zakasnitvijo omrežja, ki je enaka 0. Ne smete zanemariti razvpitega roka, ker če ga ne boste izpolnili pravočasno, bodo težave hujše od nians delovanja omrežja in diska.

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

Kaj storiti s težavami, ki se z vso silo dvignejo in visijo nad dragocenimi podatki? Nič ne more nadomestiti živih razvijalcev in ni dejstvo, da bo to mogoče v bližnji prihodnosti. Po drugi strani pa je le nekaj projektov uspelo v celoti dokazati, da bo program deloval, kot je bilo predvideno, in dokazov ne bo nujno mogoče prenesti in uporabiti pri drugih, podobnih projektih. Prav tako takšna dokazila vzamejo veliko časa in zahtevajo posebne veščine in znanja, kar praktično zmanjšuje možnost njihove uporabe ob upoštevanju rokov. Poleg tega še ne znamo uporabljati ultra hitre, poceni in neskončno zanesljive tehnologije za shranjevanje, obdelavo in prenos informacij. Takšne tehnologije, če obstajajo, so v obliki konceptov ali – največkrat – samo v znanstvenofantastičnih knjigah in filmih.

Dobri umetniki kopirajo, veliki umetniki kradejo.

—Pablo Picasso.

Najuspešnejše rešitve in presenetljivo preproste stvari se ponavadi zgodijo tam, kjer se srečajo na prvi pogled popolnoma nezdružljivi koncepti, tehnologije, znanja in področja znanosti.

Na primer, ptice in letala imajo krila, vendar kljub funkcionalni podobnosti - princip delovanja v nekaterih načinih je enak, tehnične težave pa se rešujejo na podoben način: votle kosti, uporaba močnih in lahkih materialov itd. - rezultati so popolnoma različni, čeprav zelo podobni. Najboljši primeri, ki jih vidimo v naši tehnologiji, so prav tako v veliki meri izposojeni iz narave: predelki pod tlakom ladij in podmornic so neposredna analogija z anelidi; izdelava raid nizov in preverjanje celovitosti podatkov - podvajanje verige DNK; pa tudi parni organi, neodvisnost dela različnih organov od centralnega živčnega sistema (avtomatizacija srca) in refleksi – avtonomni sistemi na internetu. Seveda je sprejemanje in uporaba že pripravljenih rešitev "na glavo" polno težav, a kdo ve, morda ni drugih rešitev.

Ko bi le vedel, kam boš padel, bi bil položil slamice!

— beloruski ljudski pregovor

To pomeni, da so varnostne kopije ključnega pomena za tiste, ki želijo:

  • Lahko obnovite delovanje svojih sistemov z minimalnimi izpadi ali celo brez njih
  • Ukrepajte pogumno, saj v primeru napake vedno obstaja možnost povrnitve
  • Zmanjšajte posledice namernega poškodovanja podatkov

Tukaj je malo teorije

Vsaka klasifikacija je poljubna. Narava ne razvršča. Razvrščamo, ker nam je bolj priročno. In razvrščamo po podatkih, ki jih vzamemo tudi poljubno.

— Jean Bruler

Ne glede na način fizičnega shranjevanja lahko logično shranjevanje podatkov razdelimo na dva načina dostopa do teh podatkov: blok in datoteka. Ta delitev je v zadnjem času zelo zabrisana, saj čisto blokovna, pa tudi čisto datotečna logična shramba ne obstaja. Vendar bomo zaradi poenostavitve domnevali, da obstajajo.

Blokovno shranjevanje podatkov pomeni, da obstaja fizična naprava, kjer so podatki zapisani v določenih fiksnih delih, blokih. Do blokov dostopamo na določenem naslovu, vsak blok ima svoj naslov znotraj naprave.

Varnostna kopija se običajno naredi s kopiranjem blokov podatkov. Zaradi zagotavljanja celovitosti podatkov je snemanje novih blokov, kot tudi sprememb obstoječih, začasno ustavljeno v času kopiranja. Če vzamemo analogijo iz običajnega sveta, je najbližje omara z enakimi oštevilčenimi celicami.

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

Shranjevanje datotečnih podatkov, ki temelji na načelu logične naprave, je blizu blokovnemu shranjevanju in je pogosto organizirano na vrhu. Pomembne razlike so prisotnost hierarhije shranjevanja in človeku berljiva imena. Abstrakcija je dodeljena v obliki datoteke - imenovanega podatkovnega območja, pa tudi imenika - posebne datoteke, v kateri so shranjeni opisi in dostop do drugih datotek. Datoteke so lahko opremljene z dodatnimi metapodatki: čas ustvarjanja, zastavice za dostop itd. Varnostne kopije se običajno naredijo na ta način: poiščejo spremenjene datoteke, nato pa jih kopirajo v drugo shrambo datotek z isto strukturo. Celovitost podatkov se običajno izvaja z odsotnostjo datotek, v katere se piše. Metapodatki datoteke so varnostno kopirani na enak način. Najbližja analogija je knjižnica, ki ima razdelke z različnimi knjigami, ima pa tudi katalog s človeku berljivimi imeni knjig.

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

V zadnjem času je včasih opisana še ena možnost, iz katere se je načeloma začelo shranjevanje podatkov datoteke in ima enake arhaične lastnosti: shranjevanje podatkov o predmetu.

Od shranjevanja datotek se razlikuje po tem, da nima več kot enega gnezdenja (flat sheme), imena datotek pa so, čeprav človeku berljiva, še vedno primernejša za strojno obdelavo. Pri izvajanju varnostnih kopij se objektna shramba najpogosteje obravnava podobno kot shramba datotek, občasno pa obstajajo tudi druge možnosti.

— Obstajata dve vrsti sistemskih skrbnikov, tisti, ki ne delajo varnostnih kopij, in tisti, ki to ŽE delajo.
- Pravzaprav obstajajo tri vrste: obstajajo tudi tisti, ki preverjajo, ali je varnostne kopije mogoče obnoviti.

-Neznano

Prav tako je vredno razumeti, da sam proces varnostnega kopiranja podatkov izvajajo programi, zato ima vse enake pomanjkljivosti kot kateri koli drug program. Za odpravo (ne odpravo!) odvisnosti od človeškega faktorja, pa tudi lastnosti - ki posamično nimajo močnega učinka, vendar skupaj lahko dajo opazen učinek - t.i. pravilo 3-2-1. Obstaja veliko možnosti, kako to dešifrirati, vendar mi je bolj všeč naslednja razlaga: shranjeni morajo biti 3 nizi istih podatkov, 2 niza morata biti shranjena v različnih formatih in 1 niz mora biti shranjen v geografsko oddaljeni shrambi.

Format shranjevanja je treba razumeti na naslednji način:

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

Da bi dosegli največji učinek pravila 3-2-1, je priporočljivo spremeniti format shranjevanja na oba načina.

Z vidika pripravljenosti varnostne kopije za predvideni namen - obnovitev funkcionalnosti - ločimo "vroče" in "hladne" varnostne kopije. Vroči se od hladnih razlikujejo le po eni stvari: takoj so pripravljeni za uporabo, hladni pa zahtevajo nekaj dodatnih korakov za obnovitev: dešifriranje, ekstrahiranje iz arhiva itd.

Ne zamenjujte vročih in hladnih kopij s spletnimi in nespletnimi kopijami, ki pomenijo fizično izolacijo podatkov in so pravzaprav še en znak razvrščanja metod varnostnega kopiranja. Torej je kopija brez povezave – ki ni neposredno povezana s sistemom, kjer jo je treba obnoviti – lahko vroča ali hladna (v smislu pripravljenosti za obnovitev). Spletna kopija je lahko dostopna neposredno tam, kjer jo je treba obnoviti, in najpogosteje je vroče, obstajajo pa tudi hladne.

Poleg tega ne pozabite, da se sam postopek ustvarjanja varnostnih kopij običajno ne konča z ustvarjanjem ene varnostne kopije, kopij pa je lahko precej veliko. Zato je treba razlikovati med popolnimi varnostnimi kopijami, tj. tiste, ki jih je mogoče obnoviti neodvisno od drugih varnostnih kopij, kot tudi diferencialne (inkrementalne, diferencialne, dekrementalne itd.) kopije - tiste, ki jih ni mogoče obnoviti neodvisno in zahtevajo predhodno obnovitev ene ali več drugih varnostnih kopij.

Diferencialne inkrementalne varnostne kopije so poskus prihranka prostora za shranjevanje varnostnih kopij. Tako se v varnostno kopijo zapišejo le spremenjeni podatki iz prejšnje varnostne kopije.

Diferencialne dekrementalne so ustvarjene za isti namen, vendar na nekoliko drugačen način: naredi se popolna varnostna kopija, vendar se dejansko shrani samo razlika med novo kopijo in prejšnjo.

Ločeno je vredno razmisliti o postopku varnostnega kopiranja nad shranjevanjem, ki podpira odsotnost shranjevanja dvojnikov. Če torej na to napišete popolne varnostne kopije, bodo dejansko zapisane samo razlike med varnostnimi kopijami, vendar bo postopek obnavljanja varnostnih kopij podoben obnovitvi iz celotne kopije in popolnoma pregleden.

Quis custodiet ipsos custodes?

(Kdo bo varoval same stražarje? - lat.)

Zelo neprijetno je, če ni varnostnih kopij, veliko slabše pa je, če se zdi, da je bila varnostna kopija narejena, vendar se pri obnovitvi izkaže, da je ni mogoče obnoviti, ker:

  • Celovitost izvornih podatkov je bila ogrožena.
  • Rezervni pomnilnik je poškodovan.
  • Obnovitev poteka zelo počasi; ne morete uporabiti podatkov, ki so bili delno obnovljeni.

Pravilno sestavljen proces varnostnega kopiranja mora upoštevati tovrstne pripombe, zlasti prva dva.

Celovitost izvornih podatkov je mogoče zagotoviti na več načinov. Najpogosteje uporabljeni so: a) ustvarjanje posnetkov datotečnega sistema na ravni bloka, b) “zamrznitev” stanja datotečnega sistema, c) posebna blokovna naprava s shranjevanjem različic, d) zaporedno snemanje datotek oz. bloki. Uporabijo se tudi kontrolne vsote, da se zagotovi preverjanje podatkov med obnovitvijo.

Poškodbe pomnilnika je mogoče zaznati tudi s pomočjo kontrolnih vsot. Dodaten način je uporaba specializiranih naprav ali datotečnih sistemov, v katerih že zapisanih podatkov ni mogoče spreminjati, lahko pa dodajamo nove.

Za pospešitev obnovitve se uporablja obnovitev podatkov z več procesi za obnovitev - pod pogojem, da ni ozkega grla v obliki počasnega omrežja ali počasnega diskovnega sistema. Če želite rešiti situacijo z delno obnovljenimi podatki, lahko postopek varnostnega kopiranja razdelite na relativno majhne podnaloge, od katerih se vsako izvaja ločeno. Tako postane možno dosledno obnoviti zmogljivost, hkrati pa predvideti čas obnovitve. Ta problem je največkrat v organizacijski ravni (SLA), zato se o tem ne bomo podrobneje ukvarjali.

Strokovnjak za začimbe ni tisti, ki jih doda vsaki jedi, ampak tisti, ki ji nikoli ne doda ničesar več.

-IN. Sinjavski

Prakse glede programske opreme, ki jo uporabljajo sistemski skrbniki, so lahko različne, vendar so splošna načela tako ali drugače še vedno enaka, zlasti:

  • Močno priporočamo uporabo že pripravljenih rešitev.
  • Programi bi morali delovati predvidljivo, tj. Ne sme biti nobenih nedokumentiranih funkcij ali ozkih grl.
  • Nastavitev vsakega programa mora biti tako preprosta, da vam ni treba vsakič prebrati priročnika ali goljufanja.
  • Če je le mogoče, naj bo rešitev univerzalna, saj strežniki se lahko zelo razlikujejo po lastnostih strojne opreme.

Obstajajo naslednji običajni programi za ustvarjanje varnostnih kopij iz blokovnih naprav:

  • dd, poznan veteranom sistemske administracije, to vključuje tudi podobne programe (isti dd_rescue, na primer).
  • Pripomočki, vgrajeni v nekatere datotečne sisteme, ki ustvarijo izpis datotečnega sistema.
  • Vsejedi pripomočki; na primer partclone.
  • Lastne, pogosto lastniške odločitve; na primer NortonGhost in novejši.

Za datotečne sisteme je problem varnostnega kopiranja delno rešen z metodami, ki veljajo za blokovne naprave, vendar je problem mogoče učinkoviteje rešiti z uporabo, na primer:

  • Rsync, splošni program in protokol za sinhronizacijo stanja datotečnih sistemov.
  • Vgrajena orodja za arhiviranje (ZFS).
  • Orodja za arhiviranje tretjih oseb; najbolj priljubljen predstavnik je katran. Obstajajo tudi drugi, na primer dar - zamenjava za tar, namenjena sodobnim sistemom.

Ločeno je treba omeniti programska orodja za zagotavljanje konsistentnosti podatkov pri ustvarjanju varnostnih kopij. Najpogosteje uporabljene možnosti so:

  • Namestitev datotečnega sistema v načinu samo za branje (ReadOnly) ali zamrznitev datotečnega sistema (freeze) - metoda je omejene uporabnosti.
  • Izdelava posnetkov stanja datotečnih sistemov ali blokovnih naprav (LVM, ZFS).
  • Uporaba orodij tretjih oseb za organiziranje vtisov, tudi v primerih, ko prejšnjih točk iz nekega razloga ni mogoče zagotoviti (programi, kot je hotcopy).
  • Tehnika kopiranja ob spremembi (CopyOnWrite) pa je največkrat vezana na uporabljeni datotečni sistem (BTRFS, ZFS).

Torej, za majhen strežnik morate zagotoviti varnostno shemo, ki izpolnjuje naslednje zahteve:

  • Enostaven za uporabo - med delovanjem niso potrebni posebni dodatni koraki, minimalni koraki za ustvarjanje in obnavljanje kopij.
  • Univerzalni - deluje na velikih in majhnih strežnikih; to je pomembno pri povečevanju števila strežnikov ali prilagajanju.
  • Namesti ga upravitelj paketov ali z enim ali dvema ukazoma, kot je »prenos in razpakiranje«.
  • Stabilen - uporablja se standardni ali dolgo uveljavljeni format za shranjevanje.
  • Hiter v delu.

Kandidati izmed tistih, ki bolj ali manj izpolnjujejo pogoje:

  • rdiff-varnostna kopija
  • rsnapshot
  • burp
  • dvojnik
  • dvojnost
  • naj dup
  • dati
  • zbackup
  • restic
  • borgbackup

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

Kot preskusna naprava bo uporabljen virtualni stroj (temelji na XenServerju) z naslednjimi značilnostmi:

  • 4 jedra 2.5 GHz,
  • 16 GB RAM,
  • 50 GB hibridnega pomnilnika (sistem za shranjevanje s predpomnjenjem na SSD 20 % velikosti virtualnega diska) v obliki ločenega virtualnega diska brez particioniranja,
  • 200 Mbps internetni kanal.

Skoraj isti stroj bo uporabljen kot rezervni sprejemni strežnik, le s 500 GB trdim diskom.

Operacijski sistem - Centos 7 x64: standardna particija, dodatna particija bo uporabljena kot vir podatkov.

Kot začetni podatek vzemimo spletno mesto WordPress s 40 GB medijskih datotek in bazo podatkov mysql. Ker se virtualni strežniki zelo razlikujejo po lastnostih in tudi zaradi boljše ponovljivosti, je tukaj

rezultati testiranja strežnika z uporabo sysbench.sysbench --threads=4 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.1.0-18a9f86 (z uporabo paketa LuaJIT 2.1.0-beta3)
Izvajanje testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa

Omejitev praštevil: 20000

Inicializacija delovnih niti ...

Niti so se začele!

Hitrost CPU-ja:
dogodkov na sekundo: 836.69

Pretočnost:
dogodki/i (eps): 836.6908
pretečeni čas: 30.0039s
skupno število dogodkov: 25104

Zakasnitev (ms):
min: 2.38
povprečje: 4.78
največ: 22.39
95. percentil: 10.46
vsota: 119923.64

Pravičnost 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=branje pomnilnika
sysbench 1.1.0-18a9f86 (z uporabo paketa LuaJIT 2.1.0-beta3)
Izvajanje testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa

Izvajanje preizkusa hitrosti pomnilnika z naslednjimi možnostmi:
velikost bloka: 1KiB
skupna velikost: 102400MiB
delovanje: branje
obseg: globalno

Inicializacija delovnih niti ...

Niti so se začele!

Skupno število operacij: 50900446 (1696677.10 na sekundo)

49707.47 MiB preneseno (1656.91 MiB/s)

Pretočnost:
dogodki/i (eps): 1696677.1017
pretečeni čas: 30.0001s
skupno število dogodkov: 50900446

Zakasnitev (ms):
min: 0.00
povprečje: 0.00
največ: 24.01
95. percentil: 0.00
vsota: 39106.74

Pravičnost niti:
dogodki (avg/stddev): 12725111.5000/137775.15
č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=zapisovanje v pomnilnik
sysbench 1.1.0-18a9f86 (z uporabo paketa LuaJIT 2.1.0-beta3)
Izvajanje testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa

Izvajanje preizkusa hitrosti pomnilnika z naslednjimi možnostmi:
velikost bloka: 1KiB
skupna velikost: 102400MiB
operacija: pisanje
obseg: globalno

Inicializacija delovnih niti ...

Niti so se začele!

Skupno število operacij: 35910413 (1197008.62 na sekundo)

35068.76 MiB preneseno (1168.95 MiB/s)

Pretočnost:
dogodki/i (eps): 1197008.6179
pretečeni čas: 30.0001s
skupno število dogodkov: 35910413

Zakasnitev (ms):
min: 0.00
povprečje: 0.00
največ: 16.90
95. percentil: 0.00
vsota: 43604.83

Pravičnost niti:
dogodki (avg/stddev): 8977603.2500/233905.84
č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
sysbench 1.1.0-18a9f86 (z uporabo paketa LuaJIT 2.1.0-beta3)
Izvajanje testa z naslednjimi možnostmi:
Število niti: 4
Inicializacija generatorja naključnih števil iz trenutnega časa

Dodatne zastavice za odprtje datotek: (brez)
128 datotek, vsaka po 8 MB
Skupna velikost datoteke 1 GiB
Velikost bloka 4KiB
Število IO zahtev: 0
Razmerje branja/pisanja za kombinirani naključni IO test: 1.50
Periodični FSYNC je omogočen, kliče fsync() vsakih 100 zahtev.
Klicanje fsync() na koncu preizkusa, omogočeno.
Uporaba sinhronega V/I načina
Izvajanje naključnega r/w testa
Inicializacija delovnih niti ...

Niti so se začele!

Pretočnost:
branje: 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

Zakasnitev (ms):
min: 0.00
povprečje: 0.27
največ: 18.01
95. percentil: 1.08
vsota: 238469.45

Ta opomba se začne veliko

serija člankov o varnostnem kopiranju

  1. Varnostno kopiranje, 1. del: Zakaj je potrebno varnostno kopiranje, pregled metod, tehnologij
  2. Varnostno kopiranje, 2. del: Pregled in testiranje orodij za varnostno kopiranje, ki temeljijo na rsync
  3. Varnostno kopiranje, 3. del: Pregled in testiranje dvojnosti, dvojnosti, deja dup
  4. Varnostno kopiranje, 4. del: Pregled in testiranje zbackup, restic, borgbackup
  5. Varnostno kopiranje, 5. del: Testiranje varnostnega kopiranja bacula in veeam za linux
  6. Varnostno kopiranje, 6. del: Primerjava orodij za varnostno kopiranje
  7. Varnostno kopiranje, 7. del: Zaključki

Vir: www.habr.com

Dodaj komentar