Ceph常用命令

1. 查看集群的状态

1
ceph -w

或:

1
ceph status

2. Pool相关

1
rados lspools

获得特定Pool的数据

1
rados -p .rgw ls

3. 容量相关

获得当前OSD所用容量

1
rados df

创建Buck

1
2
3
ceph osd tree
ceph osd crush add-bucket rack01 rack
ceph osd crush add-bucket rack02 rack

移动Rack

1
2
3
ceph osd crush move rack01 root=default
ceph osd crush move rack02 root=default
ceph osd tree

4. Object操作

创建Pool

1
2
ceph osd pool create web-services 128 128
rados lspools

添加Object

1
2
3
4
echo "Hello Ceph, You are Awesome like MJ" > /tmp/helloceph
rados -p web-services put object1 /tmp/helloceph
rados -p web-services ls
ceph osd map web-services object1

查看Object

1
2
3
cd /var/lib/ceph/osd/
ls ceph-0/current/8.3c_head/
cat ceph-0/current/8.3c_head/object1__head_BAC5DEBC__8

修改Image大小
增加Image大小可以直接使用 resize 子命令,如果缩小就需要添加 –allow-shrink 参数保证安全

1
2
rbd --image test_image resize --size 2000
rbd --image test_image resize --size 1000 --allow-shrink

5. 使用Image

通过 map 子命令可以把镜像映射成本地块设备,然后就可以格式化和 mount 了

1
2
3
4
rbd map test_image
rbd showmapped
mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt/

移除Image

1
2
3
umount /dev/rbd0
rbd unmap /dev/rbd0
rbd showmapped

删除Image
删除和Linux类似使用 rm 命令即可。

1
rbd --image test_image rm

6. RBD快照

创建快照
通过 snap 子命令可以创建和查看快照。

1
2
rbd snap create --image test_image --snap test_snap
rbd snap ls --image test_image

快照回滚
使用 snap rollback 就可以回滚快照,由于快照命名是镜像名后面加@,我们还可以下面的简便写法。

1
2
rbd snap rollback --image test_image --snap test_snap
rbd snap rollback rbd/test_image@test_snap

删除快照
删除快照也很简单,使用 rm 子命令,如果想清理所有快照可以使用 purge 子命令,注意Ceph删除是异步的不会立即释放空间。

1
2
rbd snap rm --image test_image --snap test_snap
rbd snap purge --image test_image

保护快照
保护快照可以防止用户误删数据,这是clone前必须做的。

1
rbd snap protect --image test_image --snap test_snap

要想不保护快照也很容易,使用 unprotect 子命令即可。

1
rbd snap unprotect --image test_image --snap test_snap

7. RBD克隆

创建clone
RBD克隆就是通过快照克隆出新的可读可写的Image,创建前需要创建format为2的镜像快照。

1
2
3
rbd create test_image2 --size 1024 --image-format 2
rbd snap create --image test_image2 --snap test_snap2
rbd snap protect --image test_image2 --snap test_snap2

通过 clone 子命令就可以创建clone了。

1
rbd clone --image test_image2 --snap test_snap2 test_clone

列举clone
通过 children 子命令可以列举这个快照的所有克隆。

1
rbd children --image test_image2 --snap test_snap2

填充克隆
填充克隆也就是把快照数据flatten到clone中,如果你想删除快照你需要flatten所有的子Image。

1
rbd flatten --image test_clone

8. RBD和Qemu

使用Qemu
官方Qemu已经支持librbd,使用Qemu创建镜像前需要安装工具。

1
apt-get install -y qemu-utils

创建镜像
创建镜像非常简单,使用 qemu-img 命令,注意目前RBD只支持raw格式镜像。

1
qemu-img create -f raw rbd:rbd/test_image3 1G

修改镜像大小
修改镜像大小可以使用 resize 子命令。

1
qemu-img resize rbd:rbd/test_image3 2G

查看镜像信息
通过 info 可以获取Qemu镜像信息。

1
qemu-img info rbd:rbd/test_image3

ceph-rest-api
Ceph-rest-api是Ceph官方提供的RESTful API接口,启动其进程后我们可以通过HTTP接口来收集Ceph集群状态与数据,并且进行起停OSD等管理操作。
详细的API文档可参考 https://dmsimard.com/2014/01/01/documentation-for-ceph-rest-api/

ceph-web
为了不增加API的复杂性,ceph-web遵循官方ceph-rest-api的接口,只是提供HTTP服务器并展示Ceph的数据,开源地址 https://github.com/tobegit3hub/ceph-web

1
docker run -d --net=host tobegit3hub/ceph-w

接口来收集Ceph集群状态与数据,并且进行起停OSD等管理操作。
详细的API文档可参考 https://dmsimard.com/2014/01/01/documentation-for-ceph-rest-api/

-------------本文结束感谢您的阅读-------------