Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Salam, mən bu yaxınlarda maraqlı bir problemlə qarşılaşdım: çoxlu sayda blok cihazlarının ehtiyat nüsxəsini çıxarmaq üçün yaddaşın qurulması.

Hər həftə buludumuzdakı bütün virtual maşınların ehtiyat nüsxəsini çıxarırıq, buna görə də minlərlə ehtiyat nüsxəsini saxlamağı və bunu mümkün qədər tez və səmərəli şəkildə etməyi bacarmalıyıq.

Təəssüf ki, standart konfiqurasiyalar RAID5, RAID6 bu halda, biz bunu etməyə icazə verməyəcəyik, çünki bizim kimi böyük disklərdə bərpa prosesi ağrılı şəkildə uzun olacaq və çox güman ki, heç vaxt bitməyəcək.

Hansı alternativlərin olduğuna baxaq:

Silinmə Kodlaşdırması — RAID5, RAID6 ilə oxşar, lakin konfiqurasiya edilə bilən paritet səviyyəsi ilə. Bu zaman rezervasiya blok-blok yox, hər bir obyekt üçün ayrıca həyata keçirilir. Kodlaşdırmanı silməyə cəhd etməyin ən asan yolu genişləndirməkdir kiçik.

DRAID hazırda yayımlanmamış ZFS xüsusiyyətidir. RAIDZ-dən fərqli olaraq, DRAID paylanmış paritet blokuna malikdir və bərpa zamanı massivin bütün disklərini bir anda istifadə edir ki, bu da onu disk nasazlıqlarına daha yaxşı dözmək və uğursuzluqdan sonra daha tez bərpa etmək imkanı verir.

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Server mövcuddur Fujitsu Primergy RX300 S7 prosessorla Intel Xeon CPU E5-2650L 0 @ 1.80GHz, doqquz RAM çubuq Samsung DDR3-1333 8Gb PC3L-10600R ECC Qeydiyyatlı (M393B1K70DH0-YH9), disk rəfi Supermicro SuperChasssis 847E26-RJBOD1, vasitəsilə bağlanır İkili LSI SAS2X36 Genişləndirici və 45 disk Seagage ST6000NM0115-1YZ110 haqqında 6TB hər kəs.

Bir şeyə qərar verməzdən əvvəl hər şeyi düzgün sınaqdan keçirməliyik.

Bunun üçün müxtəlif konfiqurasiyalar hazırladım və sınaqdan keçirdim. Bunun üçün mən S3 backend kimi çıxış edən və müxtəlif sayda hədəflərlə müxtəlif rejimlərdə işə salan miniodan istifadə etdim.

Əsasən, minio qutu eyni sayda disk və disklərin pariteti ilə silmə kodlaşdırmasına qarşı proqram basqında sınaqdan keçirilmişdir və bunlar: RAID6, RAIDZ2 və DRAID2.

İstinad üçün: minionu yalnız bir hədəflə işə saldığınız zaman minio S3 şlüz rejimində işləyir və yerli fayl sisteminizi S3 yaddaşı şəklində çatdırır. Bir neçə hədəfi göstərərək minio-nu işə salsanız, Silinmə Kodlaşdırma rejimi avtomatik olaraq işə düşəcək, bu da xətaya dözümlülük təmin etməklə, məlumatları hədəfləriniz arasında yayacaq.

Varsayılan olaraq, minio hədəfləri qrup başına 16 paritet olmaqla 2 diskdən ibarət qruplara bölür. Bunlar. Məlumatları itirmədən iki disk eyni anda sıradan çıxa bilər.

Performansı yoxlamaq üçün hər biri 16TB olan 6 diskdən istifadə etdim və onların üzərinə 1MB ölçülü kiçik obyektlər yazdım, bu, gələcək yükümüzü ən dəqiq şəkildə təsvir etdi, çünki bütün müasir ehtiyat alətləri məlumatları bir neçə meqabaytlıq bloklara bölür və bu şəkildə yazır.

Testi aparmaq üçün biz uzaq serverdə işə salınan və yüzlərlə ipdə on minlərlə belə obyekti minio-ya göndərən s3bench yardım proqramından istifadə etdik. Bundan sonra mən də eyni şəkildə onları geri tələb etməyə çalışdım.

Benchmark nəticələri aşağıdakı cədvəldə göstərilir:

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Gördüyümüz kimi, minio öz silmə kodlaşdırma rejimində eyni konfiqurasiyada RAID6, RAIDZ2 və DRAID2 proqram təminatı üzərində işləyən minio ilə müqayisədə yazmaqda əhəmiyyətli dərəcədə pis işləyir.

Məni ayrı soruşdu ext4 və XFS-də minionu sınayın. Təəccüblüdür ki, mənim iş yüküm üçün XFS ext4-dən xeyli yavaş oldu.

