转载ceph IO切割成对象和对象名的组成

  看到很多关于oid-->pgid-->osdid映射的文章。 但是 读写IO到-->oid的映射,却没有相关的文章。

我认为一个完整的映射关系应该是这样的:read write IO---->oid---->pgid---->osdid  。下面我们重点研究下read write IO---->oid的映射关系。

一, 读写IO的组成

      读写IO,最基本的元素是:

      1,offset      #在磁盘上的偏移位置

      2, length  #需要读或者写的长度 

      3, data      #需要读取的数据

二,对象名的组成

       

        一个对象文件名有5部分组成

      1, rbd\udata.102a2ae8944a 

        rbd镜像里块的前缀,可以用rbd info查看, 通过他可以查找出对象和镜像的从属关系

     

      2,0000000000000000

      对象的序号,每次通过读写IO的 offset 除以对象大小4M,然后取整数,生成。

      比如:offset 假如为  4194035,  那么4194035/ 4194034 最后结果为1 ,那么这次IO就写在对象的序号为0000000000000001的对象上。

      从上面可以看出,对象是以4M,按序切分的。

      假如写入一个20M大小IO 写,产生的对象序号如下:

     

    可以发现,对象的序号非常有序,并且这些对象按序号拼接,刚好组成一个镜像里的数据。

      3,__head_

      这个指对象在head目录下

      4,9577E02B

      这个是对象的哈希值,和文件夹的分层有关系。比如:对象数量很多,一个目录容纳有点吃力,目录分层性能更好一些

      例如:

     

      可以看到对象分层后缀为183的,正好在/DIR_3/DIR_8/DIR_1目录下,而且正好是反的。pg下面对象的目录被分了3层。

      5,__1

        1表示 pool id

三,一个大的IO读写请求,怎么切分成具体对象的读写

  1,对象名称的生产

     

      cur就是读写IO的 offset,su就是4M大小。  cur/su,得到的bockno即为对象的序号,

    stripe_count为1, stripes_per_object 为 1。 最后算出objectno,即为最终的序号。

      最后通过字符串拼接,把block_name_prefix + objectno=  oid

     

    2,把业务系统的IO 长度和偏移值,转换为对象里的IO长度和偏移值

 

            按照4M大小对业务系统IO切割后,把对象的偏移值写入ObjectExtent类的对象ex。

     

        3,根据ObjectExtent类里的偏移值和长度对业务系统的数据buf,进行切割,切割成碎片后,放到bufferlist里

       

  四,一个读IO,分切成若干读对象任务后返回

      一个读取IO的操作,需要切分成很多对象读操作,当取得若干对象里的数据后,需要合并成一个大的返回值

      1,首先把读取到的每个对象的数据,写到  Striper::StripedReadResult  这个类的partial里面,这个过程叫做收集

     

        2,把partial里的值,全部写入bufferlsit,合并成一个完整的返回值,这个过程叫合并

             

五, 读写IO在对象文件里的表现形式

      不是所有对象都是4M大小的。即使对象的最大大小设定为4M

      假如写一个1M数据的IO,落到对象里面,造成的对象文件大小,可能为1M,2M,3M,4M,等等,都有可能。关键看数据在对象内的偏移值。

        下面做个实验,假如从业务系统写入一个1M大小的数据,偏移位置为2M

       

          集群的大小如下

         

          集群从4个对象,变成5个,从675个字节大小,变成3072K,也就是3M。

          再看对象文件的大小

         

          对象文件也为3M大小。

          为什么写入1M的数据,对象文件是3M大小? 其实对象文件是根据偏移值来填充了。当数据落到对象文件里的位置确定后,偏移位置之前全部填充NUL值

         

          在文件2M的偏移位置,2M之前是NUL值,2M之后为写入的真实数据,字符串"aaaaaaa....."

        所以这就是为什么随机IO,对集群的存储空间占用非常大,因为随机IO在对象文件内造成了随机的落点位置

六,对象的名字,在数据恢复中的应用。

        通过以上结论,得出,rbd image下的所有对象,包含了image里的所有数据。

        当一个ceph集群死亡后,如果数据盘里的数据还完整。我们依然可以通过对象拼接出一个rbd image。用于数据的恢复

        方法为:

      1,收集想要恢复的image下的所有对象,通过rbd info中的block_name_prefix

      2,把对象,通过dd命令拼接出整个image的数据文件

      3,把恢复好的image数据文件导入新的ceph集群

      官网上给出命令和脚本

      官网:http://ceph.com/geen-categorie/ceph-recover-a-rbd-image-from-a-dead-cluster/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容