Backup, del 2: Oversigt og test af rsync-baserede backupløsninger.

Backup, del 2: Oversigt og test af rsync-baserede backupløsninger.
Denne note fortsætter

cirklen om sikkerhedskopiering

  1. Sikkerhedskopiering, del 1: Hvorfor er sikkerhedskopiering nødvendigt, oversigt over metoder, teknologier
  2. Sikkerhedskopiering, del 2: Oversigt og test af rsync-baserede sikkerhedskopieringsværktøjer
  3. Sikkerhedskopiering, del 3: Oversigt og test af duplicity, duplicaty, deja dup
  4. Sikkerhedskopiering, del 4: Oversigt og test af zbackup, restic, borgbackup
  5. Sikkerhedskopiering, del 5: Test af bacula og veeam backup for linux
  6. Sikkerhedskopiering, del 6: Sammenligning af sikkerhedskopieringsværktøjer
  7. Backup, del 7: Konklusioner

Som vi allerede har nævnt i den første artikel, findes der et væld af sikkerhedskopieringsprogrammer, der er baseret på rsync.

Af de, der passer bedst til vores behov, vil jeg se på 3: rdiff-backup, rsnapshot og burp.

Testdatasæt

Datasættene til testningen vil være de samme for alle kandidater, inklusive fremtidige artikler.

Det første sæt: 10 GB mediefiler og cirka 50 MB - kildekoden til et website i php, filstørrelser fra et par kilobyte for kildekoden til titusinder af megabyte for mediefilerne. Målet er at simulere et website med statisk indhold.

Det andet sæt: opstår fra det første ved at omdøbe en undermappe med mediefiler, der er 5 GB store. Målet er at undersøge systemets adfærd under omdøbning af mapper.

Det tredje sæt: opstår fra det første ved at fjerne 3 GB mediefiler og tilføje nye 3 GB mediefiler. Målet er at undersøge systemets adfærd under en typisk opdateringsoperation af websitet.

Indhentning af resultater

Enhver sikkerhedskopiering udføres mindst 3 gange og ledsages af nulstilling af filsystemets cache med kommandoerne synk og echo 3 > /proc/sys/vm/drop_caches både på testserveren og backupserveren.

På serveren, der vil være kilden til sikkerhedskopierne, er der installeret overvågningssoftware - netdata, med hvilken belastningen på serveren under kopieringen vil blive vurderet, dette er nødvendigt for at vurdere belastningen fra sikkerhedskopieringsprocessen.

Jeg mener også, at backupserveren har en langsommere processor end hovedserveren, men disponerer over mere rummelige diske med relativt lav hastighed for tilfældige skrivninger - den mest almindelige situation under sikkerhedskopiering, og da backupserveren i teorien ikke bør udføre andre opgaver end sikkerhedskopiering, vil jeg ikke overvåge dens belastning med netdata.

Jeg har også ændret de servere, som jeg vil teste forskellige sikkerhedskopieringssystemer på.

De har nu følgende specifikationerProcessor

sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu kør
sysbench 1.0.17 (ved hjælp af system LuaJIT 2.0.4)

Kører testen med følgende indstillinger:
Antal tråde: 2
Initialiserer tilfældig talgenerator fra den nuværende tid


Primtal grænse: 20000

Initialiserer arbejdertråde...

Tråde startet!

CPU hastighed:
    begivenheder pr. sekund:  1081.62

Generelle statistikker:
    total tid:                          30.0013s
    samlet antal begivenheder:              32453

Latens (ms):
         min:                                    1.48
         gennemsnit:                            1.85
         max:                                   9.84
         95. percentil:                        2.07
         sum:                                59973.40

Trådenes retfærdighed:
    begivenheder (gennemsnit/stdafvigelse):           16226.5000/57.50
    udførelsestid (gennemsnit/stdafvigelse):   29.9867/0.00

RAM, læsning…

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory kør
sysbench 1.0.17 (ved hjælp af system LuaJIT 2.0.4)

Kører testen med følgende indstillinger:
Antal tråde: 4
Initialiserer tilfældig talgenerator fra den nuværende tid


Kører hukommelseshastighedstest med følgende indstillinger:
  blokstørrelse: 1KiB
  total størrelse: 102400MiB
  operation: læsning
  omfang: global

Initialiserer arbejdertråde...

Tråde startet!

Samlede operationer: 104857600 (5837637.63 pr. sekund)

102400.00 MiB overført (5700.82 MiB/sek)


Generelle statistikker:
    total tid:                          17.9540s
    samlet antal begivenheder:              104857600

Latens (ms):
         min:                                    0.00
         gennemsnit:                            0.00
         max:                                   66.08
         95. percentil:                        0.00
         sum:                                18544.64

Trådenes retfærdighed:
    begivenheder (gennemsnit/stdafvigelse):           26214400.0000/0.00
    udførelsestid (gennemsnit/stdafvigelse):   4.6362/0.12

… og skrivning

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory kør
sysbench 1.0.17 (ved hjælp af system LuaJIT 2.0.4)

Kører testen med følgende indstillinger:
Antal tråde: 4
Initialiserer tilfældig talgenerator fra den nuværende tid


Kører hukommelseshastighedstest med følgende indstillinger:
  blokstørrelse: 1KiB
  total størrelse: 102400MiB
  operation: skrivning
  omfang: global

Initialiserer arbejdertråde...

Tråde startet!

Samlede operationer: 91414596 (3046752.56 pr. sekund)

89272.07 MiB overført (2975.34 MiB/sek)


Generelle statistikker:
    total tid:                          30.0019s
    samlet antal begivenheder:              91414596

Latens (ms):
         min:                                    0.00
         gennemsnit:                            0.00
         max:                                 1022.90
         95. percentil:                        0.00
         sum:                                66430.91

Trådenes retfærdighed:
    begivenheder (gennemsnit/stdafvigelse):           22853649.0000/945488.53
    udførelsestid (gennemsnit/stdafvigelse):   16.6077/1.76

Disk på datakilde-serveren

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)

Kører testen med følgende indstillinger:
Antal tråde: 4
Initialiserer tilfældig talgenerator fra nuværende tid


Ekstra filåbningsflager: (ingen)
128 filer, 8MiB hver
1GiB samlet filstørrelse
Blokstørrelse 4KiB
Antal IO-anmodninger: 0
Read/Write-forhold for kombineret tilfældig IO-test: 1.50
Periodisk FSYNC aktiveret, kalder fsync() hver 100 anmodninger.
Kalder fsync() ved slutningen af testen, aktiveret.
Bruger synkront I/O-mode
Udfører tilfældig r/w-test
Initialiserer arbejdstråde...

Tråde startet!


Filoperationer:
    læsninger/s:                     4587.95
    skrivninger/s:                     3058.66
    fsyncs/s:                       9795.73

Gennemløb:
    læst, MiB/s:                     17.92
    skrevet, MiB/s:                  11.95

Generelle statistikker:
    samlet tid:                          60.0241s
    samlet antal hændelser:              1046492

Forsinkelse (ms):
         min:                                   0.00
         gennemsnit:                             0.23
         maks:                                  14.45
         95. percentil:                          0.94
         sum:                             238629.34

Trådretfærdighed:
    hændelser (gennemsnit/stdafvik):      261623.0000/1849.14
    udførelsestid (gennemsnit/stdafvik):  59.6573/0.00

Disk på backup-serveren

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)

Kører testen med følgende indstillinger:
Antal tråde: 4
Initialiserer tilfældig talgenerator fra nuværende tid


Ekstra filåbningsflager: (ingen)
128 filer, 8MiB hver
1GiB samlet filstørrelse
Blokstørrelse 4KiB
Antal IO-anmodninger: 0
Read/Write-forhold for kombineret tilfældig IO-test: 1.50
Periodisk FSYNC aktiveret, kalder fsync() hver 100 anmodninger.
Kalder fsync() ved slutningen af testen, aktiveret.
Bruger synkront I/O-mode
Udfører tilfældig r/w-test
Initialiserer arbejdstråde...

Tråde startet!


Filoperationer:
    læsninger/s:                     11.37
    skrivninger/s:                     7.58
    fsyncs/s:                       29.99

Gennemløb:
    læst, MiB/s:                     0.04
    skrevet, MiB/s:                  0.03

Generelle statistikker:
    samlet tid:                          73.8868s
    samlet antal hændelser:              3104

Forsinkelse (ms):
         min:                                   0.00
         gennemsnit:                             78.57
         maks:                              3840.90
         95. percentil:                      297.92
         sum:                             243886.02

Trådretfærdighed:
    hændelser (gennemsnit/stdafvik):      776.0000/133.26
    udførelsestid (gennemsnit/stdafvik):  60.9715/1.59

Netværkshastighed mellem servere

iperf3 -c backup
Forbinder til værten backup, port 5201
[  4] lokal x.x.x.x port 59402 forbundet til y.y.y.y port 5201
[ ID] Interval           Overførsel     Båndbredde       Retr  Cwnd
[  4]   0.00-1.00   sek   419 MBytes  3.52 Gbits/sek  810    182 KBytes
[  4]   1.00-2.00   sek   393 MBytes  3.30 Gbits/sek  810    228 KBytes
[  4]   2.00-3.00   sek   378 MBytes  3.17 Gbits/sek  810    197 KBytes
[  4]   3.00-4.00   sek   380 MBytes  3.19 Gbits/sek  855    198 KBytes
[  4]   4.00-5.00   sek   375 MBytes  3.15 Gbits/sek  810    182 KBytes
[  4]   5.00-6.00   sek   379 MBytes  3.17 Gbits/sek  765    228 KBytes
[  4]   6.00-7.00   sek   376 MBytes  3.15 Gbits/sek  810    180 KBytes
[  4]   7.00-8.00   sek   379 MBytes  3.18 Gbits/sek  765    253 KBytes
[  4]   8.00-9.00   sek   380 MBytes  3.19 Gbits/sek  810    239 KBytes
[  4]   9.00-10.00  sek   411 MBytes  3.44 Gbits/sek  855    184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Overførsel     Båndbredde       Retr
[  4]   0.00-10.00  sek  3.78 GBytes  3.25 Gbits/sek  8100             sender
[  4]   0.00-10.00  sek  3.78 GBytes  3.25 Gbits/sek                  modtager

Testmetode

  1. Filsystemet bliver forberedt på testserveren med det første testsæt, og på backupsserveren initieres lageret ved behov.
    Backupprocessen startes, og tiden måles.
  2. Filer migreres på testserveren til det andet testsæt. Backupprocessen startes, og tiden måles.
  3. Filer migreres på testserveren til det tredje testsæt. Backupprocessen startes, og tiden måles.
  4. Det opnåede tredje testsæt accepteres som det nye første; punkterne 1-3 gentages to gange til.
  5. Data indtastes i en opsummeringstabel, og diagrammer tilføjes med netdata.
  6. En rapport om den specifikke backupmetode udarbejdes.

Forventede resultater

Da alle 3 kandidater er baseret på den samme teknologi (rsync), forventes det, at resultaterne vil være tæt på almindelig rsync, inklusive alle dens fordele, nemlig:

  1. Filerne i lageret vil blive opbevaret "som de er".
  2. Størrelsen på lageret vil kun vokse ved at inkludere forskellen mellem backuperne.
  3. Der vil være en relativt stor belastning på netværket ved overførsel af data samt en lille belastning på CPU'en.

Testkørslen af almindelig rsync vil blive anvendt som reference, dens resultater

er som følgerBackup, del 2: Oversigt og test af rsync-baserede backupløsninger.

Flaskehalsen var på backupserveren i form af en HDD-baseret disk, hvilket klart fremgår i grafikkerne.

Data blev kopieret på 4 minutter og 15 sekunder.

Test af rdiff-backup

Den første kandidat er rdiff-backup, et Python-script, der udfører backup af én mappe til en anden. Den aktuelle backup gemmes "som den er", mens tidligere lavede backups opbevares inkrementelt i en særlig undermappe, hvilket sparer plads.

Vi vil tjekke den typiske arbejdsmetode, dvs. at backup-processen startes af klienten selv, og på serverens side startes der en proces til backup, der accepterer data.

Lad os tage et kig på, hvad det kan i vores forhold.

Backup, del 2: Oversigt og test af rsync-baserede backupløsninger.

Tid for hver teststart:

Første opstart
Anden opstart
Tredje opstart

Det første sæt
16m32s
16m26s
16m19s

Det andet sæt
2h5m
2h10m
2h8m

Det tredje sæt
2h9m
2h10m
2h10m

Rdiff-backup reagerer ret smertefuldt på enhver stor ændring af data og udnytter heller ikke netværket fuldt ud.

Test af rsnapshot

Den anden kandidat er rsnapshot, et Perl-script, hvis hovedkrav for effektiv drift er støtte til hårde links. Dette sparer diskplads. Uændrede filer siden den seneste backup vil henvise til den originale fil vha. af hårde links.

Og logikken i backup-processen er også inverteret: Serveren opsøger aktivt sine klienter og henter data.

Ydeevnetest

der blev følgende resultaterBackup, del 2: Oversigt og test af rsync-baserede backupløsninger.

Første opstart
Anden opstart
Tredje opstart

Det første sæt
4m22s
4m19s
4m16s

Det andet sæt
2m6s
2m10s
2m6s

Det tredje sæt
1m18s
1m10s
1m10s

Det fungerede meget hurtigt, meget hurtigere end rdiff-backup og tættere på ren rsync.

Test af burp

En anden mulighed er implementationen i C oven på librsync - burp, som har en klient-server-arkitektur inklusive klientautorisering og en webgrænseflade (ikke inkluderet i den grundlæggende pakke). En interessant funktion er backup uden gendannelsesret for klienter.

Lad os tage et kig påydelse.

Backup, del 2: Oversigt og test af rsync-baserede backupløsninger.

Første opstart
Anden opstart
Tredje opstart

Det første sæt
11m21s
11m10s
10m56s

Det andet sæt
5m37s
5m40s
5m35s

Det tredje sæt
3m33s
3m24s
3m40s

Det arbejdede to gange langsommere end rsnapshot, men stadig hurtigt, og helt sikkert hurtigere end rdiff-backup. Graferne er lidt hakkede - ydelsen støder igen op ad disksystemet på backup-serveren, men det er ikke så udtalt som hos rsnapshot.

Resultater

Størrelsen på arkiverne for alle kandidater var omtrent den samme, dvs. først voksede de til 10 GB, derefter til 15 GB, så til 18 GB osv., hvilket skyldes, hvordan rsync arbejder. Det er også værd at bemærke, at alle kandidater var entrådede (CPU-belastning omkring 50% på en dual-core maskine). Alle 3 kandidater tilbød muligheden for at gendanne den seneste backup «som den er», hvilket vil sige, at filer kunne gendannes uden brug af nogen tredjeparter programmer, inklusiv dem der blev brugt til at oprette arkiverne. Dette er også et «arv» fra rsync.

Konklusioner

Jo mere kompleks systemet til backup er, og jo flere forskellige funktioner det har, jo langsommere vil det fungere, men til ikke meget krævende projekter vil enhver af dem være passende, undtagen måske rdiff-backup.

Annonce

Denne note fortsætter cyklussen om backup

Sikkerhedskopiering, del 1: Hvorfor er sikkerhedskopiering nødvendigt, oversigt over metoder, teknologier
Backup, del 2: Oversigt og test af rsync-baserede backupløsninger.
Sikkerhedskopiering, del 3: Oversigt og test af duplicity, duplicaty, deja dup
Sikkerhedskopiering, del 4: Oversigt og test af zbackup, restic, borgbackup
Sikkerhedskopiering, del 5: Test af bacula og veeam backup for linux
Sikkerhedskopiering, del 6: Sammenligning af sikkerhedskopieringsværktøjer
Backup, del 7: Konklusioner

Forfatteren af publikationen: Pavel Demkovich

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster