代码定义
Ceph版本:Hammer 0.94.5
1 | /* New-style rbd image 'foo' consists of objects |
从中可以看出一个rbd image会对应至少4个文件:
rbd_id.foo
- foo为image的namerbd_header.<id>
rbd_object_map.<id>
rbd_data.<id>.00000000
选择一个image
1 | # rbd ls volumes |
查看rbd_id文件
获取image的id
1 | # ceph osd map volumes rbd_id.volume-5ba95c5d-287b-429f-aadb-b72e990122ad |
上面13cd1213ee70
即为image的id
查看rbd_id文件的attr
1 | # rados -p volumes listxattr rbd_id.volume-5ba95c5d-287b-429f-aadb-b72e990122ad |
rbd_id文件并没有设置attr
查看rbd_header文件
1 | # ceph osd map volumes rbd_header.13cd1213ee70 |
创建rbd的时候,image-format的解释如下:
1 | --image-format <format-number> format to use when creating an image |
old_format格式
调用顺序为:
create_v1() --> init_rbd_header()
,里面会把image的metadata写入rbd_header
object里。new_format格式
rbd_header
object的size为0,而image的metadata存在omap里。
貌似file的xattr只在有snap的时候才会设置,clone后会清除,需要验证。
xattr主要用来给CephFS提供XATTR数据存放
查看rbd_header的attr
1 | # rados -p volumes listxattr rbd_header.13cd1213ee70 |
rbd_header文件并没有设置attr
查看rbd_header的omapvalue
1 | # rados -p volumes listomapvals rbd_header.13cd1213ee70 |
1 | # rados -p volumes listomapkeys rbd_header.13cd1213ee70 |
从rbd_directory中查看信息
rbd_directory里包含了pool里所有image的信息
1 | # rados -p volumes listomapvals rbd_directory |
查看rbd_data文件
查看该image的其中一个object的存放信息:
1 | 获取映射关系 |