Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Salom, men yaqinda qiziqarli muammoga duch keldim: ko'p sonli blokli qurilmalarni zaxiralash uchun saqlashni sozlash.

Biz har hafta bulutimizdagi barcha virtual mashinalarning zaxira nusxasini yaratamiz, shuning uchun biz minglab zaxira nusxalarini saqlab turishimiz va buni imkon qadar tez va samarali bajarishimiz kerak.

Afsuski, standart konfiguratsiyalar RAID5, RAID6 bu holda biz bunga ruxsat bermaymiz, chunki bizniki kabi katta disklarda tiklash jarayoni juda uzoq davom etadi va hech qachon tugamaydi.

Keling, qanday alternativalar mavjudligini ko'rib chiqaylik:

Kodlashni o'chirish — RAID5, RAID6 ga o'xshash, lekin sozlanishi mumkin bo'lgan paritet darajasi bilan. Bunda rezervlash blok bo'yicha emas, balki har bir ob'ekt uchun alohida amalga oshiriladi. Kodlashni o'chirishni sinab ko'rishning eng oson yo'li kengaytirishdir kichik.

DRAID hozirda chiqarilmagan ZFS xususiyatidir. RAIDZ-dan farqli o'laroq, DRAID taqsimlangan paritet blokiga ega va qayta tiklash vaqtida massivning barcha disklarini bir vaqtning o'zida ishlatadi, bu esa diskdagi nosozliklardan omon qolish va nosozlikdan keyin tezroq tiklanish imkonini beradi.

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Server mavjud Fujitsu Primergy RX300 S7 protsessor bilan Intel Xeon CPU E5-2650L 0 @ 1.80 gigagertsli, to'qqiz tayoq operativ xotira Samsung DDR3-1333 8Gb PC3L-10600R ECC roʻyxatdan oʻtgan (M393B1K70DH0-YH9), disk tokchasi Supermicro SuperChassis 847E26-RJBOD1, orqali ulanadi Ikki tomonlama LSI SAS2X36 kengaytirgich va 45 ta disk Seagage ST6000NM0115-1YZ110 haqida 6TB hamma.

Biror narsaga qaror qilishdan oldin, biz hamma narsani to'g'ri sinab ko'rishimiz kerak.

Buning uchun men turli xil konfiguratsiyalarni tayyorladim va sinab ko'rdim. Buni amalga oshirish uchun men minio-dan foydalandim, u S3 backend vazifasini bajaradi va uni turli xil sonli maqsadlar bilan turli rejimlarda ishga tushirdi.

Asosan, minio korpusi bir xil miqdordagi disklar va disklar pariteti bilan o'chirish kodlash va dasturiy ta'minot reydlarida sinovdan o'tkazildi va ular: RAID6, RAIDZ2 va DRAID2.

Ma'lumot uchun: minio-ni faqat bitta maqsad bilan ishga tushirganingizda, minio S3 shlyuz rejimida ishlaydi va mahalliy fayl tizimingizni S3 xotirasi shaklida taqdim etadi. Agar siz bir nechta maqsadlarni ko'rsatgan holda minio-ni ishga tushirsangiz, O'chirish kodlash rejimi avtomatik ravishda yoqiladi, bu esa xatolarga chidamlilikni ta'minlagan holda maqsadlaringiz o'rtasida ma'lumotlarni tarqatadi.

Odatiy bo'lib, minio maqsadlarni 16 diskdan iborat guruhlarga ajratadi, har bir guruhda 2 ta paritet mavjud. Bular. Ikki disk bir vaqtning o'zida ma'lumotlarni yo'qotmasdan ishlamay qolishi mumkin.

Ishlashni sinab ko'rish uchun men har biri 16 TB bo'lgan 6 ta diskdan foydalandim va ularga 1 MB hajmdagi kichik ob'ektlarni yozdim, bu bizning kelajakdagi yukimizni eng aniq tasvirlab berdi, chunki barcha zamonaviy zaxira vositalari ma'lumotlarni bir necha megabaytlik bloklarga ajratadi va shu tarzda yozadi.

Sinovni o'tkazish uchun biz masofaviy serverda ishga tushirilgan s3bench yordam dasturidan foydalandik va o'n minglab bunday ob'ektlarni yuzlab iplardagi minio-ga yubordik. Shundan so'ng men ularni xuddi shu tarzda qaytarishga harakat qildim.

Benchmark natijalari quyidagi jadvalda keltirilgan:

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Ko'rib turganimizdek, minio o'zining o'chirish kodlash rejimida bir xil konfiguratsiyada RAID6, RAIDZ2 va DRAID2 dasturlari ustida ishlaydigan minio-ga qaraganda yozishda sezilarli darajada yomon ishlaydi.

Alohida men deb so'radi ext4 va XFS da minioni sinab ko'ring. Ajablanarlisi shundaki, mening ish yukim turi uchun XFS ext4 ga qaraganda ancha sekinroq bo'lib chiqdi.

Sinovlarning birinchi partiyasida Mdadm ZFSdan ustunligini ko'rsatdi, ammo keyinroq gmelikov taklif qildiquyidagi parametrlarni oʻrnatish orqali ZFS unumdorligini oshirishingiz mumkin:

xattr=sa atime=off recordsize=1M

va shundan keyin ZFS bilan testlar ancha yaxshilandi.

Shuni ham ta'kidlashingiz mumkinki, DRAID RAIDZga nisbatan unchalik ko'p samaradorlikni ta'minlamaydi, ammo nazariy jihatdan u ancha xavfsizroq bo'lishi kerak.

Oxirgi ikkita testda men metadata (maxsus) va ZIL (log)ni SSD-dan oynaga o'tkazishga harakat qildim. Ammo metama'lumotlarni olib tashlash yozib olish tezligida katta foyda keltirmadi va ZILni olib tashlashda mening SSDSC2KI128G8 100% foydalanish bilan shiftga uring, shuning uchun men bu testni muvaffaqiyatsiz deb hisoblayman. Agar menda tezroq SSD disklari bo'lsa, bu mening natijalarimni sezilarli darajada yaxshilashi mumkinligini istisno qilmayman, lekin afsuski, menda ular yo'q edi.

Oxir-oqibat, men DRAID-dan foydalanishga qaror qildim va uning beta holatiga qaramay, bu bizning holatlarimizda eng tez va eng samarali saqlash yechimidir.

Men oddiy DRAID2 ni uchta guruh va ikkita taqsimlangan zaxiradan iborat konfiguratsiyada yaratdim:

# 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

OK, biz xotirani saralab oldik, endi nima zaxiralashimiz haqida gaplashaylik. Bu erda men sinab ko'rgan uchta echim haqida darhol gaplashmoqchiman va bular:

Benji Zaxira - vilka Backy2, blokli qurilmalarni zaxiralash uchun maxsus yechim Ceph bilan qattiq integratsiyaga ega. Snapshotlar orasidagi farqlarni olishi va ulardan qo'shimcha zaxira yaratishi mumkin. Mahalliy va S3, jumladan, ko'p sonli saqlash tizimlarini qo'llab-quvvatlaydi. Deuplikatsiya xesh jadvalini saqlash uchun alohida ma'lumotlar bazasini talab qiladi. Kamchiliklari: python tilida yozilgan, biroz javob bermaydigan cli.

Borg zaxira nusxasi - vilka Boloxona, uzoq vaqtdan beri ma'lum bo'lgan va tasdiqlangan zaxiralash vositasi, ma'lumotlarni zaxiralashi va ularni yaxshi nusxalashi mumkin. Zaxira nusxalarini ham mahalliy, ham scp orqali uzoq serverga saqlashga qodir. Agar bayroq bilan ishga tushirilsa, qurilmalarni blokirovka qilishi mumkin --special, minuslardan biri: zaxira nusxasini yaratishda ombor butunlay bloklanadi, shuning uchun har bir virtual mashina uchun alohida omborni yaratish tavsiya etiladi, printsipial jihatdan bu muammo emas, xayriyatki, ular juda oson yaratiladi.

Restik bu faol rivojlanayotgan loyiha bo'lib, go'da yozilgan, juda tez va ko'p sonli saqlash orqa tomonlarini, jumladan mahalliy saqlash, scp, S3 va boshqalarni qo'llab-quvvatlaydi. Alohida ta'kidlashni istardimki, maxsus yaratilgan dam olish serveri restic uchun, bu sizga masofadan foydalanish uchun xotirani tezda eksport qilish imkonini beradi. Yuqorida aytilganlarning barchasidan menga eng ko'p yoqdi. Stdin-dan zaxira nusxasini yaratish mumkin. Uning deyarli sezilarli kamchiliklari yo'q, lekin bir nechta xususiyatlar mavjud:

  • Birinchidan, men uni barcha virtual mashinalar (masalan, Benji) uchun umumiy ombor rejimida ishlatishga harakat qildim va u hatto juda yaxshi ishladi, lekin tiklash operatsiyalari juda uzoq davom etdi, chunki... Har safar tiklashdan oldin restic barcha zahira nusxalarining metama'lumotlarini o'qishga harakat qiladi. Bu muammo, borgda bo'lgani kabi, har bir virtual mashina uchun alohida ombor yaratish orqali osonlikcha hal qilindi. Ushbu yondashuv zaxira nusxalarini boshqarish uchun ham juda samarali ekanligini isbotladi. Alohida omborlar ma'lumotlarga kirish uchun alohida parolga ega bo'lishi mumkin va biz global repo qandaydir tarzda buzilishidan qo'rqmasligimiz kerak. Siz borg zahiradagi kabi osonlik bilan yangi omborlarni yaratishingiz mumkin.

    Qanday bo'lmasin, nusxa ko'chirish faqat zaxira nusxasining oldingi versiyasiga nisbatan amalga oshiriladi; oldingi zaxira nusxasi ko'rsatilgan zaxira uchun yo'l bilan belgilanadi, shuning uchun agar siz stdin-dan umumiy omborga turli xil ob'ektlarni zaxira qilsangiz, uni belgilashni unutmang. variant --stdin-filename, yoki har safar variantni aniq belgilang --parent.

  • Ikkinchidan, stdout-ni tiklash fayl tizimini tiklashdan ko'ra ko'proq vaqt talab etadi, chunki uning parallel tabiati. Kelajakda biz blokli qurilmalar uchun zaxira nusxalarini yanada yaqinroq qo'shishni rejalashtirmoqdamiz.

  • Uchinchidan, hozirda foydalanish tavsiya etiladi masterdan versiya, chunki 0.9.6 versiyasida katta hajmdagi fayllarni uzoq vaqt tiklash bilan bog'liq xato mavjud.

Zaxiralash samaradorligini va zaxiradan yozish/tiklash tezligini tekshirish uchun men alohida ombor yaratdim va virtual mashinaning kichik tasvirini (21 GB) zaxiralashga harakat qildim. Ikkita zahira nusxasi asl nusxasini o'zgartirmasdan amalga oshirildi, sanab o'tilgan echimlarning har biridan foydalanib, nusxalangan ma'lumotlar qanchalik tez/sekin nusxalanganligini tekshirish.

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Ko'rib turganimizdek, Borg Backup eng yaxshi dastlabki zahira samaradorligi nisbatiga ega, lekin yozish va tiklash tezligi jihatidan pastroq.

Restic Benji Backup-ga qaraganda tezroq bo'lib chiqdi, ammo stdout-ga qayta tiklash ko'proq vaqt talab etadi va afsuski, u to'g'ridan-to'g'ri blok qurilmasiga qanday yozishni hali bilmaydi.

Barcha ijobiy va salbiy tomonlarini ko'rib chiqqandan so'ng, men qaror qildim dam olish с dam olish serveri eng qulay va istiqbolli zaxira yechim sifatida.

Bepul vositalardan foydalangan holda minglab virtual mashinalar uchun zaxira saqlash

Ushbu skrinshotda siz bir vaqtning o'zida bir nechta zaxira operatsiyalari paytida 10 gigabitli kanal qanday to'liq ishlatilishini ko'rishingiz mumkin. Shunisi e'tiborga loyiqki, diskni qayta ishlash 30% dan oshmaydi.

Men qabul qilingan yechimdan mamnun bo'ldim!

Manba: www.habr.com

a Izoh qo'shish