1、在线调整Ceph RBD的容量大小 一、支持调整ceph RBD的容量大小的底层文件系统 自由的增长或者减小RBD的容量,须要底层文件系统的支持,支持的文件系统有 一、XFS 二、EXT 三、Btrfs 四、ZFS 二、将RBD镜像ceph-client1-rbd1原始容量是10G扩容为20G,(在ceph集群中任意一台节点上)执行的命令以下: rbd resize rbd/ceph-client1-rbd1 --size 20480 [root@ceph-node1 ~]# rbd info ceph-client1-rbd1 rbd image 'ceph-client1-rbd1': size 20480 MB in 5120 objects #已经扩容为20G order 22 (4096 kB objects) block_name_prefix: rbd_data.857a238e1f29 format: 2 features: layering flags: 三、在客户端上检查新的容量是否已经被内核所接受 [root@ceph-client1 ceph-vol1]# xfs_growfs -d /mnt/ceph-vol1/ meta-data=/dev/rbd0 isize=512 agcount=17, agsize=162816 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=1024 swidth=1024 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2621440 to 5242880 [root@ceph-client1 ceph-vol1]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 471M 0 471M 0% /dev tmpfs 483M 0 483M 0% /dev/shm tmpfs 483M 6.6M 477M 2% /run tmpfs 483M 0 483M 0% /sys/fs/cgroup /dev/mapper/cl-root 8.0G 1.5G 6.5G 19% / /dev/sda1 1014M 186M 829M 19% /boot tmpfs 97M 0 97M 0% /run/user/0 /dev/rbd0 20G 134M 20G 1% /mnt/ceph-vol1 #已是20G 2、建立Ceph RBD快照 一、在/mnt/ceph-vol1目录下建立一个文件,用于演示 [root@ceph-client1 ceph-vol1]# cd /mnt/ceph-vol1 [root@ceph-client1 ceph-vol1]# vi file_1 #文件内容以下: hello world 1 二、建立快照 [root@ceph-client1 ceph-vol1]# rbd snap create rbd/ceph-client1-rbd1@snap1 #快照名字:snap1 三、查看镜像的快照 [root@ceph-client1 ceph-vol1]# rbd snap ls rbd/ceph-client1-rbd1 SNAPID NAME SIZE 4 snap1 20480 MB 四、演示恢复快照的效果,删除原来的文件,并再次建立一个文件 [root@ceph-client1 ceph-vol1]# rm -rf file_1 [root@ceph-client1 ceph-vol1]# ls -l total 8 -rw-r--r-- 1 root root 13 Jan 7 22:32 file_2 这时候有一个文件file_2,记住刚才作快照的时候,是file_1文件,可是目前被删除了,而且误建立了一个file_2文件 也就是说恢复快照以后会恢复回原来的file_1文件 五、恢复快照(在生产环境中,请谨慎操做,) [root@ceph-client1 ceph-vol1]# rbd snap rollback rbd/ceph-client1-rbd1@snap1 Rolling back to snapshot: 100% complete...done. 快照回滚操做完成后,从新挂载文件系统以刷新文件系统状态 umount /mnt/ceph-vol1 mount /dev/rbd0 /mnt/ceph-vol1 六、快照的删除,删除指定的快照 rbd snap rm rbd/ceph-client1-rbd1@snap1 七、一次性删除全部快照 [root@ceph-client1 ~]# rbd snap purge rbd/ceph-client1-rbd1 八、若是须要删除RBD镜像,命令以下 rbd rm ceph-client1-rbd1 -p rbd 3、复制Ceph RBD cow副本: ceph存储集群能够从rbd的快照中建立写时复制副本(cow副本),这就是ceph的快照分层。 RBD父快照是只读的,再从这个RBD父快照建立cow副本,那么cow副本是可读可写的 注意: rbd镜像分为两种类型,分别是format-1,还有format-2,这两种类型都支持快照的特性 可是,只有format-2类型支持分层的特性(cow赋值特性),若是在建立rbd镜像时,没有明确指定属于哪一种类型 那么默认是format-1类型。所以, 一、建立属于format-2类型的rbd镜像 [root@ceph-node1 my-cluster]# rbd create ceph-client1-rbd2 --size 5024 --image-feature layering --image-format 2 二、建立快照 [root@ceph-node1 my-cluster]# rbd snap create rbd/ceph-client1-rbd2@snapshot_for_clone 三、要建立cow副本以前,将快照设置为保护状态(预防被误删,致使cow分层快照没法使用) [root@ceph-node1 my-cluster]# rbd snap protect rbd/ceph-client1-rbd2@snapshot_for_clone 四、开始建立cow副本 注意: 赋值快照须要父存储池,RBD镜像以及快照的名称,对于子实例来讲,它须要池以及RBD镜像的名称 [root@ceph-node1 my-cluster]# rbd clone rbd/ceph-client1-rbd2@snapshot_for_clone rbd/ceph-client1-cow-rbd3 五、查看cown副本信息 [root@ceph-node1 my-cluster]# rbd --pool rbd --image ceph-client1-cow-rbd3 info rbd image 'ceph-client1-cow-rbd3': size 5024 MB in 1256 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.197553d1b58ba format: 2 features: layering flags: parent: rbd/ceph-client1-rbd2@snapshot_for_clone #父镜像是rbd/ceph-client1-rbd2@snapshot_for_clone overlap: 5024 MB 到此,就已经克隆了一个RBD镜像 六、扁平化该镜像(可选操做) 说明: 若是想让克隆出来的快照不依赖它的父镜像,那么就须要扁平化。 这样的话,克隆出来的RBD镜像就和它的父镜像快照没有任何依赖了 6.1 启动扁平化 [root@ceph-node1 my-cluster]# rbd flatten ceph-client1-cow-rbd3 Image flatten: 100% complete...done. 6.2 查看cow快照 [root@ceph-node1 my-cluster]# rbd --pool rbd --image ceph-client1-cow-rbd3 info rbd image 'ceph-client1-cow-rbd3': size 5024 MB in 1256 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.197553d1b58ba format: 2 features: layering flags: 发现没有了parent:选项,已经变成了一个独立的镜像 七、删除父镜像快照 7.1 删除以前首先解除保护状态 [root@ceph-node1 my-cluster]# rbd snap unprotect rbd/ceph-client1-rbd2@snapshot_for_clone 7.2 开始删除 [root@ceph-node1 my-cluster]# rbd snap rm rbd/ceph-client1-rbd2@snapshot_for_clone