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上的方法一样,不再说了。

ceph中查看一个rbd的image的真实存储位置的更多相关文章

  1. .NET中查看一个强命名程序集(*****.dll)的PublicKeyToken的方法

    使用命令行工具SDK Command Prompt,键入:SN -T C:\*****.dll  (dll文件所在的路径) 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有 ...

  2. C0302 将一个代码块中的内容保存在文件中, 查看一个rpm包是否可以安装

    #!/bin/bash # 这个脚本是用来描述和确认是否可以安装一个rpm包 # 在一个文件中保存输出 SUCCESS=0 E_NOARGS=65 if [ -z "$1" ] t ...

  3. Idea中查看一个类的所有资料及其层级关系

    在Idea中直接Ctrl + t 查看类的子类是可以看到,但是他没有那种层级顺序! 我们可以在类中点击顶部菜单Navigate -----> Type Hierarchy

  4. 如何在Android Studio中查看一个类的继承关系呢?

    在面板顶部的工具栏中,找到Navigate,然后在下拉列表中,找到“Type Hierarchy”(快捷键 Ctrl+H),点击.即可在面板右侧出现该类的Hierarchy层级图.

  5. mysql中查看一个字段中,有几个逗号

    利用replace.length的内置函数

  6. idea中查看一个类的调用用和被调用用关系

  7. mysql数据库中,查看某个数据库下的表的存储类型都有哪些

    需求描述: 在备份数据库的时候,使用mysqldump进行数据库的备份,如果库中仅仅有innodb存储引擎, 那么使用--single-transaction就可以,如果还有其他的存储引擎类型就要使用 ...

  8. eclipse查看一个方法被谁调用的快捷键

    我们知道,在idea中是可以通过[ctrl+鼠标左键单击]去跳到方法调用方去的,但是在eclipse中却是不行的. 三种快捷键方式 这里列出在eclipse中查看一个方法被谁调用的三种方式(快捷键). ...

  9. Linux查看软件安装路径,和文件的位置

    查看软件是否安装:rpm -qa|grep xx 列出软件安装包安装的文件:rpm -ql 直接使用rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置 通过find去查找 ...

随机推荐

  1. MapReduce项目中的一个JVM错误问题分析和解决

    最近一周都在查项目的各种问题,由于对原有的一个MapReduce分析数据的项目进行重构,减少了运行时的使用资源,但是重构完成后,在Reduce端总是不定时地抛出JVM的相关错误,非常随机,没有发现有什 ...

  2. DjangoORM执行原生sql

    在Django中使用原生Sql主要有以下几种方式: 一:extra:结果集修改器,一种提供额外查询参数的机制 二:raw:执行原始sql并返回模型实例 三:直接执行自定义Sql   这种方式完全不依赖 ...

  3. 【UVALive】3695 Distant Galaxy(......)

    题目 传送门:QWQ 分析 好喵啊~~~~ 不会做 正解看蓝书P53吧 代码 #include <cstdio> #include <algorithm> using name ...

  4. Masking operations

    Using a mask, multiple bits in a nibble, byte, words can be set either on, off or inverted from on t ...

  5. Ubuntu13.10:密码忘记了怎么办?

    重启ubuntu系统,开机时长按shift按键进入GRUB菜单,选择第二个高级模式. 新版的UBUNTU系统居然启用了GRUNB2.0的内核!虽然传说相当的牛X,但是用起来感觉就是非常看不清楚字体,要 ...

  6. Python 小知识点(8)-- __new__

    第一段代码如下: class Foo(object): def __init__(self,name): self.name = name print("Foo __init__" ...

  7. Sping实战之通过JAVA代码装配Bean

    尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置Spring.比如说,你想要将第三方库中的组件装配到你的应用中,在这 ...

  8. Rhythmk 一步一步学 JAVA (13) Spring-2 之Ben懒加载以及生命周期,单例

    1.定义Demo类: package com.rhythmk.spring; public class User { public void Init () { System.out.println( ...

  9. vagrant+docker搭建consul集群开发环境

    HashiCorp 公司推出的Consul是一款分布式高可用服务治理与服务配置的工具.关于其配置与使用可以参考这篇文章 consul 简介与配置说明. 一般,我们会在多台主机上安装并启动 consul ...

  10. C# event 事件学习

    C# event 事件学习 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-26 章节: 简单事件编写 模拟 WPF 控件传递 ...