如何进行ceph对象映射的实现

介绍

本篇文章给大家分享的是有关如何进行ceph对象映射的实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

对象映射里引入了ceph:: BitVector<2比;m_object_map;

是一个位图实现,根据object_no来记录每个对象的存在状态。m_object_map [object_no] !=new_state)

每个形象对应有一个object_map:

名称空间librbd {

,类AsyncOperation;

,类AsyncRequest;

,类AsyncResizeRequest;

,类CopyupRequest;

,类ImageWatcher;

,struct ImageCtx {

,,CephContext *有条件现金转移支付;…

,,ObjectMap object_map;,//=====比;最原始的拉力是:,ceph: BitVector<2比;object_map;

这儿检查对象是不是存在:

如果(! m_ictx→object_map.object_may_exist (m_object_no))

做copy_up的时候,会将相应的对象置上OBJECT_EXISTS:

,,,,,bool发送=m_ictx→object_map。aio_update (m_object_no OBJECT_EXISTS,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,boost:: optional (),
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,ctx);

- - - - - - - - - - - - - - - - - - - - - - - -

创建一个支持对象映射的镜像:

。/rbd创建——图像特征互斥型锁——图像特征对象映射——图像特征分层- p rbd user1_image_om大小1024——图像格式2,

有一个专门的对象来存对象映射:

rbd_object_map.4a3ec5a23fb32
rbd_header.4a3ec5a23fb32

rbd_id。user1_image_om

/*新型rbd形象& # 39;foo # 39;对象包含
*,,rbd_id.foo ,,,,,,,,,,,,- id的图像
*,,rbd_header灵活;id>,,,,,,,,——图像元数据
*,,rbd_object_map灵活;id>,,,,-可选图像对象映射
*,,rbd_data灵活;id> .00000000
*,,rbd_data灵活;id> .00000001
*,,,,,,,,,,,,,,,,,,,,,,,-数据
*/

#定义RBD_HEADER_PREFIX ,,,,“rbd_header !”
#定义RBD_OBJECT_MAP_PREFIX “rbd_object_map !”
#定义RBD_DATA_PREFIX ,,,,,,“rbd_data !”
#定义RBD_ID_PREFIX ,,,,,,,,“rbd_id !”

锤上创建支持对象映射的正确姿势:

[guzhongyan@ceph32 ~] rbd创建,规模50000美元,图像格式2——图像特性+ 12 test_image_om
[guzhongyan@ceph32 ~]美元rbd信息test_image_om
rbd形象& # 39;test_image_om& # 39;:
,,,,大小50000 MB
12500年对象,,,,订单22 (4096 kB对象)
,,,,block_name_prefix: rbd_data.6ac6606b8b4567
,,,,格式:2
,,,,特点:独家,对象映射
,,,,国旗:

如何进行ceph对象映射的实现