ceph 數據一致性檢查(scrub)


Ceph為了保障數據高可用一般來說同一份數據會存儲3份,那么數據在寫入的時候就會存在數據同步的問題。Ceph也是提供了對應的工具可以周期性的進行數據一致性檢查。一般來說有以下兩種檢查方式:
  1)輕量級主要是檢查object數量、object源數據(object metadata)信息是否一致(文件大小等),若存在不一致的情況則從主節點重新復制一份。輕量級檢查主要是檢查磁盤壞道等,每天檢查一次。
  2)深度檢查:進行數據的內容進行Hash檢查(bit to bit),那么在數據量非常大的時候將對性能造成影響。深度檢查時每周檢查一次。
手動觸發數據檢查
1)檢查PG數據一致性

// 查看當前pg信息
[root@node-1 ~]# ceph pg dump dumped all

// 輕量檢查:ceph pg scrub {pgid}
[root@node-1 ~]# ceph pg scrub 1.3f instructing pg 1.3f on osd.1 to scrub

// 深度檢查:ceph pg deep-scrub  {pgid}
[root@node-1 ~]# ceph pg deep-scrub 1.3f instructing pg 1.3f on osd.1 to deep-scrub 

設置scrub參數

// 獲取配置參數
[root@node-1 ~]# ceph --admin-daemon /var/run/ceph/ceph-mon.node-1.asok config get osd_scrub_max_interval { "osd_scrub_max_interval": "604800.000000" } 
// 設置配置參數
[root@node-1 ~]# ceph --admin-daemon /var/run/ceph/ceph-mon.node-1.asok config set osd_scrub_max_interval 240 { "osd_scrub_max_interval": "604800.000000" } 
配置項 默認值 說明
osd_scrub_chunk_min 5 PGScrub對應的Object數目的最小值
osd_scrub_chunk_max 25 PGScrub對應的Object數目的最大值
osd_deep_scrub_interval 604800 Deep scrub周期,單位是秒,默認是604800,也就是一周
osd_scrub_sleep 0 兩個PGScrub Op間休息一段時間
osd_heartbeat_interval 6 周期性執行OSD::sched_scrub函數
osd_scrub_begin_hour 0 允許觸發Scrub的時間段的起始時間
osd_scrub_end_hour 0 允許觸發Scrub的時間段的結束時間,結束時間可以小於起始時間
osd_scrub_auto_repair false 自動repair不一致Object,不支持副本池,只支持EC池
osd_max_scrubs 1 OSD允許同時運行的Scrub任務的最大數目
osd_scrub_min_interval 86400 一天,單位是秒,默認是86400,也就是一天
osd_scrub_max_interval 604800 一周,單位是秒,默認是604800,也就是一周
osd_scrub_interval_randomize_ratio 0.5 [min, min*(1+randomize_ratio)]
osd_scrub_during_recovery true 允許在OSD Recovery過程中執行Scrub任務
osd_scrub_load_threshold 0.5 只有負載低於該值時才允許觸發Scrub


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM