Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

V tejto poznámke sa zaoberáme nástrojmi na zálohovanie, ktoré vykonávajú zálohovanie vytváraním archívov na zálohovacom serveri.

Z tých, ktoré spĺňajú požiadavky — duplicity (ku ktorému existuje príjemné rozhranie v podobe deja dup) a duplicati.

Ďalší veľmi zaujímavý nástroj na zálohovanie je dar, ale keďže má veľmi rozsiahly zoznam možností — metóda testovania pokrýva sotva 10 % z toho, na čo je schopný — v rámci aktuálneho cyklu ho nepodrobíme testovaniu.

Pričakovani rezultati

Keďže obaja kandidáti nejakým spôsobom vytvárajú archívy, ako orientačný bod môžeme použiť bežný tar.

Dodatočne posúdime, ako dobre sa optimalizuje úložisko dát na serveri ukladaním záloh, ktoré obsahujú iba rozdiel medzi úplnou kópiou a aktuálnym stavom súborov, alebo medzi predchádzajúcimi a aktuálnymi archívmi (inkrementálne, dekrementálne a pod.).

Obnašanje pri ustvarjanju varnostnih kopij:

  1. Porovnateľne malé množstvo súborov na zálohovacom serveri (porovnateľné s počtom záloh alebo veľkosťou údajov v GB), ale dostatočne veľká ich veľkosť (desiatky-stovky megabajtov).
  2. Veľkosť repozitára bude zahŕňať iba zmeny — duplicity nebudú uchovávané, takže veľkosť repozitára bude menšia, ako pri práci softvéru založeného na rsync.
  3. Očakáva sa vysoké zaťaženie procesora pri používaní kompresie a/alebo šifrovania, ako aj pravdepodobne dostatočne veľké zaťaženie siete a diskového subsystému, ak proces archivácie a/alebo šifrovania bude bežať na zálohovacom serveri.

Ako referenčnú hodnotu spustíme nasledujúci príkaz:

cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"

Výsledky vykonania sú nasledujúce:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Čas vykonania 3m12s. Je vidno, že rýchlosť sa zablokovala v diskovom subsystéme zálohovacieho servera, rovnako ako v prípade s rsync. Iba o niečo rýchlejšie, pretože zápis ide do jedného súboru.

Takisto pre hodnotenie kompresie spustíme to isté, ale zapneme kompresiu na strane zálohovacieho servera:

cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"

Výsledky sú takéto:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Čas vykonania 10m11s. Je pravdepodobné, že úzke miesto je jednoprvkový kompresor na prijímajúcej strane.

Ista ekipa, ampak z prenosom stiskanja na strežnik z izvornimi podatki za preverjanje hipoteze, da je ozko grlo — enovreten stiskalnik.

cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"

Zgodilo se je tako:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Čas izvajanja je bil 9m37s. Očitno je vidna obremenitev enega jedra s stiskalnikom, saj sta hitrost prenosa po omrežju in obremenitev na disku izvorne podsysteme — podobni.

Za oceno šifriranja lahko uporabite openssl ali gpg, pri čemer vključite dodatno ukazno vrstico: openssl ili gpg v pipe. Kot orientacija bo takšna ukazna vrstica:

cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"

Rezultati so bili takšni:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Čas izvajanja je bil 10m30s, saj sta bila na strani sprejemnika zagnana 2 procesa — ozko grlo ponovno enovreten stiskalnik, poleg tega pa so bili tudi majhni stroški za šifriranje.

UPD: Na prošnjo bliznezz dodajem teste s pigz. Če uporabim samo stiskalnik — je bilo za 6m30s, če pa dodam tudi šifriranje — približno 7m. Padec na spodnjem grafu — nespuščen diskovni predpomnilnik:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Testiranje duplicity

Duplicity je programska oprema v pythonu za varnostno kopiranje z ustvarjanjem šifriranih arhivov v formatu tar.

Za inkrementalne arhive se uporablja librsync, zato lahko pričakujemo obnašanje, opisano v prejšnjem zapisu cikla.

Varnostne kopije lahko šifriramo in podpišemo s pomočjo gnupg, kar je zelo pomembno pri uporabi različnih ponudnikov za shranjevanje varnostnih kopij (s3, backblaze, gdrive itd.)

Poglejmo, kakšni bodo rezultati:

Takšni rezultati so se pojavili pri zagonu brez šifriranja

spojler

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Vrijeme rada svakog testnog pokretanja:

Pokretanje 1
Pokretanje 2
Pokretanje 3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

Tukaj so rezultati pri vklopu šifriranja gnupg, z velikostjo ključa 2048 bitov:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Vrijeme rada na istim podacima, s šifriranjem:

