通过rados命令删除rbd卷操作流程




参数写错导致卷创建的太大了,16384T,H版本没有object-map特性导致rbd rm删除卷非常慢,实际上后的rados都没有对象(还没有写入多少数据),因此考虑用rados命令进行rbd卷的清理,步骤如下:

  1. 首先查看卷信息:rbd info rbd/rbd_sys_disk
    rbd image 'rbd_sys_disk':
    size 16384 TB in 4294967296 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.6a74656327b23c6
    format: 2
    features: layering
    flags:
  2. 之后开始清理rados中的数据对象和卷信息记录
     $ rados ls -p rbd | grep rbd_data.6a74656327b23c6
     $ rados rm -p rbd rbd_data.6a74656327b23c6.0000000000000214 # 逐个对象删除即可,可以写一个脚本来做
     $ rados rm -p rbd rbd_header.6a74656327b23c6  # 清理rbd_header对象
     $ rados listomapvals -p rbd rbd_directory  # 查看rbd_directory的omap属性列表
        id_6a74656327b23c6   # 删除这个key
        value: (16 bytes) :
        0000 : 0c 00 00 00 72 62 64 5f 73 79 73 5f 64 69 73 6b : ....rbd_sys_disk
    
        id_6a95c8a327b23c6
        value: (17 bytes) :
        0000 : 0d 00 00 00 72 62 64 5f 73 79 73 5f 64 69 73 6b : ....rbd_sys_disk   # 注意换行下面还有一个1
        0010 : 31                                              : 1
    
        id_6a9e49a6b8b4567
        value: (12 bytes) :
        0000 : 08 00 00 00 76 6f 6c 75 6d 65 30 32             : ....volume02
    
        id_6aa42d36b8b4567
        value: (19 bytes) :
        0000 : 0f 00 00 00 72 62 64 5f 6c 6f 67 69 63 5f 64 69 : ....rbd_logic_di
        0010 : 73 6b 31                                        : sk1
    
        name_rbd_logic_disk1
        value: (19 bytes) :
        0000 : 0f 00 00 00 36 61 61 34 32 64 33 36 62 38 62 34 : ....6aa42d36b8b4
        0010 : 35 36 37                                        : 567
    
        name_rbd_sys_disk# 删除这个key
        value: (19 bytes) :
        0000 : 0f 00 00 00 36 61 37 34 36 35 36 33 32 37 62 32 : ....6a74656327b2
        0010 : 33 63 36                                        : 3c6
    
        name_rbd_sys_disk1
        value: (19 bytes) :
        0000 : 0f 00 00 00 36 61 39 35 63 38 61 33 32 37 62 32 : ....6a95c8a327b2
        0010 : 33 63 36                                        : 3c6
    
        name_volume02
        value: (19 bytes) :
        0000 : 0f 00 00 00 36 61 39 65 34 39 61 36 62 38 62 34 : ....6a9e49a6b8b4
        0010 : 35 36 37                                        : 567
    $ rados rmomapkey -p rbd rbd_directory id_6a74656327b23c6
    $ rados rmomapkey -p rbd rbd_directory name_rbd_sys_disk
    $ rbd ls -p rbd 就看不到rbd_sys_disk这个卷了