
Touto poznámkou pokračujeme
cyklom o zálohovaní
- Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync
- Zálohovanie, časť 3: Prehľad a testovanie duplicity, duplicaty, deja dup
- Zálohovanie, časť 4: Prehľad a testovanie zbackup, restic, borgbackup
- Zálohovanie, časť 5: Testovanie bacula a veeam backup for linux
- Zálohovanie, časť 6: Porovnanie nástrojov na zálohovanie
- Zálohovanie, časť 7: Závery
Ako sme už písali v prvej článku, existuje veľmi veľa programov na zálohovanie založených na rsync.
Z tých, ktoré najviac vyhovujú našim podmienkam, budem zvažovať 3: rdiff-backup, rsnapshot a burp.
Testovacie sady súborov
Sady súborov na testovanie budú rovnaké pre všetkých kandidátov, vrátane budúcich článkov.
Prvá sada: 10 GB mediálnych súborov a približne 50 MB - zdrojový kód webu na php, veľkosti súborov od niekoľkých kilobajtov pre zdrojový kód až po desiatky megabajtov pre mediálne súbory. Cieľ - imitácia statického webu.
Druhá sada: vzniká z prvej premenovaním podpriečinka s mediálnymi súbormi o veľkosti 5 GB. Cieľ - preskúmanie správania zálohovacieho systému pri premenovaní priečinka.
Tretia sada: vzniká z prvej odstránením 3 GB mediálnych súborov a pridávaním nových 3 GB mediálnych súborov. Cieľ - preskúmanie správania zálohovacieho systému pri bežnej operácii aktualizácie webu.
Získanie výsledkov
Akékoľvek zálohovanie sa vykonáva minimálne 3-krát a je sprevádzané vymazaním kešov súborového systému príkazmi sync a echo 3 > /proc/sys/vm/drop_caches ako na strane testovacieho servera, tak aj na serveri pre ukladanie záloh.
Na serveri, ktorý bude zdrojom záloh, je nainštalovaný monitoringový softvér - netdata, pomocou ktorého bude hodnotená záťaž servera pri kopírovaní, čo je potrebné na posúdenie záťaže servera procesom zálohovania.
Takisto si myslím, že server na ukladanie záloh je pomalší v procesore ako hlavný server, ale má väčšie disky s relatívne nízkou rýchlosťou náhodného zápisu — čo je najčastejšia situácia pri zálohovaní. A pretože server na zálohovanie by v ideálnom prípade nemal vykonávať žiadne iné úlohy okrem zálohovania, nebudem sledovať jeho zaťaženie pomocou netdata.
Takisto som zmenil servery, na ktorých budem testovať rôzne zálohovacie systémy.
Momentálne majú nasledujúce charakteristikyProcesor
sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (používajúci systém LuaJIT 2.0.4)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 2
Inicializácia generátora náhodných čísel z aktuálneho času
Limit prvočísel: 20000
Inicializácia pracovných vlákien...
Vlákna boli spustené!
Rýchlosť CPU:
udalosti za sekundu: 1081.62
Všeobecná štatistika:
celkový čas: 30.0013s
celkový počet udalostí: 32453
Latencia (ms):
min: 1.48
avg: 1.85
max: 9.84
95. percentil: 2.07
súčet: 59973.40
Spravodlivosť vlákna:
udalosti (avg/stddev): 16226.5000/57.50
čas vykonania (avg/stddev): 29.9867/0.00
Pamäť, čítanie…
sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory run
sysbench 1.0.17 (používajúci systém LuaJIT 2.0.4)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializácia generátora náhodných čísel z aktuálneho času
Spustenie testu rýchlosti pamäte s nasledujúcimi možnosťami:
veľkosť bloku: 1KiB
celková veľkosť: 102400MiB
operácia: čítanie
rozsah: globálny
Inicializácia pracovných vlákien...
Vlákna boli spustené!
Celkový počet operácií: 104857600 (5837637.63 za sekundu)
102400.00 MiB prenesených (5700.82 MiB/sec)
Všeobecná štatistika:
celkový čas: 17.9540s
celkový počet udalostí: 104857600
Latencia (ms):
min: 0.00
avg: 0.00
max: 66.08
95. percentil: 0.00
súčet: 18544.64
Spravodlivosť vlákna:
udalosti (avg/stddev): 26214400.0000/0.00
čas vykonania (avg/stddev): 4.6362/0.12
… a zápis
sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory run
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Spúšťanie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializácia generátora náhodných čísel na základe aktuálneho času
Spúšťanie testu rýchlosti pamäte s nasledujúcimi možnosťami:
veľkosť bloku: 1KiB
celková veľkosť: 102400MiB
operácia: zápis
rozsah: globálny
Inicializácia pracovných vlákien...
Vlákna boli spustené!
Celkový počet operácií: 91414596 (3046752.56 za sekundu)
89272.07 MiB prenesených (2975.34 MiB/sec)
Všeobecné štatistiky:
celkový čas: 30.0019s
celkový počet udalostí: 91414596
Latencia (ms):
min: 0.00
avg: 0.00
max: 1022.90
95. percentil: 0.00
súčet: 66430.91
Spravodlivosť vlákien:
udalosti (avg/št. dev): 22853649.0000/945488.53
čas vykonávania (avg/št. dev): 16.6077/1.76
Disk na serveri zdrojových údajov
sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Spúšťanie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializácia generátora náhodných čísel na základe aktuálneho času
Dodatočné príznaky otvorenia súboru: (žiadne)
128 súborov, 8MiB každý
1GiB celková veľkosť súboru
Veľkosť bloku 4KiB
Počet IO požiadaviek: 0
Pomer čítania/zápisu pre kombinovaný test náhodného IO: 1.50
Periodické FSYNC povolené, volanie fsync() každých 100 požiadaviek.
Volanie fsync() na konci testu, Povolené.
Používanie synchronného I/O režimu
Robenie náhodného r/w testu
Inicializácia pracovných vlákien...
Vlákna boli spustené!
Operácie so súbormi:
čítania/s: 4587.95
zápisy/s: 3058.66
fsyncs/s: 9795.73
Priepustnosť:
čítanie, MiB/s: 17.92
napísané, MiB/s: 11.95
Všeobecné štatistiky:
celkový čas: 60.0241s
celkový počet udalostí: 1046492
Latencia (ms):
min: 0.00
avg: 0.23
max: 14.45
95. percentil: 0.94
súčet: 238629.34
Spravodlivosť vlákien:
udalosti (avg/št. dev): 261623.0000/1849.14
čas vykonávania (avg/št. dev): 59.6573/0.00
Disk na serveri úložiska zálohov
sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (používajúci systém LuaJIT 2.0.4)
Spustenie testu s nasledujúcimi možnosťami:
Počet vlákien: 4
Inicializácia generátora náhodných čísel z aktuálneho času
Extra možnosti otvorenia súboru: (žiadne)
128 súborov, každý 8MiB
1GiB celková veľkosť súboru
Veľkosť bloku 4KiB
Počet IO požiadaviek: 0
Pomer čítania/zápisu pre kombinovaný náhodný IO test: 1.50
Povolená periódna FSYNC, volanie fsync() každých 100 požiadaviek.
Volanie fsync() na konci testu, povolené.
Používanie synchronného I/O režimu
Vykonávanie náhodného r/w testu
Inicializácia pracovných vlákien...
Vlákna spustené!
Operácie so súbormi:
čítania/s: 11.37
zápisy/s: 7.58
fsyncs/s: 29.99
Priepustnosť:
čítanie, MiB/s: 0.04
zapísané, MiB/s: 0.03
Všeobecné štatistiky:
celkový čas: 73.8868s
celkový počet udalostí: 3104
Latencia (ms):
min: 0.00
avg: 78.57
max: 3840.90
95. percentil: 297.92
súčet: 243886.02
Spravodlivosť vlákien:
udalosti (avg/stddev): 776.0000/133.26
čas vykonania (avg/stddev): 60.9715/1.59
Rýchlosť siete medzi servermi
iperf3 -c backup
Pripojenie na hostiteľa backup, port 5201
[ 4] miestny x.x.x.x port 59402 pripojený k y.y.y.y port 5201
[ ID] Interval Transfer Šírka pásma Retr Cwnd
[ 4] 0.00-1.00 sec 419 MBytes 3.52 Gbits/sec 810 182 KBytes
[ 4] 1.00-2.00 sec 393 MBytes 3.30 Gbits/sec 810 228 KBytes
[ 4] 2.00-3.00 sec 378 MBytes 3.17 Gbits/sec 810 197 KBytes
[ 4] 3.00-4.00 sec 380 MBytes 3.19 Gbits/sec 855 198 KBytes
[ 4] 4.00-5.00 sec 375 MBytes 3.15 Gbits/sec 810 182 KBytes
[ 4] 5.00-6.00 sec 379 MBytes 3.17 Gbits/sec 765 228 KBytes
[ 4] 6.00-7.00 sec 376 MBytes 3.15 Gbits/sec 810 180 KBytes
[ 4] 7.00-8.00 sec 379 MBytes 3.18 Gbits/sec 765 253 KBytes
[ 4] 8.00-9.00 sec 380 MBytes 3.19 Gbits/sec 810 239 KBytes
[ 4] 9.00-10.00 sec 411 MBytes 3.44 Gbits/sec 855 184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Šírka pásma Retr
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec 8100 odosielateľ
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec prijímač
Metodika testovania
- Na testovom serveri sa pripravuje súborový systém s prvým testovacím súborom, na serveri pre zálohy sa podľa potreby inicializuje repozitár.
Začína sa proces zálohovania a meria sa jeho čas. - Na testovom serveri sa uskutočňuje migrácia súborov do druhého testovacieho súboru. Začína sa proces zálohovania a meria sa jeho čas.
- Na testovom serveri sa uskutočňuje migrácia do tretieho testovacieho súboru. Začína sa proces zálohovania a meria sa jeho čas.
- Získaný tretí testovací súbor sa považuje za nový prvý; body 1-3 sa opakujú ešte 2-krát.
- Údaje sa vkladajú do súhrnnej tabuľky, pridávajú sa grafy s netdata.
- Vyhotovuje sa správa podľa samostatnej metódy zálohovania.
Očakávané výsledky
Keďže všetci traja kandidáti sú založení na tej istej technológii (rsync), očakáva sa, že výsledky budú blízke bežnému rsyncu, vrátane všetkých jeho výhod, a to najmä:
- Súbory v repozitári budú uložené "tak, ako sú".
- Veľkosť repozitára sa bude zvyšovať len pridaním rozdielu medzi zálohami.
- Bude relatívne vysoké zaťaženie siete pri prenose údajov, ako aj malé zaťaženie procesora.
Testovací beh bežného rsyncu sa použije ako referencia, jeho výsledky
sú nasledujúce
Úzke miesto bolo na serveri pre zálohovanie údajov vo forme disku na báze HDD, čo je z grafov zrejmé ako vidlicová krivka.
Údaje boli skopírované za 4 minúty a 15 sekúnd.
Testovanie rdiff-backup
Prvý kandidát — rdiff-backup, skript napísaný v Pythone, ktorý vykonáva zálohovanie jedného adresára do druhého. Aktuálna záloha sa pritom uchováva "tak, ako je", a predchádzajúce zálohy sa ukladajú do špeciálneho podadresára inkrementálne, čím sa šetrí miesto.
Budeme kontrolovať typický pracovný režim, t.j. spustenie procesu zálohovania iniciuje klient nielen sám, ale na strane servera sa spúšťa proces, ktorý prijíma údaje.
Pozrime sa, čo dokáže v našich podmienkach.

Čas vykonania každého testovacieho behu:
Prvý beh
Druhý beh
Tretí beh
Prvá sada
16m32s
16m26s
16m19s
Druhá sada
2h5m
2h10m
2h8m
Tretia sada
2h9m
2h10m
2h10m
Rdiff-backup reaguje veľmi citlivo na akékoľvek veľké zmeny údajov, taktiež nevyužíva sieť naplno.
Testovanie rsnapshot
Druhý kandidát — rsnapshot, predstavuje skript napísaný v Perle, hlavnou požiadavkou na jeho efektívnu funkciu je podpora tvrdých odkazov. Tým sa ušetrí miesto na disku. Pri tom sa nezmenené súbory odvtedy, čo bola vykonaná predchádzajúca záloha, prepoja na originálny súbor pomocou tvrdých odkazov.
Taktiež sa inverzuje logika procesu zálohovania: server aktívne "chodí" sám za svojimi klientmi a zbiera údaje.
Výsledky testovania
sú nasledujúce
Prvý beh
Druhý beh
Tretí beh
Prvá sada
4m22s
4m19s
4m16s
Druhá sada
2m6s
2m10s
2m6s
Tretia sada
1m18s
Pracoval veľmi a veľmi rýchlo, oveľa rýchlejšie ako rdiff-backup a veľmi blízko čistému rsyncu.
Pracoval veľmi a veľmi rýchlo, oveľa rýchlejšie ako rdiff-backup a veľmi blízko čistému rsyncu.
Testovanie burp
Testovanie burp
Ďalšia možnosť — implementácia na C nad librsync — burp, má klient-server architektúru vrátane autorizácie klientov a tiež webové rozhranie (nie je súčasťou základnej dodávky). Zaujímavou vlastnosťou je aj zálohovanie bez práva na obnovenie u klientov.
Poďme sa pozrieť navýkonnosť.

Prvý beh
Druhý beh
Tretí beh
Prvá sada
11m21s
11m10s
10m56s
Druhá sada
5m37s
5m40s
5m35s
Tretia sada
3m33s
3m24s
3m40s
Pracoval dvakrát pomalšie ako rsnapshot, avšak stále dosť rýchlo, a určite rýchlejšie než rdiff-backup. Grafy sú trochu zubaté — výkon sa opäť odráža v diskovej subsystéme servera na zálohovanie, hoci to nie je také výrazné ako u rsnapshot.
Výsledky
Veľkosti repozitárov všetkých kandidátov boli približne rovnaké, t. j. najskôr rast do 10 GB, potom rast do 15 GB, potom rast do 18 GB a pod., čo súvisí so špecifikami fungovania rsync. Rovnako stojí za zmienku jednovláknovosť všetkých kandidátov (využitie procesora približne 50% na dvojjadrovom stroji). Všetci traja kandidáti poskytovali možnosť obnovy poslednej zálohy „tak, ako je“, teda bolo možné obnoviť súbory bez použitia akýchkoľvek externých programov vrátane tých, ktoré sa použili na vytvorenie repozitárov. To je tiež „rodové dedičstvo“ rsync.
Zhrnutie
Čím zložitejší je zálohovací systém a čím viac má rôznych možností, tým pomalšie bude fungovať, ale pre menej náročné projekty vyhovuje ktorýkoľvek z nich, okrem možno rdiff-backup.
Oznámenie
Tento článok pokračuje v cykle o zálohovaní
Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync
Zálohovanie, časť 3: Prehľad a testovanie duplicity, duplicaty, deja dup
Zálohovanie, časť 4: Prehľad a testovanie zbackup, restic, borgbackup
Zálohovanie, časť 5: Testovanie bacula a veeam backup for linux
Zálohovanie, časť 6: Porovnanie nástrojov na zálohovanie
Zálohovanie, časť 7: Závery
Autor publikácie: Pavel Demkovič
Zdroj: habr.com