Pokretanje 1
Pokretanje 2
Pokretanje 3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

Bila je določena velikost bloka — 512 megabajtov, kar je jasno razvidno na grafikah; obremenitev procesorja je bila dejansko na ravni 50%, kar pomeni, da program ne izkorišča več kot eno procesorsko jedro.

Prav tako je dovolj dobro razvidno načelo delovanja programa: vzeli smo kos podatkov, ga stisnili, poslali na strežnik za shranjevanje varnostnih kopij, ki je lahko precej počasen.
Še ena značilnost je predvidljiv čas delovanja programa, ki je odvisen samo od velikosti spremenjenih podatkov.

Vklopitev šifriranja ni posebej povečala časa delovanja programa, a je povečala obremenitev procesorja za približno 10 %, kar je lahko prijeten bonus.

Žal ta program ni bil sposoben pravilno zaznati preimenovanja imenika, zato je končna velikost repozitorija znašala vso velikost sprememb (t.j. vseh 18 GB), vendar je možnost uporabe nezaupanja vrednega strežnika za varnostno kopiranje nedvomno prevladala nad takim vedenjem.

Testiranje duplicati

Ta programska oprema je napisana v C#, izvaja se z uporabo niza knjižnic iz Monoa. Ima GUI in tudi različico cli.

Približen seznam glavnih zmogljivosti je podoben tistim v duplicity, vključno z različnimi ponudniki za shranjevanje varnostnih kopij, vendar je, za razliko od duplicity, večina zmogljivosti dostopna brez dodatnih sredstev. Ali je to plus ali minus — je odvisno od konkretnega primera, vendar je verjetno lažje imeti na voljo seznam vseh zmogljivosti, kot pa dodajati pakete za python, kot je to v primeru z duplicity.

Še ena majhna podrobnost — program aktivno piše lokalno bazo sqlite v imenu tistega uporabnika, ki zažene varnostno kopiranje, zato je treba dodatno paziti na pravilno označevanje ustrezne baze pri vsakem zagonu procesa s pomočjo cli. Pri delu preko GUI ali WEBGUI bodo podrobnosti skrite pred uporabnikom.

Poglejmo, katere kazalnike lahko pokaže to rešitev:

Če izklopimo šifriranje (kar WEBGUI ne priporoča), so rezultati naslednji:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Vrijeme rada:

Pokretanje 1
Pokretanje 2
Pokretanje 3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

S vklopljenim šifriranjem, z uporabo aes, dobimo naslednje:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Vrijeme rada:

Pokretanje 1
Pokretanje 2
Pokretanje 3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

Če pa uporabimo zunanji program gnupg, so rezultati naslednji:

Varnostno kopiranje, del 3: Pregled in testiranje duplicity, duplicati,

Pokretanje 1
Pokretanje 2
Pokretanje 3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

Kot je razvidno — program zna delovati v več niti, vendar to ne pomeni, da je bolj učinkovita rešitev, in če primerjamo delovanje šifriranja — zagon zunanjega programa
se je izkazal za hitrejši v primerjavi z uporabo knjižnice iz Monoa. Morda je to povezano z dejstvom, da je zunanji program bolje optimiziran.

Prijeten trenutek je tudi dejstvo, da velikost repozitorija zaseda natančno toliko, kolikor so dejansko spremenjeni podatki, tj. duplicati je odkril preimenovanje imenika in pravilno obdelal to situacijo. To lahko vidimo ob izvajanju drugega testa.

Na splošno imam precej pozitivne izkušnje s programom, vključno z zadostno prijaznostjo do novincev.

Rezultati

Oba kandidata sta delo opravljala dovolj počasi, vendar v primerjavi s klasičnim tar obstaja napredek, vsaj pri duplicati. Cena tega napredka je prav tako razumljiva — opazna obremenitev
procesorja. Na splošno ni posebnih odstopanj pri napovedovanju rezultatov.

Zaključki

Če ni potrebna nobena hitenja in je na voljo večina procesorja — se katero koli od obravnavanih rešitev lahko uporabi, v vsakem primeru je bilo opravljeno dovolj veliko delo, ki ga ni treba ponavljati z pisanjem skriptov-ovirk nad tar. Prisotnost šifriranja je zelo koristna lastnost, če strežnik za shranjevanje varnostnih kopij ni povsem zaupanja vreden.

Če primerjamo z rešitvami na osnovi rsync — lahko je zmogljivost slabša večkrat, kljub dejstvu, da je čisti tar deloval hitreje od rsync za 20-30%.
Prihranek pri velikosti repozitorija obstaja, vendar samo pri duplicati.

Najava

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

Avtor objave: Pavel Demkovič

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