创建一个Image的步骤(新image组成格式):
1.创建image的ID对象 rbd_id.{imagename}
2.创建image的id(随机生产的,与image的ID对象完全不同)
3.将该image注册到RBD_DIRECTORY中(image_name ,id)
4.创建image的header对象
6.将image的相关元信息,绑定到header对象上。
实现函数的作用:
-
send(),校验各种参数,开始流程
-
validate_pool(),检验rbd_directory是否存在
-
validate_overwrite(),检验rbd_info存在及内容。与image旧版本有关,略。
-
create_id_object(),创建rbd_id.对象,并设置其内容为image id
-
add_image_to_directory(),将image name和id加入rbd_directory的oamp中
-
negotiate_features(),对features参数做一些处理
-
create_image(),创建rbd_header.
对象,并存入各种元数据到其omap
-
set_stripe_unit_count(),设置stripe_unit和stripe_count到header omap
-
object_map_resize(),设置object_count和object_state到header omap
-
fetch_mirror_mode(),mirror特性
-
journal_create(),journal特性,RBD mirror必须依赖于journaling特性
-
mirror_image_enable(),mirror特性
-
complete(),完成流程
实现流程图如下图所示: