
ZaÅ”to je potrebno praviti sigurnosne kopije? Oprema je vrlo pouzdana, a tu su i 'oblaci' koji su pouzdaniji od fiziÄkih servera: uz pravilnu konfiguraciju, 'oblaÄni' server bez problema može preživjeti kvar fiziÄkog infrastrukturnog servera, dok Äe korisnici usluga primijetiti samo malo, gotovo neprimjetno poveÄanje vremena usluge. Osim toga, dupliciranje informacija Äesto zahtijeva plaÄanje za 'viÅ”ak' procesorskog vremena, optereÄenje diska i mrežni promet.
Idealni program brzo radi, ne curi tijekom koriŔtenja RAM-a, nema propusta i ne postoji.
āNepoznato
BuduÄi da programi joÅ” uvijek pisani od strane ljudskih programera, a proces testiranja Äesto izostaje, uz to se programski alati rijetko isporuÄuju primjenom Ā«best practicesĀ» (koje su same po sebi takoÄer programi, a samim time nisu savrÅ”eni), sistemskim administratorima najÄeÅ”Äe preostaje rjeÅ”avanje problema koji su kratki, ali jasni: Ā«vrati kako je biloĀ», Ā«uspostavi bazu na normalan radĀ», Ā«sporo radi ā vraÄamoĀ», a takoÄer i moj omiljeni: Ā«ne znam Å”to, ali popraviteĀ».
Osim logiÄkih greÅ”aka koje se pojavljuju kao rezultat nepažljivog rada programera, ili uslijed sluÄajnosti, kao i nedostatka znanja ili razumijevanja sitnih detalja u izradi programa ā ukljuÄujuÄi veze i sustave, poput operativnih sustava, drajvera i firmvera ā postoje i druge greÅ”ke. Na primjer, veÄina programera oslanja se na runtime, potpuno zaboravljajuÄi na fiziÄke zakone, koje je joÅ” uvijek nemoguÄe zaobiÄi pomoÄu programa. Ovo ukljuÄuje beskrajnu pouzdanost diskovnog sustava i bilo kojeg sustava za pohranu podataka (ukljuÄujuÄi RAM i procesorski keÅ”!), nultu obradu vremena na procesoru, te odsutnost greÅ”aka tijekom prijenosa putem mreže i obrade na procesoru, kao i odgodu u mreži koja je jednaka 0. Ne treba zaboraviti ni na poznati rok, jer ako ga ne stignemo ispoÅ”tovati ā nastat Äe problemi koji su ozbiljniji od mnogih nijansi rada mreže i diska.

Å to uÄiniti s problemima koji se nalaze na vidiku i prijete vrijednim podacima? Žive programere nije moguÄe zamijeniti, a nije ni sigurno hoÄe li biti moguÄe uskoro. S druge strane, potpuno dokazati da Äe program raditi kako je zamiÅ”ljeno uspjelo je samo nekoliko projekata, i nije nužno da Äe se dokazi moÄi primijeniti na druge sliÄne projekte. Takvi dokazi takoÄer oduzimaju puno vremena i zahtijevaju posebne vjeÅ”tine i znanja, Å”to gotovo minimalizira moguÄnost njihove primjene uzimajuÄi u obzir rokove. Osim toga, joÅ” uvijek ne znamo za super brzu, jeftinu i beskrajno pouzdanu tehnologiju za pohranu, obradu i prijenos informacija. Takve tehnologije, ako i postoje, najÄeÅ”Äe su u obliku koncepata ili, ÄeÅ”Äe, samo u fantastiÄnim knjigama i filmovima.
Dobri umjetnici kopiraju, veliki umjetnici kradu.
āPablo Picasso.
Najbolja rjeÅ”enja i neoÄekivano jednostavne stvari obiÄno se dogaÄaju tamo gdje se susreÄu naizgled potpuno nespojivi pojmovi, tehnologije, znanja, podruÄja znanosti.
Na primjer, ptice i avioni imaju krila, meÄutim, usprkos funkcionalnoj sliÄnosti ā naÄini djelovanja se u nekim režimima podudaraju, a tehniÄki problemi se rjeÅ”avaju na sliÄan naÄin: Å”uplje kosti, koriÅ”tenje Ävrstih i laganih materijala itd. ā rezultati su potpuno razliÄiti, iako vrlo sliÄni. Najbolji uzorci koje vidimo u naÅ”oj tehnologiji takoÄer su veÄinom posuÄeni iz prirode: hermetiÄki odjeli na brodovima i podmornicama ā izravna analogija s prstenastim crvima; gradnja raid-masiva i provjera cjelovitosti podataka ā dupliciranje DNK lanca; kao i parni organi, neovisnost rada razliÄitih organa od CNS-a (automatski rad srca) i refleksi ā autonomni sustavi na Internetu. Naravno, uzeti i primijeniti gotova rjeÅ”enja
Da znamo gdje pasti ā postavili bismo slamu!
āBjeloruska narodna poslovica
To znaÄi da su sigurnosne kopije od vitalnog znaÄaja za one koji žele:
- Imati moguÄnost oporaviti rad svojih sustava s minimalnim prekidima, ili Äak bez njih.
- Djelujte hrabro, jer u sluÄaju greÅ”ke uvijek postoji moguÄnost povratka.
- Minimizirati posljedice namjerne Ŕtete podataka.
Evo malo teorije.
Svaka klasifikacija je proizvoljna. Priroda ne klasificira. Klasificiramo mi jer nam je tako lakÅ”e. I klasificiramo prema podacima koje uzimamo takoÄer proizvoljno.
āJean BruyĆØre
Nezavisno od fiziÄkog naÄina pohranjivanja, logiÄko pohranjivanje podataka može se uvjetno podijeliti na 2 naÄina pristupa tim podacima: blokovno i datoteÄno. Ova podjela u posljednje vrijeme je priliÄno nejasna, jer Äisto blokovna, kao ni Äisto datoteÄna, logiÄka skladiÅ”ta ne postoje. MeÄutim, za jednostavnost Äemo smatrati da ona postoje.
Blokovno pohranjivanje podataka podrazumijeva da postoji fiziÄki ureÄaj na koji se podaci zapisuju nekim fiksnim porcijama, blokovima. Pristup blokovima ide prema nekoj adresi, a svaki blok ima svoju adresu unutar ureÄaja.
Sigurnosna kopija obiÄno se izraÄuje kopiranjem blokova podataka. Za osiguranje cjelovitosti podataka u trenutku kopiranja, obustavlja se upis novih blokova, kao i promjena postojeÄih. Ako uzmemo analogiju iz obiÄnog svijeta ā najbliža je ormar s jednakim numeriranim odjeljcima.

DatoteÄno pohranjivanje podataka po svojoj logiÄkoj strukturi blisko je blokovnom i Äesto se organizira preko njega. Važne razlike su prisutnost hijerarhije pohrane i imena razumljiva ljudima. IstiÄe se apstrakcija u obliku datoteke - imenovanog podruÄja podataka, kao i direktorija - posebne datoteke u kojoj se nalaze opisi i pristupi drugim datotekama. Datoteke mogu imati dodatne metapodatke: vrijeme stvaranja, oznake pristupa itd. ObiÄno se radi sigurnosna kopija na sljedeÄi naÄin: traže se izmijenjene datoteke, a zatim se kopiraju u drugu datoteÄnu pohranu s istom strukturom. Cjelovitost podataka obiÄno se osigurava putem nedostatka datoteka u koje se vrÅ”i upis. Metapodaci datoteka rezerviraju se sliÄno. Najbliža analogija je knjižnica u kojoj postoje odjeli s razliÄitim knjigama, a takoÄer postoji katalog s imenima knjiga razumljivim ljudima.

