
Ova bilješka se nastavlja
ciklus o sigurnosnom kopiranju
- Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync
- Sigurnosna kopija 3. dio: Pregled i testiranje dvostrukosti, duplikatnosti, deja dup
- Sigurnosna kopija 4. dio: Pregled i testiranje zbackup, restic, borgbackup
- Sigurnosna kopija 5. dio: Testiranje bacula i veeam sigurnosne kopije za linux
- Sigurnosno kopiranje, 6. dio: Usporedba alata za sigurnosno kopiranje
- Rezervni dio 7: Zaključci
Kao što smo već napisali u prvom članku, postoji jako velik broj programa za sigurnosno kopiranje temeljenih na rsync-u.
Od onih koji najbolje odgovaraju našim uvjetima, razmotrit ću 3: rdiff-backup, rsnapshot i burp.
Testirajte skupove datoteka
Skupovi testnih datoteka bit će isti za sve kandidate, uključujući buduće članke.
Prvi set: 10 GB medijskih datoteka, te cca 50 MB - izvorni kod stranice u PHP-u, veličine datoteka od nekoliko kilobajta za izvorni kod, do desetaka megabajta za medijske datoteke. Cilj je imitirati statičnu stranicu.
Drugi set: dobiveno iz prvog prilikom preimenovanja poddirektorija s medijskim datotekama od 5 GB. Cilj je proučiti ponašanje sigurnosnog sustava prilikom preimenovanja imenika.
Treći set: dobiveno od prvog brisanjem 3 GB medijskih datoteka i dodavanjem novih 3 GB medijskih datoteka. Cilj je proučiti ponašanje sigurnosnog sustava tijekom tipične operacije ažuriranja stranice.
Dobivanje rezultata
Svaka sigurnosna kopija izvodi se najmanje 3 puta i popraćena je resetiranjem predmemorije datotečnog sustava pomoću naredbi sync и echo 3 > /proc/sys/vm/drop_caches i na strani testnog poslužitelja i poslužitelja za pričuvnu pohranu.
Na poslužitelju koji će biti izvor backupa instaliran je softver za praćenje - netdata, uz pomoć kojeg će se procijeniti opterećenje poslužitelja tijekom kopiranja, što je potrebno za procjenu opterećenja poslužitelja tijekom procesa backupa.
Također vjerujem da je poslužitelj za pričuvnu pohranu sporiji u smislu procesora od glavnog poslužitelja, ali ima više diskova s relativno malom brzinom nasumičnog pisanja - što je najčešća situacija tijekom izrade sigurnosnih kopija, a zbog činjenice da poslužitelj za pričuvu ne bi trebao učiniti ispravno Neću pratiti druge zadatke osim sigurnosne kopije, njeno učitavanje pomoću netdata.
Također sam promijenio poslužitelje na kojima ću provjeravati razne sustave za backup.
Sada imaju sljedeće karakteristikeprocesor
sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 2
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 1081.62
General statistics:
total time: 30.0013s
total number of events: 32453
Latency (ms):
min: 1.48
avg: 1.85
max: 9.84
95th percentile: 2.07
sum: 59973.40
Threads fairness:
events (avg/stddev): 16226.5000/57.50
execution time (avg/stddev): 29.9867/0.00
RAM, čitanje...
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 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: read
scope: global
Initializing worker threads...
Threads started!
Total operations: 104857600 (5837637.63 per second)
102400.00 MiB transferred (5700.82 MiB/sec)
General statistics:
total time: 17.9540s
total number of events: 104857600
Latency (ms):
min: 0.00
avg: 0.00
max: 66.08
95th percentile: 0.00
sum: 18544.64
Threads fairness:
events (avg/stddev): 26214400.0000/0.00
execution time (avg/stddev): 4.6362/0.12
...i snimanje
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)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1KiB
total size: 102400MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 91414596 (3046752.56 per second)
89272.07 MiB transferred (2975.34 MiB/sec)
General statistics:
total time: 30.0019s
total number of events: 91414596
Latency (ms):
min: 0.00
avg: 0.00
max: 1022.90
95th percentile: 0.00
sum: 66430.91
Threads fairness:
events (avg/stddev): 22853649.0000/945488.53
execution time (avg/stddev): 16.6077/1.76
Disk na poslužitelju izvora podataka
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)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Extra file open flags: (none)
128 files, 8MiB each
1GiB total file size
Block size 4KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
reads/s: 4587.95
writes/s: 3058.66
fsyncs/s: 9795.73
Throughput:
read, MiB/s: 17.92
written, MiB/s: 11.95
General statistics:
total time: 60.0241s
total number of events: 1046492
Latency (ms):
min: 0.00
avg: 0.23
max: 14.45
95th percentile: 0.94
sum: 238629.34
Threads fairness:
events (avg/stddev): 261623.0000/1849.14
execution time (avg/stddev): 59.6573/0.00
Disk na poslužitelju za sigurnosnu pohranu
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)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Extra file open flags: (none)
128 files, 8MiB each
1GiB total file size
Block size 4KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
reads/s: 11.37
writes/s: 7.58
fsyncs/s: 29.99
Throughput:
read, MiB/s: 0.04
written, MiB/s: 0.03
General statistics:
total time: 73.8868s
total number of events: 3104
Latency (ms):
min: 0.00
avg: 78.57
max: 3840.90
95th percentile: 297.92
sum: 243886.02
Threads fairness:
events (avg/stddev): 776.0000/133.26
execution time (avg/stddev): 60.9715/1.59
Brzina mreže između poslužitelja
iperf3 -c backup
Connecting to host backup, port 5201
[ 4] local x.x.x.x port 59402 connected to y.y.y.y port 5201
[ ID] Interval Transfer Bandwidth 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 Bandwidth Retr
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec 8100 sender
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sec receiver
Tehnika testiranja
- Na testnom poslužitelju priprema se datotečni sustav s prvim testnim skupom, a na rezervnom poslužitelju za pohranu po potrebi se inicijalizira repozitorij.
Pokreće se proces izrade sigurnosne kopije i mjeri se njegovo vrijeme. - Na testnom poslužitelju datoteke se migriraju u drugi testni skup. Pokreće se proces izrade sigurnosne kopije i mjeri se njegovo vrijeme.
- Na testnom poslužitelju migracija se provodi do trećeg testnog skupa. Pokreće se proces izrade sigurnosne kopije i mjeri se njegovo vrijeme.
- Rezultirajući treći skup testova prihvaća se kao novi prvi; Koraci 1-3 se ponavljaju još 2 puta.
- Podaci se unose u stožernu tablicu, a dodaju se grafikoni s neto podacima.
- Izvješće se generira za pojedinačnu sigurnosnu metodu.
Očekivani rezultati
Budući da se sva 3 kandidata temelje na istoj tehnologiji (rsync), očekuje se da će rezultati biti bliski uobičajenom rsync-u, uključujući sve njegove prednosti, naime:
- Datoteke u repozitoriju bit će pohranjene "kakve jesu".
- Veličina spremišta će samo rasti uključujući razliku između sigurnosnih kopija.
- Bit će relativno veliko opterećenje mreže prilikom prijenosa podataka, kao i malo opterećenje procesora.
Kao referenca koristit će se testni rad redovnog rsync-a, njegovi rezultati
ovi su
Usko grlo bilo je na serveru za pohranu rezervnih podataka u obliku diska temeljenog na HDD-u, što je prilično jasno vidljivo na pilastim grafovima.
Podaci su kopirani za 4 minute i 15 sekundi.
Testiranje rdiff-backupa
Prvi kandidat je rdiff-backup, python skripta koja sigurnosno kopira jedan direktorij u drugi. U ovom slučaju, trenutna sigurnosna kopija pohranjuje se "kakva jest", a ranije izrađene sigurnosne kopije se inkrementalno pohranjuju u poseban poddirektorij, čime se štedi prostor.
Provjerit ćemo tipični način rada, tj. Pokretanje backup procesa inicira sam klijent, a na serverskoj strani za backup se pokreće proces koji prima podatke.
Pogledajmo, što je on sposoban u našim uvjetima?.

