Ehtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi

Ehtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi
Bu qeydlə davam olunur

eşit olaraq rezerv nüsxələmə siklində

  1. Ehtiyat nüsxə, hissə 1: Ehtiyat nüsxənin məqsədi, üsulların və texnologiyaların icmalı
  2. Rezerv nüsxələmə, hissə 2: rsync əsaslı rezerv nüsxələmə vasitələrinin icmalı və sınağı
  3. Rezerv nüsxələmə, hissə 3: duplicity, duplicaty, deja dup icmalı və sınağı
  4. Ehtiyat nüsxə, hissə 4: zbackup, restic, borgbackup-ın icmalı və test edilməsi
  5. Ehtiyat nüsxə, hissə 5: bacula və linux üçün veeam backup-ın test edilməsi
  6. Ehtiyat nüsxəsi, hissə 6: Ehtiyat nüsxəsi vasitələrinin müqayisəsi
  7. Ehtiyat nüsxə, hissə 7: Nəticələr

Birinci məqalədə qeyd etdiyimiz kimi, rsync əsaslı bir çox rezerv nüsxələmə proqramı mövcuddur.

Müxtəlif şərtlərə uyğun olanlardan 3-ü üzərində dayanacağam: rdiff-backup, rsnapshot və burp.

Sınaq fayl dəstləri

Sınaq üçün fayl dəstləri bütün namizəd bilər hər kəs üçün eynidir, eyni zamanda gələcək məqalələr üçün də.

Birinci dəst: 10 GB media faylı, və təxminən 50 mb - saytın php source kodu, fayl ölçüləri bir neçə kilobytdan media faylları üçün onlarla megabayta qədərdir. Məqsəd - statik bir saytın imitasiya edilməsi.

İkinci dəst: birinci dəstdən 5 GB ölçüsündə media faylları olan alt kataloqun adı dəyişdirilərək alınır. Məqsəd - kataloqun adı dəyişməsi zamanı rezerv nüsxələmə sisteminin davranışını öyrənmək.

Üçüncü dəst: birinci dəstdən 3 GB media faylını silərək və yeni 3 GB media faylı əlavə edərək əldə edilir. Məqsəd - saytın güncəllənməsi üçün tipik bir əməliyyatda rezerv nüsxələmə sisteminin davranışını öyrənmək.

Nəticələrin əldə edilməsi

Hər hansı rezerv nüsxələmə minimum 3 dəfə yerinə yetirilir və fayl sisteminin önbelleklerini boşaltmaq üçün aşağıdakı əmrlərlə müşayiət olunur syncecho 3 > /proc/sys/vm/drop_caches həm test serverində, həm də rezerv nüsxələrin saxlanıldığı serverdə.

Rezerv nüsxələri mənbə olan serverdə yük altında olanı qiymətləndirmək üçün netdata monitorinq proqramı quraşdırılmışdır - bu, rezerv nüsxələmə prosesində server yükünü qiymətləndirmək üçün lazımdır.

Həmçinin, rezerv nüsxələri saxlayan serverin prosessor açısından əsas serverdən daha yavaş olduğunu düşünürəm, amma nisbətən kiçik təsadüfi yazma sürətinə malik geniş disklara sahibdir - rezerv nüsxələmə zamanı ən tez-tez qarşılaşılan bir vəziyyətdir, çünki rezerv nüsxələmə serveri, həqiqətən, rezerv nüsxələmə xaricində başqa vəzifələri yerinə yetirməməlidir, bu səbəbdən onun yükünü netdata ilə izləməyəcəyəm.

Həmçinin, rezerv nüsxələmə üçün müxtəlif sistemləri sınayacağım serverlərdə değişikliklər olmuşdur.

İndi onların aşağıdakı xüsusiyyətləri varProsessor

sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Test aşağıdakı variantlarla icra edilir:
İplərin sayı: 2
Təsadüfi ədədlərin generatoru hazırda vaxtdan başlanır


Baş sayının məhdudiyyəti: 20000

İşçi ipliklərin yaradılması...

İplər başlanıb!

CPU sürəti:
    hadisələr saniyədə:  1081.62

Ümumi statistikalar:
    cəmi vaxt:                          30.0013s
    cəmi hadisələr sayı:              32453

Gecikmə (ms):
         minimum:                                    1.48
         ortalama:                                    1.85
         maksimum:                                    9.84
         95-ci faiz:                        2.07
         cəm:                                59973.40

İplərin ədaləti:
    hadisələr (ortalama/stdev):           16226.5000/57.50
    icra vaxtı (ortalama/stdev):   29.9867/0.00

Yaddaş, oxuma…

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)

Test aşağıdakı variantlarla icra edilir:
İplərin sayı: 4
Təsadüfi ədədlərin generatoru hazırda vaxtdan başlanır


Yaddaş sürət testini aşağıdakı variantlarla icra edir:
  blok ölçüsü: 1KiB
  cəmi ölçü: 102400MiB
  əməliyyat: oxumaq
  məhdudiyyət: qlobal

İşçi ipliklərin yaradılması...

İplər başlanıb!

Cəmi əməliyyatlar: 104857600 (5837637.63 saniyədə)

102400.00 MiB köçürüldü (5700.82 MiB/saniyə)


Ümumi statistikalar:
    cəmi vaxt:                          17.9540s
    cəmi hadisələr sayı:              104857600

Gecikmə (ms):
         minimum:                                    0.00
         ortalama:                                    0.00
         maksimum:                                   66.08
         95-ci faiz:                        0.00
         cəm:                                18544.64

İplərin ədaləti:
    hadisələr (ortalama/stdev):           26214400.0000/0.00
    icra vaxtı (ortalama/stdev):   4.6362/0.12

… və yazma

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)

Test aşağıdakı variantlarla icra edilir:
İplərin sayı: 4
Təsadüfi ədədlərin generatoru hazırda vaxtdan başlanır


Yaddaş sürət testini aşağıdakı variantlarla icra edir:
  blok ölçüsü: 1KiB
  cəmi ölçü: 102400MiB
  əməliyyat: yazmaq
  məhdudiyyət: qlobal

İşçi ipliklərin yaradılması...

İplər başlanıb!

Cəmi əməliyyatlar: 91414596 (3046752.56 saniyədə)

89272.07 MiB köçürüldü (2975.34 MiB/saniyə)


Ümumi statistikalar:
    cəmi vaxt:                          30.0019s
    cəmi hadisələr sayı:              91414596

Gecikmə (ms):
         minimum:                                    0.00
         ortalama:                                    0.00
         maksimum:                                 1022.90
         95-ci faiz:                        0.00
         cəm:                                66430.91

İplərin ədaləti:
    hadisələr (ortalama/stdev):           22853649.0000/945488.53
    icra vaxtı (ortalama/stdev):   16.6077/1.76

Məlumatların server diskində

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)

Test aşağıdakı seçimlərlə yerinə yetirilir:
İplərin sayı: 4
Hal-hazırki vaxtdan təsadüfi ədədlər generatörünü başlatmaq


Əlavə fayl açma bayraqları: (yoxdur)
128 fayl, hər biri 8MiB
1GiB cəmi fayl ölçüsü
Blok ölçüsü 4KiB
IO sorğularının sayı: 0
Birgə təsadüfi IO testi üçün oxu/Yazma nisbəti: 1.50
Müntəzəm FSYNC aktivdir, hər 100 sorğudan sonra fsync() çağırılır.
Testin sonunda fsync() çağırılması, Aktivdir.
Synchronous I/O rejimi istifadə olunur
Təsadüfi r/w testi aparılır
İşçi ip‎lərini başlatmaq...

İplər başladıldı!


Fayl əməliyyatları:
    oxuma/s:                      4587.95
    yazma/s:                     3058.66
    fsyncs/s:                     9795.73

Yük:
    oxu, MiB/s:                  17.92
    yazılmış, MiB/s:               11.95

Ümumi statistika:
    cəmi vaxt:                          60.0241s
    cəmi hadisə sayı:              1046492

Gecikmə (ms):
         minimum:                                    0.00
         ortalama:                                    0.23
         maksimum:                                   14.45
         95-ci yüzdəlik:                        0.94
         cəmi:                               238629.34

İplərin ədaləti:
    hadisələr (ortalama/standart deviasiya):           261623.0000/1849.14
    icra müddəti (ortalama/standart deviasiya):   59.6573/0.00

Saxlanma serverindəki disk

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)

Test aşağıdakı seçimlərlə yerinə yetirilir:
İplərin sayı: 4
Hal-hazırki vaxtdan təsadüfi ədədlər generatörünü başlatmaq


Əlavə fayl açma bayraqları: (yoxdur)
128 fayl, hər biri 8MiB
1GiB cəmi fayl ölçüsü
Blok ölçüsü 4KiB
IO sorğularının sayı: 0
Birgə təsadüfi IO testi üçün oxu/Yazma nisbəti: 1.50
Müntəzəm FSYNC aktivdir, hər 100 sorğudan sonra fsync() çağırılır.
Testin sonunda fsync() çağırılması, Aktivdir.
Synchronous I/O rejimi istifadə olunur
Təsadüfi r/w testi aparılır
İşçi ip‎lərini başlatmaq...

İplər başladıldı!


Fayl əməliyyatları:
    oxuma/s:                      11.37
    yazma/s:                     7.58
    fsyncs/s:                     29.99

Yük:
    oxu, MiB/s:                  0.04
    yazılmış, MiB/s:               0.03

Ümumi statistika:
    cəmi vaxt:                          73.8868s
    cəmi hadisə sayı:              3104

Gecikmə (ms):
         minimum:                                    0.00
         ortalama:                                   78.57
         maksimum:                                 3840.90
         95-ci yüzdəlik:                      297.92
         cəmi:                               243886.02

İplərin ədaləti:
    hadisələr (ortalama/standart deviasiya):           776.0000/133.26
    icra müddəti (ortalama/standart deviasiya):   60.9715/1.59

Serverlər arasında şəbəkə sürəti

iperf3 -c backup
Backup hostuna qoşulma, port 5201
[  4] yerli x.x.x.x port 59402 y.y.y.y port 5201-ə qoşuldu
[ ID] Aralıq           Transfers     Bant genişliyi     Retr  Cwnd
[  4]   0.00-1.00   saniyə   419 MBytes  3.52 Gbits/s  810    182 KBytes
[  4]   1.00-2.00   saniyə   393 MBytes  3.30 Gbits/s  810    228 KBytes
[  4]   2.00-3.00   saniyə   378 MBytes  3.17 Gbits/s  810    197 KBytes
[  4]   3.00-4.00   saniyə   380 MBytes  3.19 Gbits/s  855    198 KBytes
[  4]   4.00-5.00   saniyə   375 MBytes  3.15 Gbits/s  810    182 KBytes
[  4]   5.00-6.00   saniyə   379 MBytes  3.17 Gbits/s  765    228 KBytes
[  4]   6.00-7.00   saniyə   376 MBytes  3.15 Gbits/s  810    180 KBytes
[  4]   7.00-8.00   saniyə   379 MBytes  3.18 Gbits/s  765    253 KBytes
[  4]   8.00-9.00   saniyə   380 MBytes  3.19 Gbits/s  810    239 KBytes
[  4]   9.00-10.00  saniyə   411 MBytes  3.44 Gbits/s  855    184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Aralıq           Transfers     Bant genişliyi     Retr
[  4]   0.00-10.00  saniyə  3.78 GBytes  3.25 Gbits/s  8100             göndərən
[  4]   0.00-10.00  saniyə  3.78 GBytes  3.25 Gbits/s                  qəbul edən

Test Metodologiyası

  1. Test serverində birinci test dəstinə görə fayl sistemi hazırlanır, ehtiyat nüsxə saxlama serverində lazımi hallarda depozit təşkil edilir.
    Ehtiyat nüsxə prosesi işə salınır və onun vaxtı ölçülür.
  2. Test serverində fayllar ikinci test dəstinə köçürülür. Ehtiyat nüsxə prosesi işə salınır və onun vaxtı ölçülür.
  3. Test serverində üçüncü test dəstinə köçürülmə prosesi həyata keçirilir. Ehtiyat nüsxə prosesi işə salınır və onun vaxtı ölçülür.
  4. Alınan üçüncü test dəsti yeni birinci kimi qəbul edilir; 1-3-cü punktlar 2 dəfə daha təkrarlanır.
  5. Məlumatlar cədvəl üzrə qeydə alınır, netdata ilə qrafiklər əlavə edilir.
  6. Müxtəlif ehtiyat nüsxə metodlarına dair hesabat hazırlanır.

Gözlənilən nəticələr

Bütün 3 namizəd eyni texnologiyaya (rsync) əsaslandığı üçün, nəticələrin adi rsync-ə yaxın olması gözlənilir, bununla birlikdə onun bütün üstünlükləri, yəni:

  1. Depozitdə fayllar "olduğu kimi" saxlanılacaq.
  2. Depozitin ölçüsü yalnız ehtiyat nüsxələr arasındakı fərqləri daxil etməklə böyüyəcək.
  3. Məlumatların ötürülməsi zamanı nisbətən böyük şəbəkə yükü və az bir CPU yükü olacaq.

Adi rsync-in test işləməsi etalon kimi tətbiq ediləcək, onun nəticələri

belədirEhtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi

Dar nöqtə, HDD əsaslı diskdən ibarət olan ehtiyat nüsxə saxlama serverində baş verdi, bu, qrafiklərdə açıq şəkildə görünür.

Məlumatlar 4 dəqiqə 15 saniyə ərzində köçürüldü.

rdiff-backup testi

İlk namizəd — rdiff-backup, bir katalogu digərinə yedəkləyən python skripti. Burada cari yedəkləmə "olduğu kimi" saxlanılır, daha əvvəl edilən yedəkləmələr isə xüsusi bir alt kataloqa inkremental şəkildə yığılır və bu yolla yer saxlanılır.

Standart iş rejimini yoxlayacağıq, yəni yedəkləmə prosesi müştəri tərəfindən özbaşına işə salınır, server tərəfində isə məlumatları qəbul edən bir proses başlayır.

Gəlin baxaq, nələr edə bilir bizim şəraitimizdə.

Ehtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi

Hər test başlatma zamanı:

İlk başlatma
İkinci başlatma
Üçüncü başlatma

Birinci dəst
16m32s
16d26s
16m19s

İkinci dəst
2h5m
2h10m
2h8m

Üçüncü dəst
2h9m
2h10m
2h10m

Rdiff-backup hər hansı böyük məlumat dəyişikliyinə çox həssasdır, həmçinin şəbəkədən tam istifadə etmir.

Rsnapshot testləri

İkinci namizəd — rsnapshot, əsas tələbi sərt bağlantıları dəstəkləyən perl skriptidir. Bu şəkildə diskdə yer saxlanılır. Beləliklə, əvvəlki yedəkləmə tarixindən sonra dəyişməyən fayllar sərt bağlantılar vasitəsilə orijinal fayla istinad edəcək.

Eyni zamanda, yedəkləmə prosesinin məntiqi dəyişdirilmişdir: server müştərilərinə aktiv şəkildə "yürüyür" və məlumatları götürür.

Test nəticələri

nəticə aşağıdakı kimi olduEhtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi

İlk başlatma
İkinci başlatma
Üçüncü başlatma

Birinci dəst
4m22s
4d19s
4m16s

İkinci dəst
2m6s
2m10s
2m6s

Üçüncü dəst
1m18s
1m10s
1m10s

Çox sürətli işləyib, rdiff-backup-dan kifayət qədər sürətlidir və tam rsync-a çox yaxındır.

Burp testləri

Başqa bir variant — C dilində librsync üstündə burp, müştəri-server arxitekturasına malikdir. Müştərilərin autentifikasiyası ilə yanaşı, veb interfeysinin olması (əsas paketə daxil deyil). Bir başqa maraqlı xüsusiyyət — müştərilər üzərində bərpa hüququ olmadan yedəkləmə.

Gəlin baxaqBu, belə modellərdə qəbul edilən performansa nail olmağın qeyri-mümkün olduğunu demək deyil. Çox vaxt, lazım olan metriklərə nail olmaq üçün sadəcə daha çox səy və diqqət tələb oluna bilər..

Ehtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi

İlk başlatma
İkinci başlatma
Üçüncü başlatma

Birinci dəst
11m21s
11m10s
10m56s

İkinci dəst
5m37s
5m40s
5m35s

Üçüncü dəst
3m33s
3m24s
3m40s

Rsnapshot-dan 2 dəfə daha yavaş işləyib, lakin hələ də kifayət qədər sürətlidir və rdiff-backup-dan daha sürətlidir. Qrafiklər bir az dişli forma alır — performans yenə də yedəkləmə serverinin disk sistemində dayanır, lakin rsnapshot-dan daha az nəzərə çarpır.

Nəticələr

Bütün namizədlerin repozitoriyalarının həcmi təxminən eyni idi, yəni əvvəlcə 10 GB-a, sonra 15 GB-a, sonra 18 GB-a qədər artım oldu və s., bu isə rsync-in xüsusiyyətləri ilə əlaqədardır. Həmçinin, bütün namizədlərin tək iplikli olması (iki nüvəli maşın üzərində prosessor yükü təxminən 50%) qeyd edilməlidir. Bütün 3 namizəd ən son ehtiyat nüsxənin "olduğu kimi" bərpasını təmin edirdi, yəni faylları repozitoriyaların yaradılmasında istifadə olunan üçüncü tərəf proqramlardan istifadə etmədən bərpa etmək mümkün idi. Bu, eyni zamanda, rsync-in "vəqf irsi"dir.

Sonuçlar

Saxlama sisteminin nə qədər mürəkkəb olması və onun müxtəlif imkanlarının sayının artması ilə, o qədər də yavaş işləyəcək, lakin tələbkar olmayan layihələr üçün onlardan hər hansı biri, bəlkə də, rdiff-backup istisna olmaqla, uyğundur.

Elan

Bu qeydlər ehtiyat nüsxələmə ilə bağlı məqalələr silsiləsini davam etdirir

Ehtiyat nüsxə, hissə 1: Ehtiyat nüsxənin məqsədi, üsulların və texnologiyaların icmalı
Ehtiyat nüsxələmə, hissə 2: rsync əsaslı ehtiyat nüsxələmə vasitələrinin icmalı və testi
Rezerv nüsxələmə, hissə 3: duplicity, duplicaty, deja dup icmalı və sınağı
Ehtiyat nüsxə, hissə 4: zbackup, restic, borgbackup-ın icmalı və test edilməsi
Ehtiyat nüsxə, hissə 5: bacula və linux üçün veeam backup-ın test edilməsi
Ehtiyat nüsxəsi, hissə 6: Ehtiyat nüsxəsi vasitələrinin müqayisəsi
Ehtiyat nüsxə, hissə 7: Nəticələr

Məqalənin müəllifi: Pavel Demkovich

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster