Bosh sahifa Wiki Erasure coding

Erasure coding

Erasure coding — ma’lumotni bir nechta data bo‘lak va matematik parity bo‘laklarga aylantirib, ularning ayrimi yo‘qolganda asl ma’lumotni tiklash usuli. U taqsimlangan storage’da replikatsiyaga qaraganda kamroq sig‘im overheadi bilan disk yoki tugun nosozligiga chidamlilik beradi.

k+m modeli

Ko‘p tizimlarda sxema k+m ko‘rinishida ifodalanadi. k — asl data fragmentlari, m — parity fragmentlari. Masalan, 8+3 sxemada obyekt 8 data va 3 parity bo‘lakka kodlanadi; mos sharoitda istalgan 3 fragment yo‘qolsa ham data qolgan 8 fragmentdan tiklanadi.

Storage overhead (k+m)/k nisbatiga bog‘liq. 8+3 taxminan 1.375x joy talab qiladi, uch nusxali replication esa 3x. Biroq “uchta istalgan nosozlik” faqat fragmentlar mustaqil failure domainlarda to‘g‘ri joylashtirilgan bo‘lsa amal qiladi.

Kodlash prinsipi

Reed–Solomon kabi kodlar finite field arifmetikasidan foydalanib parity hosil qiladi. Oddiy RAID paritysidan farqli ravishda taqsimlangan tizim fragmentlarni turli disk, server, rack yoki sitega joylashtirishi mumkin. O‘qish uchun kamida k yetarli fragment kerak.

Coding va reconstruction CPU sarflaydi. Zamonaviy implementatsiyalar SIMD va hardware accelerationdan foydalanishi mumkin. Kichik obyektlarda metadata va fragment overheadi katta ko‘rinadi, shu sabab tizim small-object packing yoki boshqa storage class ishlatishi mumkin.

Yozish va o‘qish

Yangi katta obyekt to‘liq stripe’larga bo‘linib parallel yoziladi. Kichik tasodifiy update eski data/parityni o‘qib, qayta hisoblashni talab qilishi mumkin. Shu sabab erasure coding immutable object, archive va katta sequential workloadga ko‘proq mos; tez-tez o‘zgaradigan kichik blocklar uchun replication yoki boshqa sxema tanlanishi mumkin.

Normal o‘qishda data fragmentlar olinadi. Bir fragment mavjud bo‘lmasa degraded read qo‘shimcha fragmentlarni olib reconstruction qiladi, natijada latency va network yuk oshadi. Background repair yo‘qolgan fragmentni yangi qurilmada qayta yaratadi.

Failure domain va durability

Placement algorithm bir stripe fragmentlarini bitta disk yoki rackda to‘plamasligi kerak. m=3 bo‘lsa ham uch fragment bir xil rackda bo‘lib, rack uzilganda barchasi yo‘qolishi mumkin. Topologiya o‘zgarganda constraintlar qayta tekshiriladi.

Erasure coding backup emas. Operator xatosi, ransomware yoki application delete barcha fragmentlarning mantiqiy o‘chirilishiga olib kelishi mumkin. Versioning, immutability va mustaqil backup alohida himoya beradi.

Rebuild va ekspluatatsiya

Disk nosoz bo‘lganda replication sog‘lom nusxani oddiy ko‘chiradi; erasure-coded fragmentni tiklash uchun kamida k fragment o‘qilib, hisob bajariladi. Keng failure’da rebuild network va CPUga katta yuk beradi. Repair concurrency production latency bilan muvozanatlanadi.

Monitoring missing fragment, degraded stripe, repair backlog, checksum error, capacity va placement violationni kuzatadi. Scrub yashirin bit rotni checksum orqali topadi. Sxema tanlashda usable capacity bilan birga rebuild window, obyekt hajmi, write pattern, racklar soni va recovery SLO baholanadi.

Local reconstruction codes

Klassik Reed–Solomon’da bitta yo‘qolgan fragmentni tiklash uchun k ta fragment o‘qilishi mumkin. Local Reconstruction Code qo‘shimcha lokal parity guruhlari orqali ayrim odatiy bitta-fragment failure’ni kamroq data o‘qib tiklashni maqsad qiladi. Bu repair bandwidthni kamaytiradi, evaziga kod va storage overhead murakkablashadi. Tanlov faqat nominal durability bilan emas, clusterda tez-tez sodir bo‘ladigan failure va real repair trafik o‘lchovi bilan baholanadi.

Bog‘liq tushunchalar

Reed–Solomon code, Replication, Parity, Distributed storage, Failure domain, Data durability, Reconstruction, Bit rot