
U ovom će se članku razmatrati softverski alati za izradu sigurnosnih kopija, koji razdvajanjem toka podataka na pojedinačne komponente (chunks) formiraju repozitorij.
Komponente repozitorija mogu se dodatno komprimirati i šifrirati, a najvažnije je da se pri ponovnim procesima izrade sigurnosnih kopija ponovo koriste.
Sigurnosna kopija u takvom repozitoriju je imenovani lanac povezanih komponenti, na primjer, na temelju različitih hash funkcija.
Postoji nekoliko sličnih rješenja, a ja ću se osvrnuti na 3: zbackup, borgbackup i restic.
Očekivani rezultati
Budući da svi kandidati zahtijevaju stvaranje repozitorija, jedan od najvažnijih faktora bit će procjena veličine repozitorija. U idealnom slučaju njegova veličina ne bi trebala biti veća od 13 GB prema usvojenoj metodologiji, a možda čak i manje — pod uvjetom dobre optimizacije.
Također, izuzetno je poželjno imati mogućnost izrade sigurnosnih kopija datoteka izravno, bez korištenja arhivatora poput tar, kao i rad s ssh/sftp bez dodatnih alata poput rsync i sshfs.
Ponašanje prilikom izrade sigurnosnih kopija:
- Veličina repozitorija bit će jednaka veličini promjena, ili manja.
- Očekuje se velika opterećenja procesora prilikom korištenja kompresije i/ili šifriranja, a također je vjerojatno da će biti značajno opterećenje mreže i diskovnog sustava, ako proces arhiviranja i/ili šifriranja radi na poslužitelju za pohranu sigurnosnih kopija.
- Ako dođe do oštećenja repozitorija, mogu se pojaviti odgođene greške prilikom izrade novih sigurnosnih kopija, kao i prilikom pokušaja oporavka. Trebalo bi planirati dodatne mjere za osiguranje integriteta repozitorija ili koristiti ugrađene alate za provjeru njegove cjelovitosti.
Kao referentna vrijednost uzeta je obrada s tar-om, kako je to pokazano u jednom od prethodnih članaka.
Testiranje zbackup-a
Opći mehanizam rada zbackupa sastoji se u tome da program pronalazi u toku podataka, koji se predaje na ulazu, područja koja sadrže jednake podatke, a zatim ih po potrebi komprimira, šifrira, čuvajući svako područje samo 1 put.
Za deduplifikaciju koristi se 64-bitna kružna hash funkcija sa pomičnim prozorom za bajt-po-bajt provjeru podudarnosti sa već postojećim blokovima podataka (slično onome kako je to implementirano u rsync-u).
Za kompresiju se koristi lzma i lzo u višezadaćnom izvođenju, a za šifriranje — aes. U novijim verzijama dodana je mogućnost budućeg brisanja starih podataka iz repozitorija.
Program je napisan na C++ s minimalnim zavisnostima. Autor se očito inspirirao unix-way, pa program prihvaća podatke na stdin prilikom izrade sigurnosnih kopija, isporučujući sličan tok podataka u stdout prilikom vraćanja. Tako se zbackup može koristiti kao vrlo dobar 'kamen' prilikom pisanja vlastitih rješenja za sigurnosno kopiranje. Na primjer, za autora članka ovaj program je glavno sredstvo za sigurnosno kopiranje za kućne računale otprilike od 2014. godine.
Kao tok podataka koristiti će se obični tar, osim ako nije drugačije navedeno.
Pogledajmo kakvi će biti rezultati:
Provjera rada obavljena je u 2 varijante:
- stvara se repozitorij i pokreće zbackup na serveru s izvornih podacima, zatim se sadržaj repozitorija prenosi na server za pohranu sigurnosnih kopija.
- stvara se repozitorij na serveru za pohranu sigurnosnih kopija, pokreće se zbackup putem ssh na serveru za pohranu sigurnosnih kopija, a podaci se isporučuju kroz cijev.
Rezultati prve varijante bili su sljedeći: 43m11s — pri korištenju nešifriranog repozitorija i kompresora lzma, 19m13s — prilikom zamjene kompresora na lzo.
Opterećenje na serveru s izvornih podacima bilo je sljedeće (prikazan primjer s lzma, s lzo bio je otprilike slično, ali udio rsync bio je otprilike četvrtina vremena):
Jasno je vidljivo da ovakav proces sigurnosnog kopiranja odgovara samo pri relativno rijetkim i malim promjenama. Također, izuzetno je poželjno ograničiti rad zbackup-a na 1 tok, inače će opterećenje procesora biti vrlo visoko, jer program vrlo dobro radi u nekoliko tokova. Opterećenje na disku bilo je malo, što u cjelini pri suvremenom diskskom sustavu temeljenom na ssd-u neće biti primjetno. Također se jasno vidi pokretanje procesa sinkronizacije podataka repozitorija na udaljeni server, brzina rada usporediva je s običnim rsync i ovisi o performansama diskskog sustava servera za pohranu sigurnosnih kopija. Nedostatak pristupa je pohrana lokalnog repozitorija i, kao posljedica toga, — dupliciranje podataka.
Druga opcija koja uključuje pokretanje zbackup-a izravno na poslužitelju za pohranu rezervnih kopija je zanimljivija i praktičnija.
Za početak će se testirati rad bez korištenja enkripcije uz kompresor lzma:
Vrijeme trajanja svakog testnog pokretanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
39m45s
40m20s
40m3s
7m36s
8m3s
7m48s
15m35s
15m48s
15m38s
Ako se aktivira enkripcija pomoću aes, rezultati su prilično slični:
Vrijeme trajanja na istim podacima s enkripcijom:
Pokretanje 1
Pokretanje 2
Pokretanje 3
43m40s
44m12s
44m3s
8m3s
8m15s
8m12s
15m0s
15m40s
15m25s
Ako se enkripcija kombinira s kompresijom na lzo, rezultati su sljedeći:
Vrijeme trajanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
18m2s
18m15s
18m12s
5m13s
5m24s
5m20s
8m48s
9m3s
8m51s
Veličina rezultantnog repozitorija bila je relativno jednaka i iznosila je 13 GB. To znači da deduplikacija radi ispravno. Također, primjena lzo na već komprimiranim podacima daje značajan učinak, ukupno vrijeme rada zbackup-a približava se duplicity/duplicati, ali je 2-5 puta sporiji od rješenja temeljenih na librsyncu.
Prednosti su očite — štednja prostora na disku na poslužitelju za pohranu rezervnih kopija. Što se tiče alata za provjeru repozitorija — autor zbackup-a ih nije predvidio, preporučuje se koristiti redundantni diskovni niz ili oblačnog provajdera.
Općenito, dojam je prilično dobar, unatoč tome što projekt već oko 3 godine stagnira (posljednji zahtjev za novom funkcionalnošću bio je prije otprilike godine dana, ali bez odgovora).
Testiranje borgbackup-a
Borgbackup je fork attic-a, još jednog sustava sličnog zbackup-u. Napisan je na python-u, ima sličan set mogućnosti kao zbackup, ali dodatno može:
- Montirati rezervne kopije preko fuse
- Provjeravati sadržaj repozitorija
- Raditi u klijent-server modu
- Koristiti različite kompresore za podatke, kao i heurističko određivanje vrste datoteke prilikom njezine kompresije.
- 2 varijante enkripcije, aes i blake
- Ugrađeni alat za
provjeru performansi
borgbackup benchmark crud ssh://backup_server/repo/path local_dir
Rezultati su bili sljedeći:
C-Z-BIG 96.51 MB/s (10 100.00 MB all-zero files: 10.36s)
R-Z-BIG 57.22 MB/s (10 100.00 MB all-zero files: 17.48s)
U-Z-BIG 253.63 MB/s (10 100.00 MB all-zero files: 3.94s)
D-Z-BIG 351.06 MB/s (10 100.00 MB all-zero files: 2.85s)
C-R-BIG 34.30 MB/s (10 100.00 MB random files: 29.15s)
R-R-BIG 60.69 MB/s (10 100.00 MB random files: 16.48s)
U-R-BIG 311.06 MB/s (10 100.00 MB random files: 3.21s)
D-R-BIG 72.63 MB/s (10 100.00 MB random files: 13.77s)
C-Z-MEDIUM 108.59 MB/s (1000 1.00 MB all-zero files: 9.21s)
R-Z-MEDIUM 76.16 MB/s (1000 1.00 MB all-zero files: 13.13s)
U-Z-MEDIUM 331.27 MB/s (1000 1.00 MB all-zero files: 3.02s)
D-Z-MEDIUM 387.36 MB/s (1000 1.00 MB svi nulti datoteke: 2.58s)
C-R-SREDNJI 37.80 MB/s (1000 1.00 MB nasumične datoteke: 26.45s)
R-R-SREDNJI 68.90 MB/s (1000 1.00 MB nasumične datoteke: 14.51s)
U-R-SREDNJI 347.24 MB/s (1000 1.00 MB nasumične datoteke: 2.88s)
D-R-SREDNJI 48.80 MB/s (1000 1.00 MB nasumične datoteke: 20.49s)
C-Z-MALEN 11.72 MB/s (10000 10.00 kB svi nulti datoteke: 8.53s)
R-Z-MALEN 32.57 MB/s (10000 10.00 kB svi nulti datoteke: 3.07s)
U-Z-MALEN 19.37 MB/s (10000 10.00 kB svi nulti datoteke: 5.16s)
D-Z-MALEN 33.71 MB/s (10000 10.00 kB svi nulti datoteke: 2.97s)
C-R-MALEN 6.85 MB/s (10000 10.00 kB nasumične datoteke: 14.60s)
R-R-MALEN 31.27 MB/s (10000 10.00 kB nasumične datoteke: 3.20s)
U-R-MALEN 12.28 MB/s (10000 10.00 kB nasumične datoteke: 8.14s)
D-R-MALEN 18.78 MB/s (10000 10.00 kB nasumične datoteke: 5.32s)
Pri testiranju koristit će se heuristika za kompresiju s automatskim određivanjem tipa datoteke (compression auto), a rezultati će biti sljedeći:
Prvo ćemo provjeriti rad bez šifriranja:
Vrijeme trajanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
4m6s
4m10s
4m5s
56s
58s
54s
1m26s
1m34s
1m30s
Ako uključimo autorizaciju repozitorija (autenticirani režim), rezultati će biti slični:
Vrijeme trajanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
4m11s
4m20s
4m12s
1m0s
1m3s
1m2s
1m30s
1m34s
1m31s
Pri aktivaciji aes šifriranja rezultati se nisu mnogo pogoršali:
Pokretanje 1
Pokretanje 2
Pokretanje 3
4m55s
5m2s
4m58s
1m0s
1m2s
1m0s
1m49s
1m50s
1m50s
A ako zamijenimo aes s blake, situacija će se potpuno poboljšati:
Vrijeme trajanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
4m33s
4m43s
4m40s
59s
1m0s
1m0s
1m38s
1m43s
1m40s
Kao i u slučaju zbackup, veličina repozitorija iznosila je 13 GB i čak malo manje, što je, u cjelini, očekivano. Veoma je obradovalo vreme rada, ono je usporedivo s rješenjima temeljenim na librsync-u, pružajući mnogo šire mogućnosti. Također je bio impresioniran mogućnošću zadavanja različitih parametara putem varijabli okruženja, što daje ozbiljnu prednost prilikom korištenja borgbackup-a u automatskom režimu. Također me obradila opterećenje prilikom izrade sigurnosne kopije: prema opterećenju procesora — borgbackup radi u 1 niti.
Nisu otkriveni značajniji nedostaci prilikom korištenja.
Testiranje restic
Iako je restic relativno novo rješenje (prva 2 kandidata poznata su još od 2013. godine i starija), ima prilično dobre karakteristike. Napisan je na Go.
Ako se usporedi s zbackup-om, dodatno nudi:
- Provjeru cjelovitosti repozitorija (uključujući provjeru po dijelovima).
- Ogromnu listu podržanih protokola i pružatelja za pohranu sigurnosnih kopija, kao i podršku rclone — rsync za 'oblachna' rješenja.
- Usporedba 2 sigurnosne kopije između sebe.
- Montiranje repozitorija putem fuse.
Općenito, popis mogućnosti je prilično sličan borgbackup-u, nekad više, nekad manje. Među karakteristikama – nema mogućnosti isključivanja enkripcije, stoga će sigurnosne kopije uvijek biti šifrirane. Pogledajmo u praksi što možemo izvući iz ovog softvera:
Rezultati su sljedeći:
Vrijeme trajanja:
Pokretanje 1
Pokretanje 2
Pokretanje 3
5m25s
5m50s
5m38s
35s
38s
36s
1m54s
2m2s
1m58s
Rezultati rada također su usporedivi s rješenjima temeljenim na rsync-u i, u cjelini, vrlo blizu borgbackup-u, ali opterećenje na procesor je veće (radi više niti) i varira.
Najvjerojatnije, program nailazi na performanse diskovnog sustava na poslužitelju za pohranu podataka, kao što je već bio slučaj s rsync-om. Veličina repozitorija iznosi 13 GB, kao i kod zbackup ili borgbackup, očitih mana pri korištenju ovog rješenja nije bilo.
Rezultati
U suštini, svi kandidati su imali slične rezultate, međutim, po različitim cijenama. Borgbackup se pokazao najbolje, malo sporiji je restic, a zbackup vjerojatno ne vrijedi početi koristiti,
a ako se već koristi – isprobati promijeniti na borgbackup ili restic.
Zaključci
Najperspektivnije rješenje izgleda restic, jer ima najbolje omjer mogućnosti i brzine rada, ali za sada nećemo žuriti s općim zaključcima.
Borgbackup u načelu nije ništa lošiji, dok bi zbackup vjerojatno trebalo zamijeniti. Naravno, za osiguranje rada prema pravilu 3-2-1 zbackup se i dalje može koristiti. Na primjer, kao dodatak alatima za izradu sigurnosnih kopija temeljenim na (lib)rsync-u.
Najava
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
Autor publikacije: Pavel Demkovič
Izvor: habr.com
