ceph 常用命令

1、ceph pool配置
1 创建pool
ceph osd pool create {pool-name} {pg-num} [{pgp-num}]

2 查看pool
ceph osd lspools

3 设置pool的指标pool池中最大存储对象数或最大存储字节数 有其一即可
ceph osd pool set-quota {pool-name} [max_objects{obj-count}] [max_bytes {bytes}]

4 重命名pool
ceph osd pool rename {current-pool-name} {new-pool-name}

5 查看pool的状态
rsdosdf

6 给pool制作快照
ceph osd pool mksnap {pool-name} {snap-name}

7 删除pool的快照
ceph osd pool rmsnap {pool-name} {snap-name}

8 删除一个pool
ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]

2、ceph pg配置
1 设置pool 中 pgs 的大小
ceph osd poolset {pool-name} pg_num

2 获得 pool 中 pgs 的大小
ceph osd pool get {pool-name} pg_num

3 设置 pool 中 pgs 组的大小
ceph osd poolset {pool-name} pgp_num

4 获得 pool 中 pgs 组的大小
ceph osd poolget {pool-name} pgp_num

5 查看集群中 pgs 的状态
ceph pg dump

6 查看指定pg 的 map
ceph pg map{pg-id}

7 查看指定pg 的状态
ceph pg {pg-id}query

8 清除一个 pg
ceph pg scrub{pg-id}

3、ceph镜像配置
1 查看更新Linux内核版本,

需相应Linux内核支持modproberbd 查看:uname –r

若不支持:
执行下述操作:

sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel

改为新内核:
sudo grub2-set-default 'CentOS Linux (4.4.0-1.el7.elrepo.x86_64) 7 (Core)'
grub2-editenv list 查看修改

最终更新设置内核:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

2 创建一个设备的镜像,size以M为单位
rbd create{image-name} --size {megabytes} –pool {pool-name}

如:
rbd createtestImage --size 512 --pool testPool

3 列出一个 pool 里面的块设备,即创建的镜像
rbd list{pool-name}

4 读出一个镜像里面的信息
rbd --image{image-name} -p {pool-name} info

5 重新修改镜像的大小
rbd resize--image {image-name} –p {pool-name} --size 1024

6 将块设备映射到本地
1 sudomodprobe rbd
2 sudo rbd map{image-name} --pool {pool-name}

7 显示映射的模块
rbd showmapped

8 从一个具体的 pool 中删除一个块设备
rbd rm {image-name} -p{pool-name}

9 取消块设备的映射
sudo rbdunmap /dev/rbd/{poolname}/{imagename}

4、ceph快照配置
1 创建快照

1 给镜像创建一个快照
rbd snap create {pool-name}/{image-name}@{snap-name}

2 列出一个镜像的所有快照
rbd snap ls {pool-name}/{image-name}

3 快照回滚
rbd snap rollback {pool-name}/{image-name}@{snap-name}

4 删除快照
rbd snap rm {pool-name}/{image-name}@{snap-name}

5 删除一个镜像的全部快照
rbd snap purge{pool-name}/{image-name}

2 分层快照

1 首先创建一个特殊格式的的镜像,格式要求:format 2
rbd create --image-format 2 {image-name}--size { megabytes } --pool {pool-name}

2 创建快照
rbd snap create {pool-name}/{image-name}@{snap-name}

3 克隆品访问父快照。父快照,所有克隆品都会损坏。为防止数据丢失,必须先保护、然后再克隆快照。

rbd snap protect {pool-name}/{image-name}@{snapshot-name}
$ rbd clone rbd/testImage2@test2Snap rbd/testImage3

4 克隆快照,将一个存储池中的镜像的快照克隆到另一存储池中,成为一个镜像
rbd clone {pool-name}/{parent-image}@{snap-name} {pool-name}/{child-image-name}

5 删除快照

1] 删除方式一:
删除所有快照 取消快照保护 删除快照

2] 删除方式二:
首先将克隆品压缩 解除保护 删除快照

6 取消快照保护
rbd snapunprotect {pool-name}/{image-name}@{snapshot-name}

7 列出一块镜像的子孙
rbd children {pool-name}/{image-name}@{snapshot-name}

8 克隆镜像压缩,进而消除父快照的引用
rbd flatten {pool-name}/{imag

5、ceph qemu配置
1 使用 qemu 创建镜像
qemu-img create-f raw rbd:{pool-name}/{image-name} {size}
例如: qemu-img create -f raw rbd:testPool/testImage0 1G

2 调整 qemu 镜像的大小
qemu-img resizerbd:{pool-name}/{image-name} {size}

3 查看一个 qemu 镜像属性信息
qemu-img inforbd:{pool-name}/{image-name}

4 转换 qemu 其他格式的镜像为块设备镜像
qemu-img convert-p -f 源镜像-O 目标镜像格式文件
rbd:poolname/imagename转换后的文件

5 运行镜像中的虚拟机
qemu -m 内存大小 -driveformat=raw,file=rbd:poolname/imagename

6 qemu 的带缓存控制

1 qemu -m1024 -drive format=rbd,file=rbd:poolname/imagename,cache=writeback
2 qemu –m 1024 \
-driveformat=raw,file=rbd:poolname/imagename:rbd_cache=true,cache=writeback

注:如若设置了rbd_cache=ture那么必须设置cache=writeback或者risk data loss 否则的话,qemu将不会发送请求给librbd如果qemu没有在配置文件中指定清楚,那么基于rbd的上层文件系统可能能被损坏

7 qemu 缓冲操作

回写:
rbd_cache = true
直写:
rbd_cache = ture
rbd_cache_max_dirty = 0
无:
rbd_cache = false

此条目发表在storage分类目录,贴了标签。将固定链接加入收藏夹。