如何在ceph中找出存放的数据
答案:2 悬赏:50 手机版
解决时间 2021-02-15 02:00
- 提问者网友:城市野鹿
- 2021-02-14 23:02
如何在ceph中找出存放的数据
最佳答案
- 五星知识达人网友:执傲
- 2021-02-15 00:11
CRUSH算法通过每个设备的权重来计算数据对象的分布。对象分布是由cluster map和data distribution policy决定的。cluster map描述了可用存储资源和层级结构(比如有多少个机架,每个机架上有多少个服务器,每个服务器上有多少个磁盘)。data distribution policy由placement rules组成。rule决定了每个数据对象有多少个副本,这些副本存储的限制条件(比如3个副本放在不同的机架中)。CRUSH算出x到一组OSD集合(OSD是对象存储设备):(osd0, osd1, osd2 … osdn) = CRUSH(x)CRUSH利用多参数HASH函数,HASH函数中的参数包括x,使得从x到OSD集合是确定性的和独立的。CRUSH只使用了cluster map、placement rules、x。CRUSH是伪随机算法,相似输入的结果之间没有相关性。
全部回答
- 1楼网友:山君与见山
- 2021-02-15 00:23
1、首先查看一个pool中的image的指纹信息,目的是该image的所有的object文件都是以这个指纹命名的。比如我这里创建了一个pool zhangyipool,该pool下有一个image zhangyi image :
$rados -p zhangyipool ls
rbd_directory
rbd_header.8c316b8b4567
rbd_id.zhangyiimage
这里8c316b8b4567就是这个image的指纹。所有这个image相关的object 4m对象都会以这个指纹命名来当文件存放在filestore后端文件系统上,比如xfs文件系统上。
2、查看这个pool下该image所有对象信息
$rados -p zhangyipool ls |grep 8c316b8b4567
rbd_data.8c316b8b4567.00000000000000a0
rbd_data.8c316b8b4567.0000000000000000
rbd_data.8c316b8b4567.0000000000000431
rbd_data.8c316b8b4567.000000000000042c
rbd_data.8c316b8b4567.0000000000000424
rbd_data.8c316b8b4567.0000000000000433
rbd_data.8c316b8b4567.0000000000000430
如这里都是以指纹8c316b8b4567对应的4m文件。
3、比如我们这里以rbd_data.8c316b8b4567.0000000000000430这个4m对象文件为例来查找这个文件的位置。首先找到这个文件对应的pg和osd集合。
$ceph osd map zhangyipool rbd_data.8c316b8b4567.0000000000000430
osdmap e181 pool ‘zhangyipool’ (2) object ‘rbd_data.8c316b8b4567.0000000000000430’ -> pg 2.13fe02d6 (2.2d6) -> up ([180,118,212], p180) acting ([180,118,212], p180)
从而指导这个对象对应的pg是2.2d6,osd集合是[180,118,212],其中osd.180是主osd。
3、在查看这个主osd在那台osd节点上,比如查看180主osd在那台节点上。此时需要执行ceph osd tree查看整个map,从而得到该osd归属那个节点
$ceph osd tree
172 1.62379 osd.172 up 1.00000 1.00000
180 1.62379 osd.180 up 1.00000 1.00000
189 1.62379 osd.189 up 1.00000 1.00000
201 1.62379 osd.201 up 1.00000 1.00000
4、从而得到osd.180是在主机名:host zhangyi01上,因此这里需要登录着台机器.ssh zhangyi01.然后查看osd目录:
$sudo ls -l /var/lib/ceph/osd
total 0
drwxr-xr-x 3 ceph ceph 228 may 3 15:47 ceph-165
drwxr-xr-x 3 ceph ceph 228 may 3 15:47 ceph-172
drwxr-xr-x 3 ceph ceph 228 may 3 15:47 ceph-180
drwxr-xr-x 3 ceph ceph 228 may 3 15:47 ceph-189
drwxr-xr-x 3 ceph ceph 228 may 3 15:47 ceph-201
5、发现ceph-180目录。该目录下存放和这个osd所对应的pg,因此也存放这个这些pg对应的image的对象文件。在current目录下查看上面pg id对应的文件:
$sudo ls -l /var/lib/ceph/osd/ceph-180/current |grep 2.2d6
drwxr-xr-x 2 ceph ceph 95 may 3 23:34 2.2d6_head
drwxr-xr-x 2 ceph ceph 6 may 3 23:01 2.2d6_temp
6、在/var/lib/ceph/osd/ceph-180/current/2.2d6_head目录下存放着文件rbd\udata.8c316b8b4567.0000000000000430__head_13fe02d6__2即是4m的object对象rbd_data.8c316b8b4567.0000000000000430的文件
$sudo ls -lh /var/lib/ceph/osd/ceph-180/current/2.2d6_head
total 4.0m
-rw-r–r– 1 ceph ceph 0 may 3 23:01 __head_000002d6__2
-rw-r–r– 1 ceph ceph 4.0m may 3 23:34 rbd\udata.8c316b8b4567.0000000000000430__head_13fe02d6__2
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