راهنمای جامع Ceph
Englishشروع کنید

نگاشت striping در RBD

در کتاب: فصل ۳۷

آزمایشگاه

نگاشت striping در RBD

اندازهٔ شیء، stripe_unit و stripe_count یک image و offset و طول یک I/O را تعیین کنید: ببینید به کدام شیءهای rbd_data و کجای آن‌ها دست می‌زند.

۲۵۶۰شیء در حالت پر
۴ MiBobject_size
۱۶ MiBاندازهٔ object set
۴شیءهایی که این I/O به آن‌ها دست می‌زند
blockno = ⌊off / su⌋ · stripeno = ⌊blockno / sc⌋ · stripepos = blockno % sc · objectsetno = ⌊stripeno / (os / su)⌋ · objectno = objectsetno × sc + stripepos · offset in object = (stripeno % (os / su)) × su + off % su
object set 0 · objects 0…3 · ۲ stripe در هر ردیف
0123
s0…
s2…
s4…
s6…
s8…
s10…
s12…
s14…
s16…
s18…
s20…
s22…
s24…
s26…
s28…
s30…
s32…
s34…
s36…
s38…
s40…
s42…
s44…
s46…
s48…
s50…
s52…
s54…
s56…
s58…
s60…
s62…
شیءoffset در شیءطولbuffer_extents
rbd_data.10226b8b4567.000000000000000026214465536[48576, 65536]
rbd_data.10226b8b4567.000000000000000126214465536[114112, 65536]
rbd_data.10226b8b4567.000000000000000226214465536[179648, 65536]
rbd_data.10226b8b4567.0000000000000003213568103392[0, 48576] [245184, 54816]
rbd create pool/img --size 10G --object-size ۴M --stripe-unit 64K --stripe-count 4

مطابق با:

  • src/osdc/Striper.cc :: Striper::file_to_extents از بازهٔ image تا extentهای شیء
  • Striper.cc :: get_num_objects, get_file_offset, object_truncate_size شمار شیءها و نگاشت وارون
  • src/librbd/ImageCtx.cc :: ImageCtx::init (format_string "%s.%016llx") نام شیء داده
  • src/include/rbd_types.h :: RBD_DATA_PREFIX "rbd_data." پیشوند نام
  • src/test/test_striper.cc :: the upstream test vectors used by tests/sims بردارهایی که آزمون‌ها با آن مقایسه می‌کنند
تصویری ثابت از شبیه‌ساز؛ نسخهٔ تعاملی در آزمایشگاه نسخهٔ وب است. آزمایشگاه تعاملی: نگاشت striping در RBD