
Selle märkusega jätkub
varundamise tsükkel
- Varundamine, osa 2: Rsync-põhiste varundustööriistade ülevaade ja testimine
- Varundamine, osa 3: Duplicity, duplicaty, deja dup ülevaade ja testimine
- Varundamine, osa 4: Zbackup, restic, borgbackup ülevaade ja testimine
- Varundamine, osa 5: Bacula ja Veeam Backup for Linux testimine
- Varundamine, osa 6: Varundamise tööriistade võrdlus
- Varundamine, osa 7: Järeldused
Nagu me juba esimese artikli puhul mainisime, on olemas palju rsync-põhiseid varundustarkvarasid.
Nendest, mis kõige rohkem vastavad meie tingimustele, vaatan ma üle 3: rdiff-backup, rsnapshot ja burp.
Testifailide komplektid
Testimiseks mõeldud failide komplektid on kõikide kandidaatide jaoks samad, sealhulgas tulevastes artiklites.
Esimene komplekt: 10 GB meediakoopiaid ja umbes 50 MB — saidi lähtekood php-s, faili suurused ulatuvad mõnest kilobaitist lähtekoodi jaoks kuni kümnete megabaitideni meediafailide jaoks. Eesmärk — simuleerida staatilise saiti.
Teine komplekt: saadakse esimesest, kui muudame meediafailide alamkausta nime 5 GB suurusega. Eesmärk — uurida varundussüsteemi käitumist kausta ümbernimetamisel.
Kolmas komplekt: saadakse esimesest, kui eemaldame 3 GB meediafaile ja lisame uusi 3 GB meediafaile. Eesmärk — uurida varundussüsteemi käitumist tüüpilise saidi värskendamise operatsiooni käigus.
Tulemustest
Iga varundamine toimub vähemalt 3 korda ja seda saadab failisüsteemi vahemälu tühjendamine käskudega sync ja echo 3 > /proc/sys/vm/drop_caches n tanto testiserveri kui ka varundusserveri poolel.
Varundusfailide allikaserveris on installitud jälgimistarkvara — netdata, millega hinnatakse koormust serveris varundamise ajal, see on vajalik serveri koormuse hindamiseks varundamisprotsessi käigus.
Peale selle arvan, et varundusserver on protsessorilt aeglasem kui peamine server, kuid sellel on mahukamad kettad, millel on suhteliselt madal suvaline kirjutamiskiirus — kõige levinum olukord varundamisel, ning kuna varundusserver ei tohiks õigupoolest teha muid ülesandeid peale varundamise, siis ma ei jälgi netdata abil selle koormust.
Samuti on mul muutunud serverid, millel ma erinevaid varundussüsteeme testin.
Praegu on nende omadused järgmisedProtsessor
sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (kasutades süsteemi LuaJIT 2.0.4)
Testi käivitamine järgmiste valikute abil:
Käthreadide arv: 2
Juhuslike arvude generaatori initsialiseerimine praeguse ajaga
Primaarsed arvud: 20000
Töötajate lõime initsialiseerimine...
Lõimed käivitatud!
CPU kiirus:
sündmused sekundis: 1081.62
Üldstatistika:
koguaeg: 30.0013s
sündmuste koguarv: 32453
Läbimisajad (ms):
min: 1.48
keskmine: 1.85
max: 9.84
95. protsent: 2.07
summa: 59973.40
Lõimede võrdsus:
sündmused (keskmine/standardhälve): 16226.5000/57.50
täitmise aeg (keskmine/standardhälve): 29.9867/0.00
Mälu lugemine…
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 (kasutades süsteemi LuaJIT 2.0.4)
Testi käivitamine järgmiste valikute abil:
Käthreadide arv: 4
Juhuslike arvude generaatori initsialiseerimine praeguse ajaga
Mälu kiiruskatse käivitamine järgmiste valikute abil:
ploki suurus: 1KiB
kogusuurus: 102400MiB
operatsioon: lugemine
ulatus: globaalne
Töötajate lõimede initsialiseerimine...
Lõimed käivitatud!
Kokkuoperatsioonid: 104857600 (5837637.63 sekundis)
102400.00 MiB edastatud (5700.82 MiB/sec)
Üldstatistika:
koguaeg: 17.9540s
sündmuste koguarv: 104857600
Läbimisajad (ms):
min: 0.00
keskmine: 0.00
max: 66.08
95. protsent: 0.00
summa: 18544.64
Lõimede võrdsus:
sündmused (keskmine/standardhälve): 26214400.0000/0.00
täitmise aeg (keskmine/standardhälve): 4.6362/0.12
… ja kirjutamine
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 (kasutades süsteemi LuaJIT 2.0.4)
Testi käivitamine järgmiste valikute abil:
Käthreadide arv: 4
Juhuslike arvude generaatori initsialiseerimine praeguse ajaga
Mälu kiiruskatse käivitamine järgmiste valikute abil:
ploki suurus: 1KiB
kogusuurus: 102400MiB
operatsioon: kirjutamine
ulatus: globaalne
Töötajate lõimede initsialiseerimine...
Lõimed käivitatud!
Kokkuoperatsioonid: 91414596 (3046752.56 sekundis)
89272.07 MiB edastatud (2975.34 MiB/sec)
Üldstatistika:
koguaeg: 30.0019s
sündmuste koguarv: 91414596
Läbimisajad (ms):
min: 0.00
keskmine: 0.00
max: 1022.90
95. protsent: 0.00
summa: 66430.91
Lõimede võrdsus:
sündmused (keskmine/standardhälve): 22853649.0000/945488.53
täitmise aeg (keskmine/standardhälve): 16.6077/1.76
Andmeallika serveri kõvaketas
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
Varundus serveril varukoopia jaoks
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
Serveritevaheline võrgu kiirus
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/sek 810 182 KBytes
[ 4] 1.00-2.00 sec 393 MBytes 3.30 Gbits/sek 810 228 KBytes
[ 4] 2.00-3.00 sec 378 MBytes 3.17 Gbits/sek 810 197 KBytes
[ 4] 3.00-4.00 sec 380 MBytes 3.19 Gbits/sek 855 198 KBytes
[ 4] 4.00-5.00 sec 375 MBytes 3.15 Gbits/sek 810 182 KBytes
[ 4] 5.00-6.00 sec 379 MBytes 3.17 Gbits/sek 765 228 KBytes
[ 4] 6.00-7.00 sec 376 MBytes 3.15 Gbits/sek 810 180 KBytes
[ 4] 7.00-8.00 sec 379 MBytes 3.18 Gbits/sek 765 253 KBytes
[ 4] 8.00-9.00 sec 380 MBytes 3.19 Gbits/sek 810 239 KBytes
[ 4] 9.00-10.00 sec 411 MBytes 3.44 Gbits/sek 855 184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sek 8100 sender
[ 4] 0.00-10.00 sec 3.78 GBytes 3.25 Gbits/sek receiver
Testimise meetod
- Testserveris on valmis esimeseks testikomplektiks failisüsteemi ettevalmistamiseks, varukoopiate talletamise serveris algatatakse vajadusel hoidla.
Algab varundamisprotsess ja mõõdetakse selle aega. - Testserveris migreritakse faile teise testikomplekti. Algab varundamisprotsess ja mõõdetakse selle aega.
- Testserveris migreritakse kolmandasse testikomplekti. Algab varundamisprotsess ja mõõdetakse selle aega.
- Saadud kolmas testikomplekt võetakse uue esimesena; punkte 1-3 korratakse veel 2 korda.
- Andmed kogutakse kokkuvõtetaotlusse, lisatakse diagrammid netdata'ga.
- Koostatakse aruanne eraldi varundamismeetodi kohta.
Oodatavad tulemused
Kuna kõik 3 kandidaati põhinevad samal tehnoloogial (rsync), oodatakse, et tulemused oleksid lähedased tavapärasele rsyncile, sealhulgas kõik selle eelised, nimelt:
- Failid hoidlas hoitakse "nagu on".
- Hoidla suurus kasvab ainult varunduste vahelise erinevuse sisestamisega.
- Andmete edastamise ajal on võrgu koormus suhteliselt suur, samuti väike koormus protsessorile.
Tavalise rsync'i proovijooksu tulemusi kasutatakse mõõtmena.
on järgmised
Rikkalik koht oli varukoopiaid sisaldava serveri HDD-põhine ketas, mis paistab diagrammides selgelt välja.
Andmed kopeeriti 4 minuti ja 15 sekundi jooksul.
rdiff-backup'i testimine
Esimene kandidaat on rdiff-backup, pythonis kirjutatud skript, mis varundab ühe katalooge teise. Praegune varukoopia hoitakse "nagu on", varasemad varukoopiad kogutakse spetsiifilisse alamkausta inkrimentaalselt, seega säästetakse ruumi.
Kontrollime tüüpilist töömudelit, s.t. varundamisprotsessi käivitab klient ise ja serveris käivitub varundamiseks protsess, mis aktsepteerib andmeid.
Vaadakem, mida ta suudab meie tingimustes.

