【CEPH】scrub error解決方案

問題描述



原因分析


        數據的不一致性(inconsistent)指對象的大小不正確、恢復結束後某副本出現了對象丟失的情況。數據的不一致性會導致清理失敗(scrub error)。

        CEPH在存儲的過程中,由於特殊原因,可能遇到對象信息大小和物理磁盤上實際大小數據不一致的情況,這也會導致清理失敗。


不一致性校驗失敗解決方案


查看健康統計

ceph health detail

        結果示例:

        由上圖可知pg編號8.39,8.22,8.14出現問題。


PG修復


ceph pg repair <pg_id>


repair無法直接修復的解決方案


        如果是對象信息大小和物理磁盤上實際大小數據不一致的情況,則無法直接通過ceph pg repair來修復,此時可通過以下方法解決:


查看健康統計


ceph pg repair <pg_id>

        結果示例:


        由上圖可知pg編號8.39,8.22,8.14出現問題。acting中是其對應存儲的OSD的編號


定位清理失敗的數據


        先通過ceph pgrepair <pg_id>修復,然後打開ceph –w查看失敗信息:提示如下:


        其中形如rbd_data.xxxxxxxxxx即具體的對象數據名稱。


截斷數據


rados –p <poolname> truncate <object_name>length

        例:


        從上述LOG的描述中可知,rbd_data.1823a2ae8944a在磁盤中的大小爲4194304,但是對象信息的大小爲41738234,因此要將其截成4173824的長度,操作命令如下

rados –p compute truncate rbd_data.1823a2ae8944a 4173824



重新修復數據


  ceph pg repair 8.39


        此時即可修復成功!

發佈了79 篇原創文章 · 獲贊 75 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章