Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync

Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync
Touto poznámkou pokračujeme

cyklom o zálohovaní

  1. Zálohovanie, časť 1: Prečo je zálohovanie dôležité, prehľad metód a technológií
  2. Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync
  3. Zálohovanie, časť 3: Prehľad a testovanie duplicity, duplicaty, deja dup
  4. Zálohovanie, časť 4: Prehľad a testovanie zbackup, restic, borgbackup
  5. Zálohovanie, časť 5: Testovanie bacula a veeam backup for linux
  6. Zálohovanie, časť 6: Porovnanie nástrojov na zálohovanie
  7. 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

  1. 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.
  2. 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.
  3. Na testovom serveri sa uskutočňuje migrácia do tretieho testovacieho súboru. Začína sa proces zálohovania a meria sa jeho čas.
  4. Získaný tretí testovací súbor sa považuje za nový prvý; body 1-3 sa opakujú ešte 2-krát.
  5. Údaje sa vkladajú do súhrnnej tabuľky, pridávajú sa grafy s netdata.
  6. 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ä:

  1. Súbory v repozitári budú uložené "tak, ako sú".
  2. Veľkosť repozitára sa bude zvyšovať len pridaním rozdielu medzi zálohami.
  3. 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úceZálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync

Ú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.

Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync

Č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úceZálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync

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ť.

Zálohovanie, časť 2: Prehľad a testovanie nástrojov na zálohovanie založených na rsync

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ť 1: Prečo je zálohovanie dôležité, prehľad metód a technológií
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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster