Varundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine

Varundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine
Selle märkusega jätkub

varundamise tsükkel

  1. Varundamine, osa 1: Miks on varundamine vajalik, meetodite ja tehnoloogiate ülevaade
  2. Varundamine, osa 2: Rsync-põhiste varundustööriistade ülevaade ja testimine
  3. Varundamine, osa 3: Duplicity, duplicaty, deja dup ülevaade ja testimine
  4. Varundamine, osa 4: Zbackup, restic, borgbackup ülevaade ja testimine
  5. Varundamine, osa 5: Bacula ja Veeam Backup for Linux testimine
  6. Varundamine, osa 6: Varundamise tööriistade võrdlus
  7. 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

  1. Testserveris on valmis esimeseks testikomplektiks failisüsteemi ettevalmistamiseks, varukoopiate talletamise serveris algatatakse vajadusel hoidla.
    Algab varundamisprotsess ja mõõdetakse selle aega.
  2. Testserveris migreritakse faile teise testikomplekti. Algab varundamisprotsess ja mõõdetakse selle aega.
  3. Testserveris migreritakse kolmandasse testikomplekti. Algab varundamisprotsess ja mõõdetakse selle aega.
  4. Saadud kolmas testikomplekt võetakse uue esimesena; punkte 1-3 korratakse veel 2 korda.
  5. Andmed kogutakse kokkuvõtetaotlusse, lisatakse diagrammid netdata'ga.
  6. 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:

  1. Failid hoidlas hoitakse "nagu on".
  2. Hoidla suurus kasvab ainult varunduste vahelise erinevuse sisestamisega.
  3. Andmete edastamise ajal on võrgu koormus suhteliselt suur, samuti väike koormus protsessorile.

Tavalise rsync'i proovijooksu tulemusi kasutatakse mõõtmena.

on järgmisedVarundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine

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.

Varundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine

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ärgmisedVarundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine

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.

Varundamine, osa 2: rsync-põhiste varundustööriistade ülevaade ja testimine

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 1: Miks on varundamine vajalik, meetodite ja tehnoloogiate ülevaade
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

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster