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

گام‌به‌گام peering و recovery

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

آزمایشگاه

گام‌به‌گام peering و recovery

سه داستان از یک PG با سه نسخه را گام‌به‌گام دنبال کنید و ماشین حالت PeeringState، مجموعه‌های up و acting و لاگ‌های PG را ببینید.

pg 1.7 · peering · epoch 45
up[0,1,2]
acting[0,1,2]

۶/۸ · merge_log ورودی واگرا را عقب می‌برد

merge_log می‌بیند که 40'4 در تاریخچهٔ معتبر نیست: rewind_divergent_log آن را کنار می‌گذارد و _merge_divergent_entries سرنوشت شیء را تعیین می‌کند. D پیش‌تر وجود نداشت، پس حذف می‌شود؛ E و B روی osd.0 در فهرست missing می‌روند.

مطابق با: PGLog::merge_log, rewind_divergent_log, _merge_divergent_entries

  1. Reset
  2. Started
  3. Primary
  4. Peering
  5. GetInfo
  6. GetLog
  7. GetMissing
  8. WaitUpThru
  9. WaitActingChange
  10. Active
  11. Activating
  12. WaitLocalRecoveryReserved
  13. WaitRemoteRecoveryReserved
  14. Recovering
  15. WaitLocalBackfillReserved
  16. WaitRemoteBackfillReserved
  17. Backfilling
  18. Recovered
  19. Clean
  20. ReplicaActive
  21. Stray
  22. ToDelete

osd.0 primary

last_update 41'5
  1. 5'1 A
  2. 5'2 B
  3. 5'3 C
  4. 41'4 E برای بازیابی
  5. 41'5 B برای بازیابی
missing: {E, B}
حذف‌شده در ادغام لاگ: D

osd.1 replica

last_update 41'5
  1. 5'1 A
  2. 5'2 B
  3. 5'3 C
  4. 41'4 E
  5. 41'5 B

osd.2 replica

last_update 41'5
  1. 5'1 A
  2. 5'2 B
  3. 5'3 C
  4. 41'4 E
  5. 41'5 B
آنچه تا این‌جا رخ داد
  1. e40 primary نوشتنی را لاگ می‌کند
  2. e41 osd.0 رفته است؛ osd.1 رهبری می‌کند
  3. e41 نوشتن‌های تازه در interval تازه
  4. e45 osd.0 به‌عنوان primary برمی‌گردد
  5. e45 لاگ osd.1 برنده است
  6. e45 merge_log ورودی واگرا را عقب می‌برد

مطابق با:

  • src/osd/PeeringState.h :: struct Started, Primary, Peering, GetInfo, GetLog, GetMissing, Active, … ماشین حالت و تودرتویی آن
  • src/osd/PeeringState.cc :: start_peering_interval, should_restart_peering, build_prior peering کی از نو شروع می‌شود و از کدام OSDهای گذشته باید پرسید
  • src/osd/PeeringState.cc :: find_best_info, choose_acting, calc_replicated_acting لاگ معتبر و مجموعهٔ acting
  • src/osd/PeeringState.cc :: proc_master_log, proc_replica_log, activate ادغام لاگ‌ها و active کردن replicaها
  • src/osd/PGLog.cc :: merge_log, rewind_divergent_log, _merge_divergent_entries, proc_replica_log ادغام و عقب بردن ورودی‌های واگرا
  • src/osd/PrimaryLogPG.cc :: start_recovery_ops, recover_primary, recover_replicas, recover_backfill بازیابی بر پایهٔ لاگ و backfill
تصویری ثابت از شبیه‌ساز؛ نسخهٔ تعاملی در آزمایشگاه نسخهٔ وب است. آزمایشگاه تعاملی: گام‌به‌گام peering و recovery