ceph中rados对象创建以及文件上传与下载
一、将本地文件 /home/liangwl/file 文件拷贝到 cephpool 这个池中,并在pool中查看这个文件中的内容
环境:3台monitor,3个osd
查看pool
rados lspools
1. 我们先创建一个包含数据的file文件、一个ceph pool并且设置pool的副本数为3
$ echo "Hello ceph, I'm learning the data management part." > /home/liangwl/file
$ cat /home/liangwl/file
Hello ceph, I'm learning the data management part.
$ ceph osd pool create cephpool 32 32 #创建一个32个pg,32个pgd的池cephpool,如果进行ceph搭建的时候已经存在pool,可以不用额外创建,例 如可以选择上面已经存在的data、metadata、rbd作为pool
pool 'cephpool' created
$ ceph osd pool set cephpool size 3
set pool size to 3
2. 将文件写入到创建的pool中
put <obj-name> [infile] write object
$ rados put object1 /home/liangwl/file -p cephpool #在cephpool下创建一个名为object1的对象,将本地文件file拷贝到这个pool的对象
$ rados ls -p cephpool
object1
#如果单单只在mypool这个池中创建对象object2,不拷贝文件的指令为:
rados create object2 -p mypool
3. 查看object1的pg map
$ ceph osd map cephpool object1
osdmap e19 pool 'cephpool' (3) object 'object1' -> pg 3.bac5debc (3.1c) -> up ([2,0,1], p2) acting ([2,0,1], p2)
其中,
osdmap e19OSD map的版本号
pool 'cephpool' (3) pool的名字和ID
object 'object1'object的名字
pg 3.bac5debc (3.1c) pg number,即3.1c
up ([0,1,2], p0)OSD up set,因为我们设置的是3副本,所以每个pg都会被存放在3个OSD上
up ([2,0,1], p2) acting set,即OSD.0(primary)、OSD.1(secondary)和OSD.2(tertiary)
笔者的osd路径为/data/osd/osd.$id,在该路径下有一个current文件夹,因为前面设置了副本为3,本次实验中涉及到的也是3个osd,所以每个osd中都可以找到这个file存储的pg,以osd.1为例:
$cd /data/osd/osd.1/current
$ls -l | grep3.1c
drwxr-xr-x 2 root root 38 Aug 7 11:26 3.1c_head
$cd 3.1c_head
$ll
-rw-r--r-- 1 root root 50 Aug 7 11:26 object1__head_BAC5DEBC__3
$cat object1__head_BAC5DEBC__3
Hello ceph, I'm learning the data management
part.
查看所有的osd的信息:ceph osd tree
二、将pool对象中的文件拷贝到本地
使用get命令代替put命令
举例,将刚刚上传的file文件拷贝到本机,重命名为getfile
get <obj-name> [outfile] fetch object
$rados get object1 /home/liangwl/getfile -p cephpool
$cat /home/liangwl/getfile
hello ceph,i'm learning the data management part.
其他指令学习:
3、添加用户到钥匙环
3.1为用户建立一个钥匙 ceph auth get client.admin –o /etc/ceph/ceph.client.admin.keyring
3.2将已经存在的钥匙导入钥匙环ceph-authtool /etc/ceph/ceph.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring