1、创建存储池(pool)
ceph osd pool create test_pool 128
2、创建磁盘
rbd create test_pool/test-image --size 1024
3、拷贝ceph.conf文件到客端(server)
ssh {client_ip} sudo tee /etc/ceph/ceph.conf </etc/ceph/ceph.conf
4、安装 ceph(client)
yum install ceph-common
5、创建 ceph 用户权限(server)
ceph auth caps client.mysql mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=mysql'
6、密钥
ceph auth get-or-create client.mysql | ssh {client_ip} sudo tee /etc/ceph/ceph.client.mysql.keyring
7、禁止掉不支持的模块
rbd feature disable mysql/test-image fast-diff
rbd feature disable mysql/test-image object-map
rbd feature disable mysql/test-image exclusive-lock
8、映射磁盘到本地
rbd map mysql/test-image --id mysql --keyring /etc/ceph/ceph.client.mysql.keyring
9、格式化挂载磁盘
mkfs.xfs /dev/rbd0
mkdir /data
mount /dev/rbd0 /data
lsblk
查看已映射块设备
rbd showmapped
取消块设备映射
rbd unmap /dev/rbd/{poolname}/{imagename}
二
ceph osd pool application disable block_data rgw --yes-i-really-mean-it
设置存储池用途
ceph osd pool application enable block*data rbd --yes-i-really-mean-it
ceph osd pool application get block*data //ceph mgr module enable rbd_support
加载rbd内核模块
modprobe rbd
创建卷
rbd create --size 10240 volume1 --pool block_data
查询卷列表
rbd ls -p block_data
挂载卷
先禁止掉不支持的模块
rbd feature disable block_data/volume1 object-map fast-diff deep-flatten
挂载
rbd map block_data/volume1
rbd map volume1 -p block_data
格式化挂载磁盘
mkfs.xfs /dev/rbd0
mkdir /rbd
mount /dev/rbd0 /rbd
lsblk
查看已映射块设备
rbd showmapped
卸载卷
rbd unmap block_data/volume1
删除卷
rbd rm volume1 -p block*data
创建快照
rbd snap create volume*3@volume3*snap1 -p block*data
查询一个卷的快照列表
rbd snap list volume*3 -p block*data
查询快照详细信息
rbd info volume*3@volume3*snap1 -p block*data
查询快照详细信息
rbd info volume*3@volume3*snap2 -p block*data
在volume上写100M数据
dd if=/dev/zero of=/dev/ bs=1M count=100 oflag=direct
创建快照
rbd snap create volume@volume*snap1 -p block*data
再写50M数据
dd if=/dev/zero of=/dev/rbd0 bs=1M count=50 oflag=direct
再创建快照
rbd snap create volume@volume*snap2 -p block*data
再写30M数据
dd if=/dev/zero of=/dev/rbd0 bs=1M count=100 oflag=direct
查询快照列表
rbd snap list volume -p block*data
查询卷上的数据写入详情
rbd diff volume -p block_data
通过简单计算,获取卷上的总数据量
rbd diff volume -p block_data| awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'
使用du命令获取卷和相关联快照上的数据量
rbd du volume -p block*data
创建链接克隆卷, 先把快照保护起来,否则会报错
rbd snap protect volume@volume*snap1 -p block*data
创建链接克隆卷
rbd clone --pool block*data --image volume --snap volume*snap1 --dest-pool block*data --dest volume*snap1_clone1
查询链接克隆卷的详情,可看到它的父亲
rbd info --image volume*snap1*clone1 -p block*data
挂载链接克隆卷(没执行disable,但也没报错)
rbd map volume*snap1*clone1 -p block_data
在链接克隆卷上写入15M数据
dd if=/dev/zero of=/dev/rbd1 bs=1M count=15 oflag=direct
查询链接克隆卷上的数据量
rbd du volume*snap1*clone1 -p block*data
基于volume_snap1再创建一个链接克隆卷
rbd clone --pool block*data --image volume --snap volume*snap1 --dest-pool block*data --dest volume*snap1_clone2
基于volume_snap2创建一个链接克隆卷
rbd snap protect volume@volume*snap2 -p block*data rbd clone --pool block*data --image volume --snap volume*snap2 --dest-pool block*data --dest volume*snap2_clone1
给volumesnap2clone1打两个快照
rbd snap create volume*snap2*clone1@volume*snap2*clone1*snap1 -p block*data rbd snap create volume*snap2*clone1@volume*snap2*clone1*snap2 -p block*data
查询volume的快照
rbd snap list volume -p block*data
查询volume的孩子
rbd children volume -p block*data block*data/volume*snap1*clone1 block*data/volume*snap1*clone2 block*data/volume*snap2*clone1
查询volume@volume_snap1的孩子
rbd children volume@volume*snap1 -p block*data block*data/volume*snap1*clone1 block*data/volume*snap1*clone2
查询volume@volume_snap2的孩子
rbd children volume@volume*snap2 -p block*data block*data/volume*snap2_clone1
查询链接克隆卷volumesnap2clone1的快照
rbd snap list volume*snap2*clone1 -p block*data