Iga testkäivituse tööaeg:
Esimene käivitamine
Teine käivitamine
Kolmas käivitamine
Esimene komplekt
16m32s
16m26s
16m19s
Teine komplekt
2h5m
2h10m
2h8m
Kolmas komplekt
2h9m
2h10m
2h10m
Rdiff-backup reageerib väga valusalt igasugustele suurtele andmete muutustele ja ei kasuta võrku täielikult.
Rsnapshot'i testimine
Teine kandidaat on rsnapshot, mis on perl'is kirjutatud skript, mille jaoks on peamine nõue tõsiste linkide toimetamine. Nii säästetakse ruumi kõvakettal. Samuti viitavad muutumatud failid pärast eelmise varukoopia tulemusi originaalfailile tõsiste linkide kaudu.
Samuti on varundamisprotsessi loogika pöördunud: server käib aktiivselt oma klientide juures ja kogub andmeid.
Testimise tulemused
saadi järgmised
Esimene käivitamine
Teine käivitamine
Kolmas käivitamine
Esimene komplekt
4m22s
4m19s
4m16s
Teine komplekt
2m6s
2m10s
2m6s
Kolmas komplekt
1m18s
Töötas väga ja väga kiiresti, palju kiiremini kui rdiff-backup ja väga lähedal puhtale rsync'ile.
Töötas väga ja väga kiiresti, palju kiiremini kui rdiff-backup ja väga lähedal puhtale rsync'ile.
Burp'i testimine
Veel üks variant on C peal librsync'i rakendus — burp, millel on klient-server arhitektuur, sealhulgas klientide autentimine, samuti veebiliidese olemasolu (ei kuulu põhitoote komplekti). Veel üks huvitav omadus — varundamine ilma taastamisõigusteta klientidele.
Vaadakem
11m21stõhusus.

Esimene käivitamine
Teine käivitamine
Kolmas käivitamine
Esimene komplekt
11m10s
10m56s
5m37s
Teine komplekt
3m33s
5m40s
5m35s
Kolmas komplekt
3m24s
3m40s
Töötas kaks korda aeglasemalt kui rsnapshot, kuid siiski piisavalt kiiresti ning kindlasti kiiremini kui rdiff-backup. Graafikud on veidi saagjad — jõudlus jõuab jälle varundusserveri kettaalusesse süsteemi, kuigi see pole nii väljendunud kui rsnapshot'i puhul.
Töötas kaks korda aeglasemalt kui rsnapshot, kuid siiski piisavalt kiiresti, ja oli kindlasti kiirem kui rdiff-backup. Graafikud on veidi saagjad — jõudlus sõltub taas varukoopiate säilitusserveri salvestusüksusest, kuigi see ei ole nii väljendunud kui rsnapshotil.
tulemused näitasid ainult nelja ebaolulise koodibloki kattuvust, mis olid tingitud POSIX ja ANSI C nõuetest.
Kõikide kandidaatide repositooriumide suurus oli umbes sama, st esmalt kasv kuni 10 GB, siis kuni 15 GB, seejärel kuni 18 GB jne, mis on seotud rsync'i tööspetsiifikaga. Samuti tasub märkida, et kõik kandidaadid töötasid ühe lõimena (protsessori koormus umbes 50% kahetuumalisel masinal). Kõik 3 kandidaati pakkusid võimalust taastada viimast varukoopiat 'nagu see on', st faile sai taastada ilma kolmandate osapoolte programmide kasutamiseta, sealhulgas nendega, mida kasutati repositooriumide loomiseks. See on samuti rsync'i 'pärand'.
Järeldused
Mida keerulisem on varundussüsteem ja mida rohkem tal on erinevaid funktsioone, seda aeglasemalt ta töötab, kuid mitte eriti nõudlike projektide jaoks sobib ükskõik milline neist, välja arvatud võib-olla rdiff-backup.
Teade
See märkus jätkab varundamise tsüklit.
Varundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine
Varundamine, osa 3: Duplicity, duplicaty, deja dup ülevaade ja testimine
Varundamine, osa 4: Zbackup, restic, borgbackup ülevaade ja testimine
Varundamine, osa 5: Bacula ja Veeam Backup for Linux testimine
Varundamine, osa 6: Varundamise tööriistade võrdlus
Varundamine, osa 7: Järeldused
Avaldaja: Pavel Demkovich
Allikas: habr.com
