ceph如何确定文件存储的最终位置(OSD)

3 篇文章 0 订阅

ceph同时提供对象存储、块存储、文件存储三种接口,但本质上其实是对象存储,也就是说一个rbd image实际上包含了多个对象(默认情况下是image_size/4M)。

备注:使用ceph RBD是无法像目录文件一样看到文件内容等的,因为虽然我们是创建了一个文件,实际上是把文件作为对象存储,所以我们只能看到这个文件确实存在了osd上,且有副本。

ceph RBD无法查看文件内容,但使用快照导出文件,保留数据是很好用的

此处以块存储(RBD)为例进行演示,因为三种接口最终存储文件的操作单元都是对象,所以其他接口的方法类似:

前提:在bloc接口下有一个池:pool1,创建另一个volume(rbd image):vol1。

因为这个vol1里其实包含了很多object,我们首先要查找object的位置:

[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rados lspools
device_health_metrics
replicapool
my-store.rgw.control
my-store.rgw.meta
my-store.rgw.log
my-store.rgw.buckets.index
my-store.rgw.buckets.non-ec
.rgw.root
my-store.rgw.buckets.data

1.查找volume(rbd image)的指纹信息

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

[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rbd info replicapool/csi-vol-e31e16b6-6069-11eb-b9c5-0e28ddb26a3c
rbd image 'csi-vol-e31e16b6-6069-11eb-b9c5-0e28ddb26a3c':
        size 2 GiB in 512 objects
        order 22 (4 MiB objects)
        snapshot_count: 0
        id: 3a34255bcd45c
        block_name_prefix: rbd_data.3a34255bcd45c
        format: 2
        features: layering
        op_features:
        flags:
        create_timestamp: Wed Jan 27 06:35:46 2021
        access_timestamp: Wed Jan 27 06:35:46 2021
        modify_timestamp: Wed Jan 27 06:35:46 2021

查看真实使用空间:

rbd diff hzb-mysql | awk ‘{ SUM += $2 } END { print SUM/1024/1024 " MB" }’
上面的红色加粗部分就是该image的指纹,如果image是以 --image-format 2创建的,则上面的红色部分显示为: rbd_data.1979a96b8b4567这样的形式。下面利用该指纹可以查出该image的所有对象:

2.根据指纹找到这个volume的object

[root@rook-ceph-tools-6f5694c655-hzpj5 /]# rados -p replicapool ls|grep rbd_data.3a34255bcd45c
rbd_data.3a34255bcd45c.0000000000000000
rbd_data.3a34255bcd45c.0000000000000100
rbd_data.3a34255bcd45c.0000000000000008
rbd_data.3a34255bcd45c.0000000000000020
rbd_data.3a34255bcd45c.00000000000000e0
rbd_data.3a34255bcd45c.0000000000000120
rbd_data.3a34255bcd45c.00000000000000a0
rbd_data.3a34255bcd45c.0000000000000060

…还有很多,以上就是这个volume里所包含的object
从上面的查询结果中可以看出,一个image对象是由上面的object组成的,他们每一个的存储位置可能都不一样。我们以第一行的紫色object来查询它的真实存储位置。

3.查看object所在的PG和OSD

[root@rook-ceph-tools-6f5694c655-hzpj5 /]# ceph osd map replicapool rbd_data.3a34255bcd45c.0000000000000060
osdmap e298 pool 'replicapool' (2) object 'rbd_data.3a34255bcd45c.0000000000000060' -> pg 2.2d90c0db (2.1b) -> up ([19,2,15], p19) acting ([19,2,15], p19)

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

4.查看osd所在host主机

[root@rook-ceph-tools-6f5694c655-hzpj5 /]# ceph osd tree
ID  CLASS  WEIGHT    TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         26.18628  root default
-3          8.72876      host node1
 0    hdd   1.09109          osd.0       up   1.00000  1.00000
 3    hdd   1.09109          osd.3       up   1.00000  1.00000
 6    hdd   1.09109          osd.6       up   1.00000  1.00000
 9    hdd   1.09109          osd.9       up   1.00000  1.00000
12    hdd   1.09109          osd.12      up   1.00000  1.00000
15    hdd   1.09109          osd.15      up   1.00000  1.00000
18    hdd   1.09109          osd.18      up   1.00000  1.00000
21    hdd   1.09109          osd.21      up   1.00000  1.00000
-7          8.72876      host node2
 1    hdd   1.09109          osd.1       up   1.00000  1.00000
 4    hdd   1.09109          osd.4       up   1.00000  1.00000
 7    hdd   1.09109          osd.7       up   1.00000  1.00000
10    hdd   1.09109          osd.10      up   1.00000  1.00000
13    hdd   1.09109          osd.13      up   1.00000  1.00000
16    hdd   1.09109          osd.16      up   1.00000  1.00000
19    hdd   1.09109          osd.19      up   1.00000  1.00000
23    hdd   1.09109          osd.23      up   1.00000  1.00000
-5          8.72876      host node3
 2    hdd   1.09109          osd.2       up   1.00000  1.00000
 5    hdd   1.09109          osd.5       up   1.00000  1.00000
 8    hdd   1.09109          osd.8       up   1.00000  1.00000
11    hdd   1.09109          osd.11      up   1.00000  1.00000
14    hdd   1.09109          osd.14      up   1.00000  1.00000
17    hdd   1.09109          osd.17      up   1.00000  1.00000
20    hdd   1.09109          osd.20      up   1.00000  1.00000
22    hdd   1.09109          osd.22      up   1.00000  1.00000

5、进入机器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 存储池PG查看和PG存放OSD位置

1. 查看PG

1 (ceph-mon)[root@controller /]# ceph pg stat
2 512 pgs: 512 active+clean; 0 bytes data, 1936 MB used, 447 GB / 449 GB avail
3 (ceph-mon)[root@controller /]# ceph pg dump

2. pg映射OSD位置

1 (ceph-mon)[root@controller /]# ceph pg map 3.5d
2 osdmap e53 pg 3.5d (3.5d) -> up [6,15,4] acting [6,15,4]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值