U posljednje vrijeme Äesto se opisuje joÅ” jedna varijanta, koja je zapravo i zapoÄela pohranu podataka, te koja ima iste arhaiÄne karakteristike: objektna pohrana podataka.
Razlikuje se od datoteÄne pohrane po tome Å”to nema ugniježdenosti veÄe od jedan (ravna shema), a imena datoteka, iako su Äitljiva za ljude, viÅ”e su prilagoÄena za obradu maÅ”inama. Pri izradi sigurnosnih kopija, objektna skladiÅ”ta se najÄeÅ”Äe obraÄuju sliÄno datoteÄnima, ali ponekad postoje i druge opcije.
ā Postoje dvije vrste sistemskih administratora, oni koji ne prave sigurnosne kopije, i oni koji VEÄ PRAVE.
ā U stvari, postoje tri vrste: tu su joÅ” i oni koji provjeravaju mogu li se sigurnosne kopije vratiti.āNepoznato
TakoÄer je važno razumjeti da se sam proces izrade sigurnosnih kopija podataka odvija putem programa, stoga mu nedostaju svi isti nedostaci kao i drugim programima. Da bi se uklonila (ne iskljuÄila!) ovisnost o ljudskom faktoru, kao i o posebnim znaÄajkama ā koje odvojeno ne utjeÄu znaÄajno, ali zajedno mogu dati znaÄajan uÄinak ā primjenjuje se tzv. pravilo 3-2-1. Postoji mnogo naÄina kako ga interpretirati, ali najviÅ”e mi se sviÄa sljedeÄa interpretacija: treba pohranjivati 3 seta istih podataka, 2 seta trebaju biti pohranjena u razliÄitim formatima, a 1 set treba biti smjeÅ”ten u geografski udaljenom skladiÅ”tu.
Pod formatom pohrane podrazumijeva se sljedeÄe:
- Ako postoji ovisnost o fiziÄkom naÄinu pohrane ā mijenjamo fiziÄki naÄin.
- Ako postoji ovisnost o logiÄkom naÄinu pohrane ā mijenjamo logiÄki naÄin.
Za postizanje maksimalnog uÄinka pravila 3-2-1 preporuÄuje se mijenjanje formata pohrane na oba naÄina.
S glediÅ”ta spremnosti sigurnosne kopije za njeno izvorno dodjeljivanje ā vraÄanje funkcionalnosti ā razlikuju se "vruÄe" i "hladne" sigurnosne kopije. VruÄe se razlikuju od hladnih samo po jednom: odmah su spremne za rad, dok hladne zahtijevaju dodatne radnje za vraÄanje: dekripciju, izdvajanje iz arhiva itd.
Ne treba mijeÅ”ati vruÄe i hladne kopije s online i offline kopijama, koje podrazumijevaju fiziÄku izolaciju podataka, i u osnovi predstavljaju drugu oznaku klasifikacije naÄina sigurnosnog kopiranja. Tako offline kopija ā koja nije izravno povezana sa sustavom u kojem je treba obnoviti ā može biti i vruÄa i hladna (s glediÅ”ta spremnosti za obnavljanje). Online kopija može biti dostupna izravno tamo gdje je potrebno obnoviti, a najÄeÅ”Äe je vruÄa, ali postoje i hladne.
Osim toga, ne treba zaboraviti da sam proces izrade sigurnosnih kopija obiÄno ne zavrÅ”ava na izradi jedne sigurnosne kopije, a kopija može biti dovoljno velika. Stoga je potrebno razlikovati potpune sigurnosne kopije, tj. one koje se mogu obnoviti neovisno o drugim sigurnosnim kopijama, kao i diferencijalne (inkrementalne, diferencijalne, dekrementalne itd.) kopije ā one koje se ne mogu obnoviti samostalno i zahtijevaju prethodnu obnovu jedne ili viÅ”e drugih sigurnosnih kopija.
Diferencijalne inkrementalne kopije ā pokuÅ”aj smanjivanja veliÄine prostora za pohranu sigurnosnih kopija. Tako se u sigurnosnu kopiju zapisuju samo promijenjeni podaci od posljednje sigurnosne kopije.
Diferencijalne dekrementalne kreiraju se s istim ciljem, ali neÅ”to drugaÄijim putem: radi se potpuna sigurnosna kopija, ali se zapravo pohranjuje samo razlika izmeÄu nove kopije i prethodne.
Posebno vrijedi razmotriti proces sigurnosnog kopiranja preko pohrane koja podržava odsutnost pohrane dupliciranih podataka. Tako, ako se piÅ”u potpune sigurnosne kopije preko nje, zapravo Äe se zapisati samo razlika izmeÄu sigurnosnih kopija, meÄutim, proces obnove sigurnosnih kopija Äe se odvijati sliÄno obnovi s pune kopije i potpuno prozraÄno.
Quis custodiet ipsos custodes?
(Tko Äe Äuvati same Äuvare? ā lat.)
Zapravo je vrlo neugodno kada nema sigurnosnih kopija, no mnogo je gore ako je sigurnosna kopija navodno napravljena, ali se prilikom obnavljanja otkriva da se ne može obnoviti zbog:
- Integritet izvornih podataka je naruŔen.
- SkladiÅ”te sa sigurnosnim kopijama je oÅ”teÄeno.
- Obnova radi priliÄno polako, ne možete koristiti podatke koji su djelomiÄno obnovljeni.
Ispravno izgraÄen proces sigurnosnog kopiranja treba uzeti u obzir ovakve komentare, posebno prva dva.
Cjelovitost izvornih podataka može se garantirati na nekoliko naÄina. NajÄeÅ”Äe koriÅ”teni su sljedeÄi: a) izrada snimaka datoteÄnog sustava na blokovnoj razini, b) "zamrzavanje" stanja datoteÄnog sustava, c) posebno blok ureÄaj s pohranom verzija, d) sekvencijalno zapisivanje datoteka ili blokova. TakoÄer se koriste kontrolne sume za provjeru podataka prilikom obnove.
OÅ”teÄenja pohrane mogu se takoÄer otkriti pomoÄu kontrolnih suma. Dodatna metoda je primjena specijaliziranih ureÄaja ili datoteÄnih sustava u kojima se ne mogu mijenjati veÄ napisani podaci, ali se mogu dodavati novi.
Za ubrzavanje obnove koristi se obnova podataka s viÅ”e procesa za obnovu ā pod uvjetom da ne postoji 'usko grlo' u obliku spore mreže ili sporog diska. Da bi se izbjegla situacija s djelomiÄno obnovljenim podacima, proces sigurnosnog kopiranja može se podijeliti na relativno male podzadatke, od kojih svaki može biti izvrÅ”en odvojeno. Tako postaje moguÄe sequentially obnavljati funkcionalnost s predviÄanjem vremena obnove. Ovaj problem najÄeÅ”Äe leži u organizacijskoj ravni (SLA), stoga se neÄemo detaljno zadržavati na tome.
ZnaÄenje zaÄina ne razumije onaj tko ih dodaje u svakog jela, veÄ onaj tko nikada ne doda niÅ”ta suviÅ”no.
āV. Sinjavski
Praksa vezana uz koriÅ”teni softver kod sistemskih administratora može se razlikovati, ali opÄa pravila su i dalje ista, posebno:
- Toplo se preporuÄuje koriÅ”tenje gotovih rjeÅ”enja.
- Programi trebaju raditi predvidljivo, tj. ne bi trebalo biti nedokumentiranih osobina ili uskih grla.
- Podesavanje svakog programa treba biti dovoljno jednostavno kako ne bi bilo potrebno svaki put Äitati upute ili biljeÅ”ke.
- RjeÅ”enje bi trebalo biti univerzalno, jer se serveri mogu znaÄajno razlikovati po svojim hardverskim karakteristikama.
Za izradu rezervnih kopija s blokovnih ureÄaja postoje sljedeÄi raÅ”ireni programi:
- dd, poznat veteranima sistemske administracije, ovdje takoÄer spadaju sliÄni programi (poput dd_rescue, na primjer).
- UgraÄeni alati u neke datoteÄne sustave koji stvaraju isjeÄak (dump) datoteÄnog sustava.
- Sveobuhvatni alati; na primjer, partclone.
- Vlastita, Äesto vlasniÄka, rjeÅ”enja; na primjer, NortonGhost i noviji.
Za datoteÄne sustave, problem rezervnog kopiranja djelomiÄno se rjeÅ”ava metodama primjenjivim na blokovne ureÄaje, no problem se može rijeÅ”iti i uÄinkovitije, koristeÄi, na primjer:
- Rsync, univerzalni program i protokol za sinkronizaciju stanja datoteÄnih sustava.
- UgraÄeni alati za arhiviranje (ZFS).
- Eksterni alati za arhiviranje; najpopularniji predstavnik je tar. Ima i drugih, poput dar ā zamjena za tar usmjerena na moderne sustave.
Odvojeno treba spomenuti softverske alate za osiguranje konzistentnosti podataka prilikom izrade rezervnih kopija. NajÄeÅ”Äe se primjenjuju sljedeÄe opcije:
- Prikazivanje datoteÄnog sustava u režimu samo za Äitanje (ReadOnly), ili zamrzavanje datoteÄnog sustava (freeze) ā metoda je primjenjiva ograniÄeno.
- IzraÄivanje isjeÄaka stanja datoteÄnog sustava ili blokovnog ureÄaja (LVM, ZFS).
- Primjena eksternih alata za organizaciju isjeÄaka, Äak i u sluÄajevima kada prethodne stavke nije moguÄe osigurati iz razliÄitih razloga (programi poput hotcopy).
- Tehnika kopiranja prilikom promjene (CopyOnWrite), iako je najÄeÅ”Äe vezana uz koriÅ”tenu datoteÄnu sistemu (BTRFS, ZFS).
Dakle, za mali server potrebno je osigurati shemu rezervnog kopiranja koja Äe ispuniti sljedeÄe zahtjeve:
- Jednostavna za koriÅ”tenje ā ne zahtijeva posebne dodatne radnje pri radu, minimalne radnje za izradu i obnavljanje kopija.
- Univerzalna ā radi i na velikim i na malim serverima; to je važno pri poveÄanju broja poslužitelja ili skaliranju.
- Instalira se putem paketnog menadžera, ili u jednu do dvije naredbe poput 'preuzimanje i raspakiranje'.
- Stabilna ā koristi standardni ili veÄ dugo ustaljeni format pohrane.
- Brza za rad.
Kandidati koji viŔe-manje ispunjavaju zahtjeve:
- rdiff-backup
- rsnapshot
- burp
- duplicati
- duplicity
- deja dup
- dar
- zbackup
- restic
- borgbackup

