如何在ceph中找出存放的数据

来源:互联网 发布:有限制的网络连接 编辑:程序博客网 时间:2024/06/03 18:54

ceph的数据管理始于ceph client的写操作,鉴于ceph使用多副本及强一致性策略来保证数据的安全性和完整性,一个写请求的数据会首先被写入到primary OSD上去,然后primary OSD会进一步将数据复制到secondary和其它tertiary OSD上去并一直等待他们的完成通知,然后再将最终的完成确认发送给client。这篇文章主要从ceph数据管理这个方面入手,通过具体的实例介绍一下如何在ceph中找到数据的存放位置。

1、我们先创建一个包含数据的test文件、一个ceph pool并且设置pool的副本数为

$ echo "Hello ceph, I'm learning the data management part." > /tmp/testfile$ cat /tmp/testfile    Hello ceph, I'm learning the data management part.$ ceph osd pool create helloceph 192 192    pool 'helloceph' created$ ceph osd pool set helloceph size 3   set pool 3 size to 3

2、 将文件写入到创建的pool中

$ rados -p helloceph put object1 /tmp/testfile$ rados -p helloceph ls    object1

3、 查看object1的pg map

$ ceph osd map helloceph object1    osdmap e8 pool 'helloceph' (3) object 'object1' -> pg 3.bac5debc (3.bc) -> up ([0,1,2], p0) acting ([0,1,2], p0)其中:osdmap e8 OSD map的版本号pool 'helloceph' (3)  pool的名字和IDobject 'object1' object的名字pg 3.bac5debc (3.bc)      pg number,即3.bcup ([0,1,2], p0) OSD up set,因为我们设置的是3副本,所以每个pg都会被存放在3个OSD上acting ([0,1,2], p0) acting set,即OSD.0(primary)、OSD.1(secondary)和OSD.2(tertiary)

4、 查看三个OSD的信息,主要是host信息即OSD在哪个机器上

[root@admin-node osd]# ceph osd treeID WEIGHT  TYPE NAME      UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.05589 root default                                     -2 0.02190     host node2                                    0 0.01700         osd.0       up  1.00000          1.00000  3 0.00490         osd.3       up  1.00000          1.00000 -3 0.01700     host node3                                    1 0.01700         osd.1       up  1.00000          1.00000 -4 0.01700     host node1                                    2 0.01700         osd.2       up  1.00000          1.00000

5、 从osd中找出testfile文件(这里以osd.1为例)

$ ssh node1(osd.1所在机器)$ cd /var/lib/ceph/osd/ceph-0/current $ cd 3.bc_head$ cat object1__head_BAC5DEBC__3Hello ceph, I'm learning the data management part.同样,我们也可以在osd.0和osd.2中找到object1.
原创粉丝点击