环境: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
使用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
