Replication یا erasure coding
در کتاب: فصل ۱۳
آزمایشگاه
Replication یا erasure coding
k، m و plugin را انتخاب کنید و ظرفیت قابلاستفاده، سربار، خرابیهای قابلتحمل و هزینهٔ بازسازی یک chunk را مقایسه کنید.
۷۶۸ TBظرفیت خام
۸failure domainها
EC isa k=4 m=2
- قابلاستفاده
- ۵۱۲ TB (۶۶٫۷٪)
- تا nearfull (۸۵٪)
- ۴۳۵٫۲ TB
- بایت خام به ازای هر بایت مفید
- ۱٫۵×
- از دست رفتن OSD/host بدون از دست رفتن داده
- ۲
- size / min_size
- ۶ / ۵
- از دست رفتن با ادامهٔ I/O
- ۱
- خواندن برای بازسازی یک chunk
- ۴ chunk
تکراری، size برابر ۳
- قابلاستفاده
- ۲۵۶ TB (۳۳٫۳٪)
- تا nearfull (۸۵٪)
- ۲۱۷٫۶ TB
- بایت خام به ازای هر بایت مفید
- ۳×
- از دست رفتن OSD/host بدون از دست رفتن داده
- ۲
- size / min_size
- ۳ / ۲
- از دست رفتن با ادامهٔ I/O
- ۱
- خواندن برای بازسازی یک chunk
- ۱ chunk
usable = raw × k / (k + m) · EC min_size = k + min(1, m − 1) = 5 · replicated min_size = size − ⌊size / 2⌋ = 2 · repair read = k
ceph osd erasure-code-profile set prof-4-2 plugin=isa k=4 m=2 crush-failure-domain=host
ceph osd pool create ecpool erasure prof-4-2
ceph osd pool set ecpool allow_ec_overwrites true # RBD, CephFSprofile پیشفرض در main برابر plugin=isa technique=reed_sol_van k=2 m=2 است؛ profile را پس از آنکه poolی از آن استفاده کرد نمیتوان تغییر داد.
مطابق با:
src/mon/OSDMonitor.cc :: prepare_pool_sizesize و min_size یک pool تازهsrc/common/options/global.yaml.in :: osd_pool_default_erasure_code_profile, mon_osd_nearfull_ratioprofile پیشفرض و نسبتهای پرشدگیsrc/erasure-code/lrc/ErasureCodeLrc.cc :: parse_kmlقاعدههای k، m و l در LRCsrc/erasure-code/clay/ErasureCodeClay.cc :: parseبازهٔ d در CLAYsrc/erasure-code/shec/ErasureCodeShec.cc :: parseقاعدهٔ c در SHECsrc/osd/OSDMap.cc :: pool_raw_used_rateفضای خام به ازای هر بایت (size یا (k+m)/k)