ceph-dencoder
贯穿整个osd数据处理的核心结构为ObjectStore::Transaction,所有操作关联的数据都会封装到Transaction的bufferlist中。 bufferlist中存储的数据是经过encode序列号的二进制流。在到实际Transaction的后端存储处理时,则通过对bufferlist进行 decode反序列。ceph-dencoder工具可以提供encode、dencode和dump ceph相关的数据结果,也可以做兼容性的测试。
工具使用
(1)查看支持的结构体   
     ceph-dencoder list_types  
(2)查看object_info示例
     在/var/lib/ceph/osd/ceph-x/current/ 下找到一个有数据的对象文件  12版本后增加了bluefs的机制,无法直接看到对象文件
     使用attr –l命令查看其中的内容     
     示例:
     attr -l 1000000000d.00000000_head_6C753797__15
     Attribute “cephos.spill_out” has a 2 byte value for 1000000000d.00000000__head_6C753797__15
     Attribute “ceph._scan_ceiling” has a 22 byte value for 1000000000d.00000000__head_6C753797__15
     Attribute “ceph._scan_max_mtime” has a 8 byte value for 1000000000d.00000000__head_6C753797__15
     Attribute “ceph._scan_max_size” has a 8 byte value for 1000000000d.00000000__head_6C753797__15
     Attribute “ceph.” has a 250 byte value for 1000000000d.00000000_head_6C753797__15
     Attribute “ceph.@1” has a 5 byte value for 1000000000d.00000000_head_6C753797__15
     Attribute “ceph.snapset” has a 31 byte value for 1000000000d.00000000__head_6C753797__15
         说明:
     “cephos.spill_out”是一个两个字节的字符数组,用于记录文件的扩展属性是否溢
      出到了Omap里;
     “ceph.“和”ceph.@1”应该算是一部分,因为ceph._超出了XFS扩展属性的长度
      限制,所以拆成了两个
 (3)将扩展属性导出到文件
      attr -q -g file   
      示例:   
      attr -q -g “ceph.” 1000000000d.00000000_head_6C753797__15 > abc.txt  
      attr -q -g “ceph.@1” 1000000000d.00000000__head_6C753797__15 » abc.txt  
 (4)使用ceph-dencoder导出文件  
      ceph-dencoder import abc.txt type object_info_t decode dump_json
      示例:  
      [root@cephfs102 21.17_head]# ceph-dencoder import abc.txt type object_info_t decode dump_json    
      {
          “oid”: {      
          “oid”: “1000000000d.00000000”,        
          “key”: “”,       
          “snapid”: -2,       
          “hash”: 1819621271,       
          “max”: 0,       
          “pool”: 21,      
          “namespace”: “”      
       },
       “version”: “2797’2”,     
       “prior_version”: “2655’1”,      
       “last_reqid”: “client.3204248.0:135”,       
       “user_version”: 2,       
       “size”: 557132,       
       “mtime”: “0.000000”,        
       “local_mtime”: “0.000000”,        
       “lost”: 0,       
       “flags”: 52,       
       “snaps”: [],      
       “truncate_seq”: 0,     
       “truncate_size”: 0,     
       “data_digest”: 557693221,     
       “omap_digest”: 4294967295,       
       “watchers”: {}     
       }