
Selle märkusega jätkub
varundamise tsükkel
- Varundamine, osa 2: Rsync-põhiste varundamisvahendite ü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: Varundamisvahendite võrdlus
- Varundamine, osa 7: Järeldused
Kuna oleme juba esimeses artiklis kirjutanud, on olemas väga palju rsync-põhiseid varundamisprogramme.
Nendest, mis kõige rohkem meie tingimustele vastavad, kaalun 3: rdiff-backup, rsnapshot ja burp.
Testifailide komplektid
Testimiseks mõeldud failikomplektid on kõikidele kandidaatidele ühesugused, sealhulgas tulevastele artiklitele.
Esimene komplekt: 10 GB meediafaile ja umbes 50 MB — saidi algkood php-s, failide suurused ulatuvad paarist kilobaitist algkoodi puhul kuni kümnete megabaitideni meediafailide jaoks. Eesmärk — staatilise saidi simuleerimine.
Teine komplekt: saadakse esimese nime muutmise kaudu, kui meediafailide alammenüü on suurusega 5 GB. Eesmärk on uurida varundussüsteemi käitumist kausta ümbernimetamisel.
Kolmas komplekt: saadakse esimesest, kui kustutada 3 GB meediafaile ja lisada uusi 3 GB meediafaile. Eesmärk on uurida varundussüsteemi käitumist tüüpilise veebisaidi uuendamise operatsiooni käigus.
Tulemuste saamine
Iga varundamine viiakse läbi vähemalt 3 korda ja sellega kaasnevad failisüsteemi vahemälu tühjendamise käsud sync ja echo 3 > /proc/sys/vm/drop_caches nii testserveri kui ka varundussüsteemi serveri poolel.
Serveris, mis on varunduste allikas, on installitud jälgimistarkvara — netdata, millega hinnatakse serveri koormust varundamise ajal, et hinnata varundamisprotsessi koormust serveris.
Arvan, et varundusserver on protsessorilt aeglasem kui peaserver, kuid sellel on mahukamad kettad, millel on suhteliselt madal juhusliku kirjutamise kiirus — see on kõige sagedasem olukord varundamisel. Kuna varundusserver ei peaks tõeliselt täitma muid ülesandeid peale varundamise, ei jälgi ma selle koormust netdata abil.
Samuti on mul muutunud serverid, millel kontrollin erinevaid varundussüsteeme.
Nüüd on neil järgmised omadusedProtsessor
sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (kasutades süsteemi LuaJIT 2.0.4)
Testi käitamine järgmiste valikutega:
Kudede arv: 2
Juhusliku arvu generaatori initsialiseerimine praeguse aja põhjal
Peamiste arvude piir: 20000
Töötajate kudede initsialiseerimine...
Kudede käivitamine!
Protsessori kiirus:
üritusi sekundis: 1081.62
Üldstatistika:
kogu aeg: 30.0013s
ürituste koguarv: 32453
Viivitus (ms):
min: 1.48
avg: 1.85
max: 9.84
95. protsent: 2.07
summa: 59973.40
Kudede õiglus:
üritused (avg/stddev): 16226.5000/57.50
täitmisaja (avg/stddev): 29.9867/0.00
Töö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 valikutega:
Käivitusredeli arv: 4
Algatamine juhusliku arvu generaatorist, alates praegusest ajast
Käivitamine mälukiirusetest, kasutades järgmisi valikuid:
ploki suurus: 1KiB
kogusuurus: 102400MiB
toiming: lugemine
ulatus: globaalne
Töötajate teemasid initsialiseeritakse...
Teemad on alanud!
Kokku tehingud: 104857600 (5837637.63 sekundis)
102400.00 MiB edastatud (5700.82 MiB/sek)
Üldstatistika:
koguaeg: 17.9540s
sündmuste koguarv: 104857600
Latentsus (ms):
min: 0.00
avg: 0.00
max: 66.08
95. protsentil: 0.00
summa: 18544.64
Teemade õiglus:
sündmused (avg/stddev): 26214400.0000/0.00
täitmise aeg (avg/stddev): 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äivitatakse järgmiste valikutega:
Kootud arv: 4
Algatamine juhusliku arvu generaatorist praeguse aja põhjal
Käivitamine mälukiirusetesti järgmiste valikutega:
ploki suurus: 1KiB
kogusuurus: 102400MiB
operatsioon: kirjutamine
ulatus: globaalne
Töötajate lõimede algatamine...
Lõimed on käivitatud!
Kokku operatsioone: 91414596 (3046752.56 sekundis)
89272.07 MiB edastatud (2975.34 MiB/sec)
Üldstatistika:
koguaeg: 30.0019s
sündmuste koguarv: 91414596
Viivitus (ms):
min: 0.00
avg: 0.00
max: 1022.90
95. protsent: 0.00
summa: 66430.91
Lõimede õiglus:
sündmused (keskmine/standardhälve): 22853649.0000/945488.53
täitmise aeg (keskmine/standardhälve): 16.6077/1.76
Ketta asukoht andmeserveris
sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (kasutatakse süsteemi LuaJIT 2.0.4)
Testi käitamine järgmiste valikute abil:
Kaasatud lõimede arv: 4
Algatamine juhusliku arvu generaatorist praeguse aja põhjal
Lisafaili avamise lipud: (puuduvad)
128 faili, igaühe suurus 8MiB
1GiB kogu faili suurus
Ploki suurus 4KiB
IO-päringute arv: 0
Lugemise/Kirjutamise suhe kombineeritud juhusliku IO testi jaoks: 1.50
Perioodiline FSYNC lubatud, kutsudes fsync() välja iga 100 päringu järel.
Kutsutakse fsync() testi lõpus, lubatud.
Kasutatakse sünkroonset I/O režiimi
Teostatakse juhuslik r/w test
Algatamine töötluslõngade...
Lõngad käivitatud!
Faili operatsioonid:
lugemist/s: 4587.95
kirjutamist/s: 3058.66
fsyncs/s: 9795.73
Läbivool:
lugemine, MiB/s: 17.92
kirjutatud, MiB/s: 11.95
Üldstatistika:
koguaeg: 60.0241s
kogusündmuste arv: 1046492
Latentsus (ms):
min: 0.00
avg: 0.23
max: 14.45
95. protsent: 0.94
summa: 238629.34
Lõngade õiglus:
sündmused (avg/stddev): 261623.0000/1849.14
täitmisaja (avg/stddev): 59.6573/0.00
Kopeerimise varundusserveri kett
sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (kasutades süsteemi LuaJIT 2.0.4)
Testi käivitamine järgnevate valikutega:
Threadide arv: 4
Juhusliku arvu generaatori algatamine praegusest ajast
Lisaks failide avamise lipud: (ei midagi)
128 faili, 8MiB igaühe jaoks
1GiB kokku failide suurus
Bloki suurus 4KiB
IO päringute arv: 0
Luge/Kirjuta suhe kombineeritud juhusliku IO testi jaoks: 1.50
Perioodiline FSYNC lubatud, kutsutakse üles fsync() iga 100 päringu järel.
Kutsudes fsync() testi lõpus, lubatud.
Kasutades sünkrone IO režiimi
Tehakse juhuslik r/w test
Algatatakse töölised...
Tööd alustatud!
Faili toimingud:
lugemised/s: 11.37
kirjutamised/s: 7.58
fsyncs/s: 29.99
Läbivus:
lugemine, MiB/s: 0.04
kirjutatud, MiB/s: 0.03
Üldstatistika:
koguaeg: 73.8868s
kogusündmuste arv: 3104
Latentsus (ms):
min: 0.00
avg: 78.57
max: 3840.90
95. protsent: 297.92
summa: 243886.02
Threadide õiglus:
sündmused (avg/stddev): 776.0000/133.26
täitmise aeg (avg/stddev): 60.9715/1.59
Serverite vahelise võrgu kiirus
iperf3 -c backup
Ühendamine hostiga backup, port 5201
[ 4] kohalik x.x.x.x port 59402 ühendatud y.y.y.y port 5201
[ ID] Aeg Ülekanne Läbivus Retr Cwnd
[ 4] 0.00-1.00 sek 419 MByte 3.52 Gbit/s 810 182 KByte
[ 4] 1.00-2.00 sek 393 MByte 3.30 Gbit/s 810 228 KByte
[ 4] 2.00-3.00 sek 378 MByte 3.17 Gbit/s 810 197 KByte
[ 4] 3.00-4.00 sek 380 MByte 3.19 Gbit/s 855 198 KByte
[ 4] 4.00-5.00 sek 375 MByte 3.15 Gbit/s 810 182 KByte
[ 4] 5.00-6.00 sek 379 MByte 3.17 Gbit/s 765 228 KByte
[ 4] 6.00-7.00 sek 376 MByte 3.15 Gbit/s 810 180 KByte
[ 4] 7.00-8.00 sek 379 MByte 3.18 Gbit/s 765 253 KByte
[ 4] 8.00-9.00 sek 380 MByte 3.19 Gbit/s 810 239 KByte
[ 4] 9.00-10.00 sek 411 MByte 3.44 Gbit/s 855 184 KByte
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Aeg Ülekanne Läbivus Retr
[ 4] 0.00-10.00 sek 3.78 GByte 3.25 Gbit/s 8100 saatja
[ 4] 0.00-10.00 sek 3.78 GByte 3.25 Gbit/s vastuvõtja
Testimismetoodika
- Testserveris valmistatakse ette failisüsteem esimesteks testikomplektideks, ja vajadusel initsialiseeritakse varukoopiate salvestamise serveris hoidla.
Käivitub varukoopiate protsess ja mõõdetakse selle kestust. - Testserveris viiakse läbi failide migreerimine teise testikomplekti. Käivitub varukoopiate protsess ja mõõdetakse selle kestust.
- Testserveris toimub kolmanda testikomplekti migratsioon. Käivitatakse varundusprotsess ja mõõdetakse selle kestust.
- Saadud kolmas testikomplekt võetakse uueks esimeseks; punkte 1-3 korratakse veel 2 korda.
- Andmed kantakse koondtabelisse, lisatakse diagrammid netdata abil.
- Koostatakse eraldi varundusmeetodi raport.
Oodatavad tulemused
Kuna kõik 3 kandidaati põhinevad samal tehnoloogial (rsync), oodatakse, et tulemused oleksid lähedased tavapärasele rsync-ile, sealhulgas kõik selle eelised, nimelt:
- Failid hoidlas hoitakse „nagu need on”.
- Hoidla suurus suureneb ainult varukoopiate vahelise erinevuse arvestamisel.
- Andmete edastamisel on võrgu koormus suhteliselt suur, samuti väike koormus protsessorile.
Tavapärase rsync-i testkäitlust kasutatakse mõõdupuuna, selle tulemused
on järgmised
Tugev koht oli varundatud andmete salvestamise server HDD-põhise kettaga, mida diagrammide lõikes väga selgelt näha on.
Andmed kopeeriti 4 minuti ja 15 sekundi jooksul.
rdiff-backupi testimine
Esimene kandidaat on rdiff-backup, Pythonis kirjutatud skript, mis teeb varundamise ühe katalooge teisele. Samuti hoitakse praegust varundust "nagu see on", samas kui varasemad varundused kogutakse spetsiaalsesse alamkatalooge inkrementaalselt, säästes seeläbi ruumi.
Kontrollime tüüpilist töörežiimi, st varundamisprotsessi käivitab klient ise, samas kui serveris käivitatakse varundamiseks protsess, mis võtab andmeid vastu.
Vaatame, mida ta meie tingimustes suudab.

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 valulikult igasugusele suurele andmete muutmisele, samuti ei kasuta ta võrku täielikult.
rsnapshot testimine
Teine kandidaat — rsnapshot, on Perl-skript, mille peamine nõue tõhusaks tööks on kõva lingi tugi. See säästab ketasruumi. Samuti ei muutu alates eelmise varukoopia tegemisest muutumatud failid originaalfailile kõvade linkide kaudu viitamise kaudu.
Protsessi varundamise loogika on samuti pööratud: server liigub aktiivselt oma klientide juurde ja kogub andmeid.
Testimise tulemused
saime järgmised
Esimene käivitamine
Teine käivitamine
Kolmas käivitamine
Esimene komplekt
4m22s
4m19s
4m16s
Teine komplekt
2m6s
2m10s
2m6s
Kolmas komplekt
1m18s
1m10s
1m10s
Töötas üsna kiirelt, palju kiiremini kui rdiff-backup ja väga lähedal puhastele rsync'i tulemuste.
burp'i testimine
Veel üks valik — C keeles librsync'i peal ehitatud burp omab kliendiserveri arhitektuuri, sealhulgas kliendi autentimist ja veebiliidest (ei kuulu põhivarustusse). Veel üks huvitav omadus — varundamine ilma kliendi taastamise õigusteta.
Vaatametoime.

Esimene käivitamine
Teine käivitamine
Kolmas käivitamine
Esimene komplekt
11m21s
11m10s
10m56s
Teine komplekt
5m37s
5m40s
5m35s
Kolmas komplekt
3m33s
3m24s
3m40s
Töötas kaks korda aeglasemalt kui rsnapshot, kuid siiski piisavalt kiiresti ja kindlasti kiiremini kui rdiff-backup. Graafikud on veidi hambulised — jõudlus sõltub jälle varukoopia salvestamise serveri kettaalust, kuigi see ei ole nii väljendunud kui rsnapshotil.
Tulemused
Kandidaatide väljundite suurused olid umbes samad, st esiteks tõus kuni 10 GB, seejärel tõus kuni 15 GB, siis tõus kuni 18 GB jne, mis on seotud rsynci töö eripäradega. Samuti tasub märkida kandidaatide ühtne töötlemine (protsessorikoormus umbes 50% kaheksatuumalise masina puhul). Kõik 3 kandidaati pakkusid võimalust taastada viimane varukoopia „nagu on“, st faile sai taastada ilma väliste programmide kasutamiseta, sealhulgas neid, mida kasutati varustatud repositorite loomiseks. See on samuti „pärandi tõug“ rsyncist.
Järeldused
Mida keerulisem on varundamise süsteem ja mida rohkem on tal erinevaid võimalusi — seda aeglasemalt see töötab, kuid mitte liiga nõudlike projektide jaoks sobib ükskõik milline neist, välja arvatud võib-olla rdiff-backup.
Teade
See märkmed jätkab varukoopiate sarja.
Varundamine, osa 2: rsync-põhiste varunduslahenduste ü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: Varundamisvahendite võrdlus
Varundamine, osa 7: Järeldused
Postituse autor: Pavel Demkovich
Allikas: habr.com
