فهرست مطالب
همهی بخشها، فصلها، پیوستها و فهرستهای کتاب با زمان تقریبی مطالعهی هر کدام.
آغاز
فصلها
- ۱Ceph: آغاز دورانی تازه — معماری، برنامهریزی و نخستین کلاستر۱-۱ پیش از شروع · ۱-۲ Ceph : آغاز دورانی تازه · ۱-۳ پایان دوران RAID · ۱-۴ معماری Ceph در یک نگاه · ۱-۵ برنامهریزی استقرار Ceph · ۱-۶ ساختن آزمایشگاه مجازی · ۱-۷ نصب و پیکربندی Ceph با cephadm · ۱-۸ بزرگ کردن کلاستر · ۱۱ ساعت و ۱۱ دقیقه
- ۲کار با Ceph Block Device (RBD)۲-۱ پیش از شروع · ۲-۲ RBD از درون · ۲-۳ پیکربندی کلاینت Ceph · ۲-۴ ساختن، map کردن و تغییر اندازه · ۲-۵ snapshot و clone · ۲-۶ بازیابی از سانحه با RBD mirroring · ۲-۷ از درون کد: چیدمان اشیای RBD ، object map و exclusive۵۰ دقیقه
- ۳Ceph و OpenStack۳-۱ پیش از شروع · ۳-۲ Ceph : بهترین همراه OpenStack · ۳-۳ راهاندازی OpenStack آزمایشی · ۳-۴ پیکربندی OpenStack بهعنوان کلاینت Ceph · ۳-۵ پیکربندی Glance با پشتوانهی Ceph · ۳-۶ پیکربندی Cinder · ۳-۷ پیکربندی Cinder Bac۵۶ دقیقه
- ۴ذخیرهسازی شیء با RADOS Gateway۴-۱ پیش از شروع · ۴-۲ آشنایی با ذخیرهسازی شیء در Ceph · ۴-۳ استقرار و پیکربندی RADOS Gateway · ۴-۴ کاربران، کلیدها و مستاجرها · ۴-۵ دسترسی با API سازگار با S3 · ۴-۶ دسترسی با API Swift · ۴-۷ یکپارچهسازی با OpenStack Ke۵۱ دقیقه
- ۵ذخیرهسازی شیء چندسایتی با RGW Multi-Site۵-۱ پیش از شروع · ۵-۲ مفاهیم multisite · ۵-۳ پیشنیازهای multisite · ۵-۴ پیکربندی multisite به روش دستی · ۵-۵ پیکربندی خودکار با ماژول rgw · ۵-۶ بررسی وضعیت همگامسازی · ۵-۷ آزمون همگامسازی کاربر، bucket و شیء · ۵-۸ از ۴۴ دقیقه
- ۶سامانهی فایل Ceph (CephFS)۶-۱ پیش از شروع · ۶-۲ CephFS و MDS · ۶-۳ دسترسی کلاینتها · ۶-۴ صدور با NFS و SMB · ۶-۵ از درون کد: capability ها، journal و dirfrag در MDS · ۶-۶ CephFS با عدد: نام شیءها، dirfrag ، تقسیم و شمارندهی محبوبیت · ۶-۷ subvol۴۴ دقیقه
- ۷راهبری و مدیریت کلاستر Ceph۷-۱ پیش از شروع · ۷-۲ مدیریت سرویسها · ۷-۳ پیکربندی · ۷-۴ بزرگ و کوچک کردن کلاستر · ۷-۵ تعویض دیسک خراب · ۷-۶ ارتقای نسخه · ۷-۷ ظرفیت و توازن · ۷-۸ از درون کد: MON ، Paxos و سرویسهای نقشه · ۷-۹ عملیات روزمره با عدد: do۴۳ دقیقه
- ۸Ceph از درون: CRUSH، نقشهها، احراز هویت و PGها۸-۱ پیش از شروع · ۸-۲ مقیاسپذیری بدون جدول مرکزی · ۸-۳ سازوکار CRUSH · ۸-۴ tunable ها · ۸-۵ نقشههای کلاستر و MON ها · ۸-۶ از درون کد: جایگذاری، احراز هویت و پیامرسانی · ۸-۷ جابهجایی داده با عدد: افزودن میزبان و تغیی۴۹ دقیقه
- ۹از VSM تا Ceph Dashboard: مدیریت گرافیکی کلاستر۹-۱ پیش از شروع · ۹-۲ تاریخچه: از ابزارهای جدا تا Dashboard · ۹-۳ معماری Ceph Dashboard · ۹-۴ فعالسازی و امنیت · ۹-۵ کاربران، نقشها و SSO · ۹-۶ Tentacle: mgmt-gateway و oauth2-proxy · ۹-۷ کار روزمره با Dashboard · ۹-۸ ۴۱ دقیقه
- ۱۰سنجش کارایی و ابزارهای کارشناسی Ceph۱۰-۱ پیش از شروع · ۱۰-۲ روش سنجش لایهای · ۱۰-۳ خط پایهی سختافزار · ۱۰-۴ سنجش RADOS · ۱۰-۵ سنجش RBD · ۱۰-۶ جعبهابزار اپراتور · ۱۰-۷ سنجش RGW و CephFS · ۱۰-۸ گزارش بنچمارک · ۱۰-۹ از درون کد: osd bench ، rados bench و س۳۹ دقیقه
- ۱۱استقرار Ceph: آزمایشگاه، cephadm، Ansible و Rook۱۱-۱ پیش از شروع · ۱۱-۲ آزمایشگاه تکرارپذیر · ۱۱-۳ سیر ابزارهای استقرار · ۱۱-۴ استقرار اعلانی با cephadm · ۱۱-۵ Ansible در کنار cephadm · ۱۱-۶ از آزمایشگاه به production · ۱۱-۷ از درون کد: حلقهی serve در cephadm و spec ۴۶ دقیقه
- ۱۲BlueStore: موتور ذخیرهسازی OSD۱۲-۱ پیش از شروع · ۱۲-۲ چرا BlueStore ؟ · ۱۲-۳ BlueStore چطور کار میکند؟ · ۱۲-۴ استفاده از BlueStore · ۱۲-۵ مهاجرت و نگهداری OSD ها · ۱۲-۶ BlueStore با عدد: آزمون پذیرش فشردهسازی، اثر min_alloc_size و اندازهی سطحهای ۴۰ دقیقه
- ۱۳کدگذاری پاکشونده (Erasure Coding) برای بهرهوری ذخیرهسازی۱۳-۱ پیش از شروع · ۱۳-۲ EC چیست؟ · ۱۳-۳ EC درون Ceph · ۱۳-۴ افزونهها و پروفایلها · ۱۳-۵ کجا EC و کجا تکثیر؟ · ۱۳-۶ FastEC در Tentacle · ۱۳-۷ عیبیابی: خطای ۲۱۴۷۴۸۳۶۴۷ · ۱۳-۸ درون backend مربوط به EC : نوشتن، rollback و۴۱ دقیقه
- ۱۴برنامهنویسی با librados۱۴-۱ پیش از شروع · ۱۴-۲ librados چیست؟ · ۱۴-۳ شروع کار · ۱۴-۴ عملیات اتمی · ۱۴-۵ watch و notify · ۱۴-۶ زیر librados : پیام MOSDOp ، session و backoff · ۱۴-۷ backoff: OSD میگوید «صبر کن» · ۱۴-۸ SplitOp (فقط main ) · ۱۴-۹۳۸ دقیقه
- ۱۵کلاسهای RADOS: محاسبه در کنار داده۱۵-۱ پیش از شروع · ۱۵-۲ مفهوم: محاسبه در کنار داده · ۱۵-۳ فراخوانی کلاس از کلاینت · ۱۵-۴ نوشتن کلاس خودمان · ۱۵-۵ cls_lua : اسکریپت درون OSD · ۱۵-۶ سه الگوریتم از مسیر کلاسها · ۱۵-۷ کلاسها روی کلاستر واقعی: درستی و هزی۴۰ دقیقه
- ۱۶لایهبندی ذخیرهسازی: از Cache Tiering تا Device Class و Storage Class۱۶-۱ پیش از شروع · ۱۶-۲ Cache Tiering : معماری · ۱۶-۳ از درون کد: عامل کش · ۱۶-۴ مهاجرت: حذف بیخطر cache tier · ۱۶-۵ لایهبندی در سطح بایت: storage class در RGW و lifecycle · ۱۶-۶ لایهبندی با عدد: شش الگوریتم از کد · ۱۴۴ دقیقه
- ۱۷عیبیابی Ceph: از HEALTH_WARN تا ماشین حالت Peering۱۷-۱ پیش از شروع · ۱۷-۲ روش عیبیابی · ۱۷-۳ مشکلات MON · ۱۷-۴ مشکلات OSD · ۱۷-۵ وضعیتهای PG · ۱۷-۶ از درون کد: ماشین حالت Peering · ۱۷-۷ سه الگوریتم عیبیابی با عدد · ۱۷-۸ عیبیابی با دادهی اندازهگیریشده · ۱۷-۹ slow ۳۹ دقیقه
- ۱۸بازیابی از فاجعه: rbd-mirror، stretch mode و نجات کلاستر۱۸-۱ پیش از شروع · ۱۸-۲ لایههای دفاعی · ۱۸-۳ rbd-mirror · ۱۸-۴ از درون کد: rbd-mirror · ۱۸-۵ لایهی پایینتر: journal روی RADOS و ماشین حالت stretch · ۱۸-۶ بازیابی از فاجعه با عدد: امتیاز اتصال MON ها، انتخابات connecti۴۰ دقیقه
- ۱۹راهبری و نگهداری روزمره: ارتقا، جایگزینی دیسک، autoscaler و balancer۱۹-۱ پیش از شروع · ۱۹-۲ ارتقای نسخه · ۱۹-۳ جایگزینی دیسک · ۱۹-۴ نگهداری و حذف میزبان · ۱۹-۵ از درون کد: pg_autoscaler · ۱۹-۶ از درون کد: balancer · ۱۹-۷ سه الگوریتم نگهداری با عدد · ۱۹-۸ balancer و split با نگاشت واقعی۳۵ دقیقه
- ۲۰پایش Ceph: Prometheus، ceph-exporter، هشدارها و مشاهدهپذیری۲۰-۱ پیش از شروع · ۲۰-۲ معماری پشتهی پایش · ۲۰-۳ از درون کد: perf counters · ۲۰-۴ سیگنالهای کلیدی · ۲۰-۵ طراحی قواعد هشدار · ۲۰-۶ لایهی پایینتر: از متغیر atomic تا سطر / metrics · ۲۰-۷ پایش با عدد: هیستوگرام، cache و۴۲ دقیقه
- ۲۱تنظیم کارایی Ceph: از mClock تا هسته و شبکه۲۱-۱ پیش از شروع · ۲۱-۲ روش و لایهها · ۲۱-۳ از درون کد: شاردها و thread ها · ۲۱-۴ از درون کد: mClock · ۲۱-۵ حافظهی OSD · ۲۱-۶ لایهی پایینتر: حلقهی کنترل حافظه و throttle در BlueStore · ۲۱-۷ تنظیم کارایی با عدد: شارد۴۳ دقیقه
- ۲۲معماری کد Ceph و مسیر درخواستها از درون۲۲-۱ نقشهی مخزن · ۲۲-۲ ساخت و محیط توسعه · ۲۲-۳ کلاسها و روابط اصلی · ۲۲-۴ مدل thread · ۲۲-۵ encoding و سازگاری نسخهها · ۲۲-۶ خواندن و اشکالزدایی کد در عمل · ۲۲-۷ مسیر کامل یک نوشتن RADOS ، تابع به تابع · ۲۲-۸ داخل B۳۰ دقیقه
- بخش سوم: لایههای پایینی (فصلهای ۲۳ تا ۳۳)
- ۲۳لایههای پایینی (۱): دستگاه بلوکی، bufferlist، mempool و crc32c۲۳-۱ جایگاه این بخش · ۲۳-۲ KernelDevice : پنجرهی BlueStore به دیسک · ۲۳-۳ bufferlist : ساختار دادهی اصلی Ceph · ۲۳-۴ mempool : حسابداری حافظه · ۲۳-۵ crc32c : از دستور CPU تا checksum بلوک · ۲۳-۶ libaio و io_uring در سط۳۶ دقیقه
- ۲۴لایههای پایینی (۲): قالب رویدیسک BlueStore و BlueFS۲۴-۱ مقدمه: BlueStore روی دیسک چه مینویسد؟ · ۲۴-۲ label دستگاه: bluestore_bdev_label_t · ۲۴-۳ کدگذاریهای فشرده: varint ، lowz و lba · ۲۴-۴ BlueFS : فایلسیستمی برای RocksDB · ۲۴-۵ نقشهی کامل پیشوندهای KV · ۲۴-۶ onode ۴۶ دقیقه
- ۲۵لایههای پایینی (۳): RocksDB درون BlueStore۲۵-۱ مقدمه: چرا RocksDB ؟ · ۲۵-۲ از تراکنش BlueStore تا WriteBatch · ۲۵-۳ WAL : قالب رکورد · ۲۵-۴ memtable و flush · ۲۵-۵ SST : قالب فایل · ۲۵-۶ compaction و سطوح · ۲۵-۷ column family sharding · ۲۵-۸ tuning و تشخیص · ۲۵-۳۸ دقیقه
- ۲۶لایههای پایینی (۴): msgr2 در سطح بایت، AsyncConnection و EventCenter۲۶-۱ مقدمه: سیم بین دو daemon · ۲۶-۲ banner و مذاکرهی ویژگی · ۲۶-۳ frame در سطح بایت · ۲۶-۴ حالت secure: AES-128-GCM روی سیم · ۲۶-۵ جلسه، بازاتصال و reset · ۲۶-۶ AsyncMessenger ، Worker و EventCenter · ۲۶-۷ حساب دقیق ان۳۴ دقیقه
- ۲۷لایههای پایینی (۵): ریاضیات erasure coding، از GF(۲⁸) تا FastEC۲۷-۱ مقدمه: از XOR تا Reed-Solomon · ۲۷-۲ GF (۲⁸): حساب بایتها · ۲۷-۳ Reed-Solomon سیستماتیک · ۲۷-۴ stripe ، chunk و چیدمان روی OSD · ۲۷-۵ read-modify-write در EC قدیمی · ۲۷-۶ کدهای با پهنای باند ترمیم کمتر · ۲۷-۷ crc و۴۴ دقیقه
- ۲۸لایههای پایینی (۶): CRUSH در سطح بیت، از rjenkins تا upmap۲۸-۱ مقدمه: CRUSH چگونه «حساب» میکند؟ · ۲۸-۲ از نام شیء تا x · ۲۸-۳ straw2 : قرعهکشی نمایی · ۲۸-۴ crush_do_rule گامبهگام · ۲۸-۵ choose_args ، weight-set و upmap · ۲۸-۶ is_out و reweight : یک مثال عددی · ۲۸-۷ device c۴۳ دقیقه
- ۲۹لایههای پایینی (۷): کلاینتهای هستهی لینوکس، libceph، krbd و ceph.ko۲۹-۱ مقدمه: Ceph درون هسته · ۲۹-۲ libceph : ساختار · ۲۹-۳ krbd : از blk-mq تا شیء · ۲۹-۴ krbd در عمل · ۲۹-۵ ceph.ko و caps · ۲۹-۶ هسته در برابر فضای کاربر · ۲۹-۷ لایهی پایینتر: از آفست فایل تا OSD در هسته · ۲۹-۸ الگوری۳۹ دقیقه
- ۳۰لایههای پایینی (۸): Crimson و Seastar، OSD تکهستهای و SeaStore۳۰-۱ مقدمه: چرا یک OSD تازه؟ · ۳۰-۲ Seastar: future ، continuation و reactor · ۳۰-۳ الگوریتم نگاشت PG به هسته · ۳۰-۴ pipeline عملیات · ۳۰-۵ پشتیبانهای ذخیرهسازی در Crimson · ۳۰-۶ SeaStore : معماری · ۳۰-۷ GC سگمنتها: ا۳۰ دقیقه
- ۳۱لایههای پایینی (۹): SPDK و NVMe، از صفهای سختافزاری تا درگاه NVMe-oF۳۱-۱ چرا این فصل؟ · ۳۱-۲ NVMe از نگاه درایور · ۳۱-۳ NVMEDevice: SPDK در BlueStore ، تابع به تابع · ۳۱-۴ درگاه NVMe-oF · ۳۱-۵ فرمانهای عملی · ۳۱-۶ تکمیلی و بهروز · ۳۱-۷ تمرین عملی · ۳۱-۸ پرسشهای مرور · ۳۱-۹ منابع این ف۳۳ دقیقه
- ۳۲لایههای پایینی (۱۰): scrub، recovery، backfill و repair در سطح کد۳۲-۱ نقشهی فصل · ۳۲-۲ زمانبندی scrub · ۳۲-۳ ماشین حالت scrub · ۳۲-۴ recovery و backfill · ۳۲-۵ repair · ۳۲-۶ فرمانها و اشکالزدایی · ۳۲-۷ تکمیلی و بهروز · ۳۲-۸ تمرین عملی · ۳۲-۹ پرسشهای مرور · ۳۲-۱۰ منابع این فصل۳۱ دقیقه
- ۳۳لایههای پایینی (۱۱): حافظه و CPU درون OSD، از mempool تا NUMA و پروفایلگیری۳۳-۱ چرا حافظه و CPU ؟ · ۳۳-۲ thread های یک OSD کلاسیک · ۳۳-۳ mempool : حسابداری بدون قفل · ۳۳-۴ tcmalloc و حافظهی «نگاشتهشده» · ۳۳-۵ PriorityCache : تقسیم بودجهی حافظه · ۳۳-۶ NUMA · ۳۳-۷ پروفایلگیری · ۳۳-۸ mempool ۳۰ دقیقه
- بخش چهارم: بخش تخصصی RADOS، RBD و RGW (فصلهای ۳۴ تا ۴۲)
- ۳۴بخش تخصصی (۱): RADOS — هویت شیء، فراداده و مسیر op درون OSD۳۴-۱ پیش از شروع · ۳۴-۲ هویت یک شیء RADOS · ۳۴-۳ فرادادهی هر شیء · ۳۴-۴ صفبندی op: shard و thread · ۳۴-۵ دروازههای do_op · ۳۴-۶ اجرای op و شمارهگذاری نسخه · ۳۴-۷ pg log و pg info روی دیسک · ۳۴-۸ دستورها و ابزارها · ۳۳۰ دقیقه
- ۳۵بخش تخصصی (۲): RADOS — pg log، intervalها، missing و سازوکار recovery و backfill۳۵-۱ پیش از شروع · ۳۵-۲ info و history یک PG · ۳۵-۳ past intervals و prior set · ۳۵-۴ ادغام log · ۳۵-۵ طول log و trim · ۳۵-۶ recovery و backfill در عمل · ۳۵-۷ دستورها و عیبیابی · ۳۵-۸ تکمیلی و بهروز · ۳۵-۹ تمرین عملی ·۲۸ دقیقه
- ۳۶بخش تخصصی (۳): RADOS — snapshot و clone، watch/notify و cls در سمت OSD، و مرجع rados و pool۳۶-۱ پیش از شروع · ۳۶-۲ دو نوع snapshot · ۳۶-۳ SnapSet و clone · ۳۶-۴ snaptrim و SnapMapper · ۳۶-۵ watch و notify در OSD · ۳۶-۶ فراخوانی cls در سمت OSD · ۳۶-۷ مرجع rados · ۳۶-۸ مرجع ceph osd pool · ۳۶-۹ تنظیم و عیبیابی ۲۶ دقیقه
- ۳۷بخش تخصصی (۴): RBD — چیدمان روی RADOS، striping، object map و fast-diff، و مرجع rbd۳۷-۱ پیش از شروع · ۳۷-۲ اشیای یک image · ۳۷-۳ striping · ۳۷-۴ object map · ۳۷-۵ مرجع rbd · ۳۷-۶ تنظیم و عیبیابی · ۳۷-۷ تکمیلی و بهروز · ۳۷-۸ تمرین عملی · ۳۷-۹ پرسشهای مرور · ۳۷-۱۰ منابع این فصل۲۵ دقیقه
- ۳۸بخش تخصصی (۵): RBD — مسیر I/O در librbd، layering و copyup، exclusive-lock، cache و QoS۳۸-۱ پیش از شروع · ۳۸-۲ لایههای dispatch · ۳۸-۳ layering: clone ، copyup و flatten · ۳۸-۴ exclusive-lock · ۳۸-۵ cache · ۳۸-۶ QoS · ۳۸-۷ krbd ، librbd و rbd-nbd · ۳۸-۸ تنظیم و عیبیابی · ۳۸-۹ تکمیلی و بهروز · ۳۸-۱۰ تمری۲۲ دقیقه
- ۳۹بخش تخصصی (۶): RBD — درون rbd-mirror: journal در برابر snapshot۳۹-۱ پیش از شروع · ۳۹-۲ journal روی RADOS · ۳۹-۳ replay در حالت journal · ۳۹-۴ حالت snapshot · ۳۹-۵ daemon ها: leader ، instance و تقسیم image ها · ۳۹-۶ مرجع دستورها · ۳۹-۷ تنظیم و عیبیابی · ۳۹-۸ تکمیلی و بهروز · ۳۹-۹ ۲۰ دقیقه
- ۴۰بخش تخصصی (۷): RGW — مدل داده روی RADOS: فراداده، bucket index، نسخهبندی، manifest و multipart۴۰-۱ پیش از شروع · ۴۰-۲ فراداده: pool ها و namespace ها · ۴۰-۳ bucket index · ۴۰-۴ نسخهبندی و OLH · ۴۰-۵ manifest ، placement و storage class · ۴۰-۶ multipart · ۴۰-۷ مرجع radosgw-admin · ۴۰-۸ تنظیم و عیبیابی · ۴۰-۹ تکم۲۳ دقیقه
- ۴۱بخش تخصصی (۸): RGW — مسیر درخواست، SigV4، سهمیه، محدودیت نرخ، gc و lifecycle۴۱-۱ پیش از شروع · ۴۱-۲ از سوکت تا op · ۴۱-۳ امضای SigV4 · ۴۱-۴ PUT و GET در حرکت · ۴۱-۵ سهمیه · ۴۱-۶ محدودیت نرخ · ۴۱-۷ garbage collection · ۴۱-۸ lifecycle · ۴۱-۹ دستورها با کلاینتهای S3 · ۴۱-۱۰ تنظیم و عیبیابی · ۴۱-۱۱۹ دقیقه
- ۴۲بخش تخصصی (۹): RGW — درون multisite: period، قالب لاگها، نسلهای bucket و موتور همگامسازی۴۲-۱ پیش از شروع · ۴۲-۲ period و commit · ۴۲-۳ قالب رکوردهای لاگ · ۴۲-۴ وضعیت همگامسازی روی RADOS · ۴۲-۵ موتور همگامسازی داده · ۴۲-۶ همگامسازی فراداده · ۴۲-۷ مرجع دستورهای multisite · ۴۲-۸ تنظیم و عیبیابی · ۴۲-۹ تکمی۲۰ دقیقه
پیوستها
- الفواژهنامه۱۶ دقیقه
- ببرگهی تقلب دستورها۴۵ دقیقه
- جراهنمای عیبیابی۴ دقیقه
- دجدول نسخهها۱ دقیقه
- هپاسخ پرسشها۱ ساعت و ۵۶ دقیقه
- وکتابنامه۲۲ دقیقه
- زفهرست الگوریتمها۲۰ دقیقه
- حتغییرات نسخهها۱۰ دقیقه