Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[Ceph Turning] – Tổng quan về osd_recovery_sleep và osd_recovery_sleep_hdd trong Ceph


1. Tổng quan

Hai tham số osd_recovery_sleeposd_recovery_sleep_hdd là cơ chế để giảm tải I/O khi OSD thực hiện recovery hoặc backfill. Cả hai đều chèn thời gian nghỉ tính bằng giây giữa mỗi operation sao chép dữ liệu, giúp hạn chế áp lực lên ổ đĩa, đặc biệt là HDD.

    +---------+    copy chunk 1   +---------+    sleep X giây   +---------+
    | client  |  ----------------> |   OSD   |  --------------> |   OSD   |
    +---------+                    +---------+                  +---------+

2. Cơ chế hoạt động

  • OSD xử lý từng op (chunk dữ liệu) liên tiếp trong quá trình recovery/backfill.
  • Nếu không có sleep → OSD liên tục gửi I/O → HDD chịu tải cao, queue dài, latency tăng → client bị chậm.
  • Tham số sleep yêu cầu OSD nghỉ một khoảng thời gian trước khi xử lý op tiếp theo, nhường I/O cho client.

3. Khác nhau giữa hai tham số

  • osd_recovery_sleep
  • Áp dụng cho tất cả OSD (HDD, SSD, NVMe).
  • osd_recovery_sleep_hdd
  • Chỉ áp dụng cho OSD mà Ceph nhận diện là HDD.
  • Hữu ích trong cluster hybrid (SSD + HDD) để SSD không bị bóp không cần thiết.

4. Phạm vi tác động

  • Recovery: Đồng bộ lại dữ liệu bị mất khi OSD down rồi quay lại.
  • Backfill: Di chuyển dữ liệu sang OSD mới hoặc khi rebalance.
  • Cả hai tham số đều tác động đến cả recovery và backfill.

5. Cách áp dụng tương đương sleep trong mClock

  • Đổi profile (nhanh nhất)
  • high_client_ops để ưu tiên I/O client, chấp nhận recovery chậm hơn.
  • high_recovery_ops để đẩy nhanh hồi phục ngoài giờ. Profile có sẵn bảng phân bổ reservation/weight/limit giữa client vs background. docs.ceph.com
  • Tự tinh chỉnh QoS (nâng cao)
  • Chuyển osd_mclock_profile=custom rồi đặt: osd_mclock_scheduler_background_recovery_lim osd_mclock_scheduler_background_recovery_res osd_mclock_scheduler_background_recovery_wgt
  • Giảm lim (mức trần) hoặc res (tối thiểu) để nhường đường cho client. docs.ceph.com
  • Kết hợp concurrency + chunk size
  • Bật osd_mclock_override_recovery_settings=true để tự điều khiển lại osd_max_backfills, osd_recovery_max_active*.
  • Giảm osd_recovery_max_chunk (ví dụ 1–2 MiB) để bớt burst mỗi op. docs.ceph.com

Sơ đồ quyết định:

[Đang dùng mClock?]--No--> Dùng WPQ + osd_recovery_sleep*
        |
       Yes
        |
   [Cần đổi nhanh?]--Yes--> Chọn profile mClock (high_client_ops / high_recovery_ops)
        |
       No
        v
  profile=custom + tinh chỉnh *_background_recovery_{res,lim,wgt}
   + (option) override_recovery_settings + giảm chunk

6. Ví dụ lệnh thực tế

Ưu tiên client giờ cao điểm (áp dụng tức thời, không restart OSD)

ceph config set osd osd_mclock_profile high_client_ops

Preset êm trên custom (giảm trần recovery ~20%)

ceph config set osd osd_mclock_profile custom
ceph config set osd osd_mclock_scheduler_background_recovery_lim 0.2
ceph config set osd osd_mclock_scheduler_background_recovery_res 0.02
ceph config set osd osd_recovery_max_chunk 1MiB

Lưu ý: *_res/lim/wgt chỉ chỉnh được khi custom, các built-in profile khóa các option này.

Khôi phục điều khiển concurrency như WPQ (chỉ khi thật cần)

ceph config set osd osd_mclock_override_recovery_settings true
ceph config set osd osd_max_backfills 1
ceph config set osd osd_recovery_max_active_hdd 1

7. Lời khuyên

  • Môi trường production nên giữ mClock và điều tiết bằng profile + QoS; chỉ quay về WPQ nếu có use-case đặc thù cần sleep. docs.ceph.com
  • Luôn xác thực capacity (IOPS/BW) trước khi tinh chỉnh tỷ lệ res/lim để tránh hạn mức dựa trên thông số ảo. Red Hat Documentation
  • Dùng preset: high_client_ops trong giờ cao điểm; high_recovery_ops ngoài giờ để rút ngắn thời gian mất redundancy. docs.ceph.com
  • Khi cần kiểm soát mạnh tay song song/backfill, bật osd_mclock_override_recovery_settings=true rồi đặt osd_max_backfills, osd_recovery_max_active*. docs.ceph.com

8. Tài liệu tham khảo

  • Ceph — mClock Config Reference (đặc biệt các mục Built-in Profiles Locked Options, Sleep Options, Override recovery settings) docs.ceph.com
  • Red Hat Ceph — mClock OSD scheduler + Appendix A: mClock configuration options (mô tả osd_mclock_profile, valid choices, áp dụng runtime) Red Hat Documentation+1
  • IBM Storage Ceph — mClock configuration options (tổng quan các option QoS) IBM

9. Kết luận

  • Các tham số sleep (osd_recovery_sleep*, osd_scrub/snaptrim_*_sleep) không còn tác dụng khi mClock chạy; mClock chủ động vô hiệu hóa để tự điều phối queue. docs.ceph.com
  • Để đạt hiệu ứng giãn nhịp tương đương trong mClock, hãy dùng profile hoặc tự đặt res/lim/wgt cho nhóm background recovery, kết hợp giảm chunk và (nếu cần) giới hạn concurrency với override_recovery_settings. docs.ceph.com
  • Thực hành khuyến nghị: đổi profile theo khung giờ, xác thực capacity chuẩn và chỉ dùng WPQ khi thật sự cần delay kiểu cứng. docs.ceph.comRed Hat Documentation