zoukankan      html  css  js  c++  java
  • CEPH 对象存储的系统池介绍

    RGW抽象来看就是基于rados集群之上的一个rados-client实例。 

    Object和pool简述

    Rados集群网上介绍的文章很多,这里就不一一叙述,主要要说明的是object和pool。在rados集群中任意一个对象都会映射为一个(pool,object)。其中pool是存储池,object为对象名。如果你只是做rados集群上层应用的开发(类似开发rgw)。只需要设计如何将数据存储到rados集群中哪个pool及哪个对象即可。

    RGW中pool和object应用

    RGW中存在的pool比较多,不同的pool管理不同的object数据。这里要关注2个数据结构:


    struct RGWZoneParams {
    rgw_bucket domain_root;
    rgw_bucket control_pool;
    rgw_bucket gc_pool;
    rgw_bucket log_pool;
    rgw_bucket intent_log_pool;
    rgw_bucket usage_log_pool;

    rgw_bucket user_keys_pool;
    rgw_bucket user_email_pool;
    rgw_bucket user_swift_pool;
    rgw_bucket user_uid_pool;
    };
    struct RGWZonePlacementInfo {
    string index_pool;
    string data_pool;
    string data_extra_pool;
    }


    RGW应用到rados中的对象分为2类,一类是普通对象,相当于普通文件的存储。还一类是omap对象,用于存储K-V对象。下面介绍RGW主要pool的用途:

    domain_root pool:每个bucket都对应一个普通对象,用于存储bucket元数据。

    control pool:该pool上创建若干个普通对象用于watch-notify(librados提供的一种watch和notify机制)。目前RGW用这种机制来实现分布式缓存(后续会详细介绍)。

    gc pool:rgw中大文件数据一般在后台删除,该pool用于记录那些待删除的文件对象。

    log pool:用于存储3种类型log,oplog,meta_log,data_log。其中oplog主要用于记录用户操作记录。

    Meta_log和data_log都是远程复制功能中需要用到的,后续会详细介绍。

    Intent log pool:这个pool目前没有用到。

    usage log pool:存储计量数据统计,比如上传文件多少次,下载多少次,遍历bucket多少次之类。

    user keys pool:用于存储用户AK和uid的对应关系,方便通过用户restful请求的ak找到用户id。

    user email pool:用于存储用户email和uid的对应关系。

    user swift pool:用于存储swift key和uid的对应关系

    user uid pool:用于存储用户信息,每个用户都有一个唯一的uid作为对象名。同时每个用户还会有一个用于索引该用户下桶的对象也存在该pool下面。

    index pool:存储bucket的文件索引对象。每个bucket对应在该pool下有一个索引对象,用来索引该bucket下所有的文件。同时远程复制中用到的bilog也存储在该pool的bucket索引对象上。

    data pool:顾名思义,所有的文件数据都存在该pool下。

    data extra pool:Multipart upload过程中一些中间态的数据,会存在该pool上。这些数据可以帮助用户进行断点续传及垃圾数据回收。

    另外还有2个pool也比较重要

    zone root pool:用于存放zone的元数据信息,其实就是存放RGWZoneParams数据结构

    region root pool:用于存放region的元数据信息。

    深圳麦集思科技有限公司
  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/damizhou/p/5819022.html
Copyright © 2011-2022 走看看