Testlərin ilk partiyasında Mdadm ZFS-dən üstünlüyünü göstərdi, lakin sonra gmelikov təklif etdiaşağıdakı seçimləri təyin etməklə ZFS performansını yaxşılaşdıra bilərsiniz:

xattr=sa atime=off recordsize=1M

və bundan sonra ZFS ilə testlər daha yaxşı oldu.

Siz həmçinin qeyd edə bilərsiniz ki, DRAID RAIDZ-dən çox performans artımı təmin etmir, lakin nəzəri cəhətdən daha təhlükəsiz olmalıdır.

Son iki testdə mən də metadata (xüsusi) və ZIL (log) SSD-dən güzgüyə köçürməyə çalışdım. Lakin metadataların silinməsi qeyd sürətində çox qazanc vermədi və ZIL-i çıxararkən mənim SSDSC2KI128G8 100% istifadə ilə tavana vurun, buna görə də bu testi uğursuz hesab edirəm. İstisna etmirəm ki, daha sürətli SSD disklərim olsaydı, bəlkə bu, nəticələrimi xeyli yaxşılaşdıra bilərdi, amma təəssüf ki, məndə yox idi.

Sonda mən DRAID-dən istifadə etmək qərarına gəldim və beta statusuna baxmayaraq, bu, bizim vəziyyətimizdə ən sürətli və ən səmərəli saxlama həllidir.

Mən üç qrup və iki paylanmış ehtiyat hissələri olan konfiqurasiyada sadə DRAID2 yaratdım:

# zpool status data
  pool: data
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    data                 ONLINE       0     0     0
      draid2:3g:2s-0     ONLINE       0     0     0
        sdy              ONLINE       0     0     0
        sdam             ONLINE       0     0     0
        sdf              ONLINE       0     0     0
        sdau             ONLINE       0     0     0
        sdab             ONLINE       0     0     0
        sdo              ONLINE       0     0     0
        sdw              ONLINE       0     0     0
        sdak             ONLINE       0     0     0
        sdd              ONLINE       0     0     0
        sdas             ONLINE       0     0     0
        sdm              ONLINE       0     0     0
        sdu              ONLINE       0     0     0
        sdai             ONLINE       0     0     0
        sdaq             ONLINE       0     0     0
        sdk              ONLINE       0     0     0
        sds              ONLINE       0     0     0
        sdag             ONLINE       0     0     0
        sdi              ONLINE       0     0     0
        sdq              ONLINE       0     0     0
        sdae             ONLINE       0     0     0
        sdz              ONLINE       0     0     0
        sdan             ONLINE       0     0     0
        sdg              ONLINE       0     0     0
        sdac             ONLINE       0     0     0
        sdx              ONLINE       0     0     0
        sdal             ONLINE       0     0     0
        sde              ONLINE       0     0     0
        sdat             ONLINE       0     0     0
        sdaa             ONLINE       0     0     0
        sdn              ONLINE       0     0     0
        sdv              ONLINE       0     0     0
        sdaj             ONLINE       0     0     0
        sdc              ONLINE       0     0     0
        sdar             ONLINE       0     0     0
        sdl              ONLINE       0     0     0
        sdt              ONLINE       0     0     0
        sdah             ONLINE       0     0     0
        sdap             ONLINE       0     0     0
        sdj              ONLINE       0     0     0
        sdr              ONLINE       0     0     0
        sdaf             ONLINE       0     0     0
        sdao             ONLINE       0     0     0
        sdh              ONLINE       0     0     0
        sdp              ONLINE       0     0     0
        sdad             ONLINE       0     0     0
    spares
      s0-draid2:3g:2s-0  AVAIL   
      s1-draid2:3g:2s-0  AVAIL   

errors: No known data errors

Yaxşı, yaddaşı sıraladıq, indi nə yedəkləyəcəyimiz barədə danışaq. Burada dərhal cəhd edə bildiyim üç həll yolu haqqında danışmaq istərdim və bunlar:

Benji Yedəkləmə - çəngəl Backy2, blok cihaz ehtiyat nüsxəsi üçün xüsusi həll, Ceph ilə sıx inteqrasiyaya malikdir. Ani görüntülər arasında fərqlər götürə və onlardan artan ehtiyat nüsxəsini yarada bilər. Həm yerli, həm də S3 daxil olmaqla çoxlu sayda saxlama arxa ucunu dəstəkləyir. Təkrarlanan hash cədvəlini saxlamaq üçün ayrıca verilənlər bazası tələb olunur. Minuslardan: python ilə yazılmışdır, bir az cavabsız bir cli var.

Borg Yedəkləmə - çəngəl Çardaq, çoxdan tanınan və sübut edilmiş ehtiyat aləti məlumatların ehtiyat nüsxəsini çıxara və yaxşıca təkmilləşdirə bilər. Həm yerli, həm də scp vasitəsilə uzaq serverə ehtiyat nüsxələrini saxlaya bilir. Bayraqla işə salındıqda cihazları bloklaya bilər --special, mənfi cəhətlərdən biri: ehtiyat nüsxə yaratarkən, depo tamamilə bloklanır, buna görə də hər bir virtual maşın üçün ayrıca bir depo yaratmaq tövsiyə olunur, prinsipcə bu problem deyil, xoşbəxtlikdən onlar çox asanlıqla yaradılır.

Restik aktiv şəkildə inkişaf edən layihədir, go rejimində yazılmışdır, kifayət qədər sürətlidir və yerli yaddaş, scp, S3 və sair daxil olmaqla çoxlu sayda saxlama arxa ucunu dəstəkləyir. Ayrı-ayrılıqda qeyd etmək istərdim ki, xüsusi yaradılmışdır istirahət serveri uzaqdan istifadə üçün yaddaşı tez ixrac etməyə imkan verən restic üçün. Yuxarıda göstərilənlərin hamısından ən çox xoşuma gəldi. stdin-dən ehtiyat nüsxə çıxara bilər. Onun demək olar ki, nəzərəçarpacaq çatışmazlıqları yoxdur, lakin bir neçə xüsusiyyət var:

  • Birincisi, mən onu bütün virtual maşınlar üçün (Benji kimi) ümumi depo rejimində istifadə etməyə çalışdım və hətta kifayət qədər yaxşı işlədi, lakin bərpa əməliyyatları çox uzun çəkdi, çünki... Hər dəfə bərpa etməzdən əvvəl restic bütün ehtiyat nüsxələrinin metadatasını oxumağa çalışır. Bu problem, borgda olduğu kimi, hər bir virtual maşın üçün ayrıca repozitoriya yaratmaqla asanlıqla həll edildi. Bu yanaşma ehtiyat nüsxələri idarə etmək üçün də çox təsirli olduğunu sübut etdi. Ayrı-ayrı depolar məlumatlara daxil olmaq üçün ayrıca parola malik ola bilər və qlobal repo-nun hər hansı bir şəkildə poza biləcəyindən qorxmaq lazım deyil. Borg ehtiyat nüsxəsində olduğu kimi asanlıqla yeni depolar yarada bilərsiniz.

    Hər halda, təkmilləşdirmə yalnız ehtiyat nüsxəsinin əvvəlki versiyasına nisbətən həyata keçirilir, əvvəlki ehtiyat nüsxə müəyyən edilmiş ehtiyat nüsxəsinin yolu ilə müəyyən edilir, buna görə də stdin-dən ümumi depoya müxtəlif obyektlərin ehtiyat nüsxəsini çıxarırsınızsa, onu göstərməyi unutmayın; seçim --stdin-filename, və ya hər dəfə seçimi açıq şəkildə göstərin --parent.

  • İkincisi, stdout-un bərpası paralel xarakterinə görə fayl sisteminin bərpasından daha uzun çəkir. Gələcəkdə blok qurğular üçün ehtiyat nüsxələri üçün daha yaxın dəstək əlavə etməyi planlaşdırırıq.

  • Üçüncüsü, hazırda istifadə etmək tövsiyə olunur master versiyası, çünki versiya 0.9.6 böyük faylların uzun bərpası ilə bir səhv var.

Ehtiyat nüsxənin effektivliyini və ehtiyat nüsxədən yazma/bərpa sürətini yoxlamaq üçün ayrıca bir repozitoriya yaratdım və virtual maşının kiçik bir görüntüsünü (21 GB) yedəkləməyə çalışdım. Təkrarlanan məlumatların nə qədər sürətli/yavaş kopyalandığını yoxlamaq üçün sadalanan həllərin hər birindən istifadə edərək, orijinalı dəyişdirmədən iki ehtiyat nüsxəsi həyata keçirildi.

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Gördüyümüz kimi, Borg Backup ən yaxşı ilkin ehtiyat səmərəlilik nisbətinə malikdir, lakin həm yazma, həm də bərpa sürəti baxımından aşağıdır.

Restic-in Benji Backup-dan daha sürətli olduğu ortaya çıxdı, lakin stdout-a bərpa etmək daha uzun çəkir və təəssüf ki, blok cihazına birbaşa necə yazacağını hələ bilmir.

Bütün müsbət və mənfi cəhətləri ölçdükdən sonra qərara gəldim istirahət с istirahət serveri ən rahat və perspektivli ehtiyat həlli kimi.

Pulsuz alətlərdən istifadə edərək minlərlə virtual maşın üçün ehtiyat yaddaş

Bu ekran görüntüsündə siz eyni vaxtda işləyən bir neçə ehtiyat əməliyyatı zamanı 10 giqabitlik kanalın necə tamamilə istifadə edildiyini görə bilərsiniz. Qeyd etmək lazımdır ki, disklərin təkrar emalı 30% -dən yuxarı qalxmır.

Aldığım həlldən çox məmnun oldum!

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster