本篇文章给大家分享的是有关如何进行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
,,,,特点:独家,对象映射
,,,,国旗: