Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync

Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync
Ova bilješka se nastavlja

ciklus o sigurnosnom kopiranju

  1. Backup, 1. dio: Zašto je backup potreban, pregled metoda, tehnologija
  2. Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync
  3. Sigurnosna kopija 3. dio: Pregled i testiranje dvostrukosti, duplikatnosti, deja dup
  4. Sigurnosna kopija 4. dio: Pregled i testiranje zbackup, restic, borgbackup
  5. Sigurnosna kopija 5. dio: Testiranje bacula i veeam sigurnosne kopije za linux
  6. Sigurnosno kopiranje, 6. dio: Usporedba alata za sigurnosno kopiranje
  7. 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

  1. 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.
  2. Na testnom poslužitelju datoteke se migriraju u drugi testni skup. Pokreće se proces izrade sigurnosne kopije i mjeri se njegovo vrijeme.
  3. Na testnom poslužitelju migracija se provodi do trećeg testnog skupa. Pokreće se proces izrade sigurnosne kopije i mjeri se njegovo vrijeme.
  4. Rezultirajući treći skup testova prihvaća se kao novi prvi; Koraci 1-3 se ponavljaju još 2 puta.
  5. Podaci se unose u stožernu tablicu, a dodaju se grafikoni s neto podacima.
  6. 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:

  1. Datoteke u repozitoriju bit će pohranjene "kakve jesu".
  2. Veličina spremišta će samo rasti uključujući razliku između sigurnosnih kopija.
  3. 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 suSigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync

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

Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync

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ćeSigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync

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.

Sigurnosno kopiranje, 2. dio: Pregled i testiranje alata za sigurnosno kopiranje temeljenih na rsync

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

Backup, 1. dio: Zašto je backup potreban, pregled metoda, tehnologija
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

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster