zoukankan      html  css  js  c++  java
  • ceph中查看一个rbd的image的真实存储位置

    1、新建一个image存储

    rbd create hzb-mysql --size 2048

    2、查看hzb-mysql的所有对象

    一个rbd image实际上包含了多个对象(默认情况下是image_size/4M)

    [root@cc ~]# rbd info hzb-mysql
    rbd image 'hzb-mysql':
        size 2048 MB in 512 objects
        order 22 (4096 kB objects)
        block_name_prefix: rb.0.11895f.6b8b4567
        format: 1
    [root@cc ~]# 

    查看真实使用空间:

    rbd diff hzb-mysql | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'

    上面的红色加粗部分就是该image的指纹,如果image是以 --image-format 2创建的,则上面的红色部分显示为: rbd_data.1979a96b8b4567这样的形式。下面利用该指纹可以查出该image的所有对象:

    [root@cc ~]# rados -p rbd ls | grep rb.0.11895f.6b8b4567
    rb.0.11895f.6b8b4567.000000000006
    rb.0.11895f.6b8b4567.000000000003
    rb.0.11895f.6b8b4567.000000000012
    rb.0.11895f.6b8b4567.00000000013b
    rb.0.11895f.6b8b4567.000000000001
    rb.0.11895f.6b8b4567.00000000003f
    rb.0.11895f.6b8b4567.000000000002
    rb.0.11895f.6b8b4567.0000000001f8
    rb.0.11895f.6b8b4567.000000000017
    rb.0.11895f.6b8b4567.00000000001a
    rb.0.11895f.6b8b4567.000000000008
    rb.0.11895f.6b8b4567.0000000000bd
    rb.0.11895f.6b8b4567.000000000010
    rb.0.11895f.6b8b4567.00000000000c
    rb.0.11895f.6b8b4567.000000000016
    rb.0.11895f.6b8b4567.000000000040
    rb.0.11895f.6b8b4567.0000000001b9
    rb.0.11895f.6b8b4567.000000000019
    rb.0.11895f.6b8b4567.000000000000
    rb.0.11895f.6b8b4567.000000000007
    rb.0.11895f.6b8b4567.00000000000e
    rb.0.11895f.6b8b4567.000000000011
    rb.0.11895f.6b8b4567.00000000000a
    rb.0.11895f.6b8b4567.0000000001ff
    rb.0.11895f.6b8b4567.000000000018
    rb.0.11895f.6b8b4567.000000000009
    rb.0.11895f.6b8b4567.0000000000fc
    rb.0.11895f.6b8b4567.000000000004
    rb.0.11895f.6b8b4567.00000000007e
    rb.0.11895f.6b8b4567.000000000014
    rb.0.11895f.6b8b4567.00000000000d
    rb.0.11895f.6b8b4567.00000000000b
    rb.0.11895f.6b8b4567.00000000001e
    rb.0.11895f.6b8b4567.0000000000fe
    rb.0.11895f.6b8b4567.00000000017a
    rb.0.11895f.6b8b4567.00000000000f
    rb.0.11895f.6b8b4567.0000000000fd
    rb.0.11895f.6b8b4567.00000000001c
    rb.0.11895f.6b8b4567.00000000001d
    rb.0.11895f.6b8b4567.00000000001f
    rb.0.11895f.6b8b4567.000000000005
    rb.0.11895f.6b8b4567.000000000015
    rb.0.11895f.6b8b4567.00000000001b

    从上面的查询结果中可以看出,一个image对象是由上面的object组成的,他们每一个的存储位置可能都不一样。我们以第一行的紫色object来查询它的真实存储位置。

    3、查看object所在的PG和OSD

    [root@cc ~]# ceph osd map rbd rb.0.11895f.6b8b4567.000000000006
    osdmap e65 pool 'rbd' (2) object 'rb.0.11895f.6b8b4567.000000000006' -> pg 2.e1382280 (2.0) -> up ([3,0], p3) acting ([3,0], p3)
    [root@cc ~]# 

     这代表在pool rbd中的 rb.0.11895f.6b8b4567.000000000006 这个对象位于2.0这个pg中,并且位于osd3和osd0上(两个副本)。

    4、进入机器osd3上,进入下面目录

    [root@nc3 2.0_head]# cd /var/lib/ceph/osd/ceph-3/current/2.0_head
    [root@nc3 2.0_head]# ll
    total 8196
    -rw-r--r-- 1 root root       0 Mar 28 18:52 __head_00000000__2
    -rw-r--r-- 1 root root 4194304 Apr 14 14:49 rb.0.11895f.6b8b4567.000000000003__head_7494AE80__2
    -rw-r--r-- 1 root root 4194304 Apr 14 14:49 rb.0.11895f.6b8b4567.000000000006__head_E1382280__2

    下面的蓝色加粗的这个文件就是rb.0.11895f.6b8b4567.000000000006这个object的真实位置,同理,我们可以找出第2步当中的所有object的真实位置。

    osd0上的跟osd3上的方法一样,不再说了。

  • 相关阅读:
    趣谈多线程
    使用application manifest file
    参加一个.NET培训后的若干笔记
    遍历sql server数据库的简单方法
    为什么对继承的方法签名检查这么严格?
    Serialize Dictionary to xml using DataContractSerializer
    如何在sql中查询xml字符串
    从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
    using "code coverage coloring" to help debuging
    日常工作中用到过的PowerShell指令
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6709238.html
Copyright © 2011-2022 走看看