Vrijeme izvođenja svakog testnog izvođenja:
Prvi početak
Druga vožnja
Treće lansiranje
Prvi set
16 m32 s
16 m26 s
16 m19 s
Drugi set
2 h 5 m
2 h 10 m
2 h 8 m
Treći set
2 h 9 m
2 h 10 m
2 h 10 m
Rdiff-backup vrlo bolno reagira na svaku veliku promjenu podataka, a također ne koristi u potpunosti mrežu.
rsnapshot testiranje
Drugi kandidat, rsnapshot, je Perl skripta čiji je glavni uvjet za učinkovit rad podrška za tvrde veze. Ovo štedi prostor na disku. U ovom slučaju, datoteke koje se nisu promijenile od prethodne sigurnosne kopije povezat će se s izvornom datotekom pomoću tvrdih veza.
Logika procesa sigurnosnog kopiranja također je obrnuta: poslužitelj aktivno “šeta” među svojim klijentima i uzima podatke.
Rezultati ispitivanja
pokazalo se sljedeće
Prvi početak
Druga vožnja
Treće lansiranje
Prvi set
4 m22 s
4 m19 s
4 m16 s
Drugi set
2 m6 s
2 m10 s
2 m6 s
Treći set
1 m18 s
1 m10 s
1 m10 s
Radio je vrlo, vrlo brzo, puno brže od rdiff-backupa i vrlo blizu čistog rsync-a.
Ispitivanje podrigivanja
Druga opcija je C implementacija na vrhu librsync - burp, koja ima arhitekturu klijent-poslužitelj uključujući autorizaciju klijenta, kao i web sučelje (nije uključeno u osnovni paket). Još jedna zanimljiva značajka su sigurnosne kopije bez oporavka na strani klijenta.
Pogledajmoizvođenje.

Prvi početak
Druga vožnja
Treće lansiranje
Prvi set
11 m21 s
11 m10 s
10 m56 s
Drugi set
5 m37 s
5 m40 s
5 m35 s
Treći set
3 m33 s
3 m24 s
3 m40 s
Radio je 2 puta sporije od rsnapshota, ali još uvijek prilično brzo, a sigurno brže od rdiff-backupa. Grafikoni su pomalo pilasti - performanse opet ovise o diskovnom podsustavu poslužitelja za pričuvnu pohranu, iako to nije tako izraženo kao kod rsnapshota.
Nalazi
Veličina repozitorija za sve kandidate bila je približno ista, tj. prvo je narasla na 10 GB, zatim narasla na 15 GB, zatim narasla na 18 GB itd., što je zbog osobitosti rsync-a. Također je vrijedno napomenuti da su svi kandidati jednonitni (opterećenje procesora je oko 50% na dvojezgrenom stroju). Sva 3 kandidata pružila su mogućnost vraćanja zadnje sigurnosne kopije "kakva jest", odnosno bilo je moguće vratiti datoteke bez korištenja programa trećih strana, uključujući one koji se koriste za stvaranje spremišta. Ovo je također "nasljeđe predaka" rsync-a.
Zaključci
Što je backup sustav složeniji i što više različitih mogućnosti ima, to će sporije raditi, ali za ne baš zahtjevne projekte bilo koji od njih će biti prikladan, osim, možda, rdiff-backupa.
Obavijest
Ova bilješka nastavlja ciklus o sigurnosnom kopiranju
Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync
Sigurnosna kopija 3. dio: Pregled i testiranje dvostrukosti, duplikatnosti, deja dup
Sigurnosna kopija 4. dio: Pregled i testiranje zbackup, restic, borgbackup
Sigurnosna kopija 5. dio: Testiranje bacula i veeam sigurnosne kopije za linux
Sigurnosno kopiranje, 6. dio: Usporedba alata za sigurnosno kopiranje
Rezervni dio 7: Zaključci
Autor publikacije: Pavel Demkovich
Izvor: www.habr.com