Testna platforma koristit Äe virtualni stroj (na osnovi XenServer) s sljedeÄim karakteristikama:
- 4 jezgre 2.5 GHz,
- 16 GB RAM-a,
- 50 GB hybrid storage (SAN s SSD cachingom od 20% veliÄine virtualnog diska) u obliku odvojenog virtualnog diska bez particioniranja,
- 200 Mbit/s kanal u Internet.
Kao prijemni server za sigurnosne kopije koristit Äe se praktiÄki isti stroj, samo s tvrdim diskom od 500 GB.
Operacijski sustav ā Centos 7 x64: standardna particioniranje, dodatni odjeljak bit Äe koriÅ”ten kao izvor podataka.
Kao izvorne podatke uzimamo web stranicu na WordPressu, s medijskim datotekama veliÄine 40 GB, bazom podataka na MySQL. BuduÄi da virtualni serveri se znaÄajno razlikuju po karakteristikama, te radi bolje reproducibilnosti, ovdje su
rezultati testiranja servera pomoÄu sysbench.sysbench āthreads=4 ātime=30 ācpu-max-prime=20000 cpu run
sysbench 1.1.0-18a9f86 (koriÅ”tenje ukljuÄene LuaJIT 2.1.0-beta3)
Pokretanje testa s sljedeÄim opcijama:
Broj threadova: 4
Inicijaliziranje generatora sluÄajnih brojeva iz trenutnog vremena
Maksimalni limit prostih brojeva: 20000
Inicijalizacija radnih threadovaā¦
Threadovi su pokrenuti!
Brzina procesora:
dogaÄaji po sekundi: 836.69
Propusnost:
dogaÄaji/s (eps): 836.6908
proteklo vrijeme: 30.0039s
ukupan broj dogaÄaja: 25104
Latencija (ms):
min: 2.38
avg: 4.78
max: 22.39
95. percentil: 10.46
zbroj: 119923.64
Pravednost threadova:
dogaÄaji (avg/stddev): 6276.0000/13.91
vrijeme izvrŔenja (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
sysbench 1.1.0-18a9f86 (koriÅ”tenje ukljuÄene LuaJIT 2.1.0-beta3)
Pokretanje testa s sljedeÄim opcijama:
Broj threadova: 4
Inicijaliziranje generatora sluÄajnih brojeva iz trenutnog vremena
Pokretanje testa brzine memorije s sljedeÄim opcijama:
veliÄina bloka: 1KiB
ukupna veliÄina: 102400MiB
operacija: Äitanje
opseg: globalni
Inicijalizacija radnih threadovaā¦
Threadovi su pokrenuti!
Ukupne operacije: 50900446 (1696677.10 po sekundi)
49707.47 MiB preneseno (1656.91 MiB/sec)
Propusnost:
dogaÄaji/s (eps): 1696677.1017
proteklo vrijeme: 30.0001s
ukupan broj dogaÄaja: 50900446
Latencija (ms):
min: 0.00
avg: 0.00
max: 24.01
95. percentil: 0.00
zbroj: 39106.74
Pravednost threadova:
dogaÄaji (avg/stddev): 12725111.5000/137775.15
vrijeme izvrŔenja (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
sysbench 1.1.0-18a9f86 (koriÅ”tenje ukljuÄene LuaJIT 2.1.0-beta3)
Pokretanje testa s sljedeÄim opcijama:
Broj threadova: 4
Inicijaliziranje generatora sluÄajnih brojeva iz trenutnog vremena
Pokretanje testa brzine memorije s sljedeÄim opcijama:
veliÄina bloka: 1KiB
ukupna veliÄina: 102400MiB
operacija: pisanje
opseg: globalni
Inicijalizacija radnih threadovaā¦
Threadovi su pokrenuti!
Ukupne operacije: 35910413 (1197008.62 po sekundi)
35068.76 MiB preneseno (1168.95 MiB/sec)
Propusnost:
dogaÄaji/s (eps): 1197008.6179
proteklo vrijeme: 30.0001s
ukupan broj dogaÄaja: 35910413
Latencija (ms):
min: 0.00
avg: 0.00
max: 16.90
95. percentil: 0.00
zbroj: 43604.83
Pravednost threadova:
dogaÄaji (avg/stddev): 8977603.2500/233905.84
vrijeme izvrŔenja (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 (koriÅ”tenje ukljuÄene LuaJIT 2.1.0-beta3)
Pokretanje testa s sljedeÄim opcijama:
Broj threadova: 4
Inicijaliziranje generatora sluÄajnih brojeva iz trenutnog vremena
Dodatne oznake za otvaranje datoteka: (nema)
128 datoteka, svaka 8MiB
1GiB ukupna veliÄina datoteke
VeliÄina bloka 4KiB
Broj IO zahtjeva: 0
Omjer Äitanja/pisanja za kombinirani test nasumiÄnog IO: 1.50
PeriodiÄni FSYNC omoguÄen, pozivajuÄi fsync() svake 100 zahtjeva.
Pozivanje fsync() na kraju testa, omoguÄeno.
KoristeÄi sinkroni I/O naÄin
IzvoÄenje nasumiÄnog r/w testa
Inicijalizacija radnih threadovaā¦
Threadovi su pokrenuti!
Propusnost:
Äitanje: 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
Latencija (ms):
min: 0.00
prosjek: 0.27
maks: 18.01
95. percentil: 1.08
zbroj: 238469.45
Ovim biljeÅ”ke poÄinje veliki
ciklus Älanaka o sigurnosnom kopiranju
- Sigurnosno kopiranje, dio 1: ZaŔto je potrebno sigurnosno kopiranje, pregled metoda, tehnologija
- Sigurnosno kopiranje, dio 2: Pregled i testiranje rsync-based sredstava za sigurnosno kopiranje
- Sigurnosno kopiranje, dio 3: Pregled i testiranje duplicity, duplicaty, deja dup
- Backup, dio 4: Pregled i testiranje zbackup, restic, borgbackup
- Sigurnosno kopiranje, dio 5: Testiranje bacula i veeam backup za linux
- Backup, dio 6: Usporedba alata za izradu sigurnosnih kopija
- Backup, dio 7: ZakljuÄci
Izvor: habr.com
