**
CEPH应用
**
1、RBD块存储:
RDB已经很好的集成在了linux内核中
提供了企业功能,如快照,cow克隆等
RBD还支持内存缓存,从而能够大大提升性能
KVM可用借助于librbd
2、cephFS:了解,不建议在生产环境中使用,因为还不成熟
3、对象存储:了解,使用亚马逊的s3
使用RBD(Rados块设备)
1、查看存储池
[root@node1 ~]# ceph osd lspools //可以查看到0号镜像池,名字为rbd
2、创建名为demo-img的镜像大小为10GB
[root@node1 ~]# rbd create demo-img --image-feature layering --size 10G
[root@node1 ~]# rbd list
[root@node1 ~]# rbd info demo-img
3、创建第2个镜像,名为image,指定它位于rbd池中
[root@node1 ~]# rbd create rbd/image --image-feature layering --size 10G
在node1-node3上编写UDEV规则,使得vdb1和vdb2重启后,属主属组仍然是ceph
[root@node1 ~]# vim /etc/udev/rules.d/90-cephdisk.rules
ACTION=="add", KERNEL=="vdb[12]", OWNER="ceph", GROUP="ceph"
scp /etc/udev/rules.d/90-cephdisk.rules node2:/etc/udev/rules.d/90-cephdisk.rules
^2^3
4、将image镜像大小缩减为7G
[root@node1 ceph-clu]# rbd resize --size 7G image --allow-shrink
[root@node1 ceph-clu]# rbd info image
5、扩容image到15G
[root@node1 ceph-clu]# rbd resize --size 15G image
[root@node1 ceph-clu]# rbd info image
6、将node6作为客户端,使用ceph创建的镜像作为存储设备
注意:主要有权限在任何节点主机都可以执行ceph命令 查看
客户端使用服务器的ceph存储
(1)安装客户端软件
[root@node6 ~]# yum install -y ceph-common
(2)拷贝相关文件
[root@node1 ceph-clu]# scp /etc/ceph/ceph.conf node6:/etc/ceph/
[root@node1 ceph-clu]# scp /etc/ceph/ceph.client.admin.keyring node6:/etc/ceph/
注: ceph.conf 是配置文件,里面记录了ceph集群访问的方式和地址
ceph.client.admin.keyring 是client.admin用户的密钥文件
(3)映射image镜像到本地
[root@node6 ~]# rbd map image
/dev/rbd0 ->rbd0就是映射出来的硬盘文件
[root@node6 ~]# lsblk
[root@node6 ~]# rbd showmapped
(4)格式化、挂载
[root@node6 ~]# mkfs.ext4 /dev/rbd0
[root@node6 ~]# mount /dev/rbd0 /mnt/
[root@node6 ~]# df -h /mnt/
[root@node6 ~]# echo 'hello world' > /mnt/hello.txt
搭建起ceph集群部署块设备 提供给远端客户端映射出来一块设备
**
快照 (创建快照目的为了误删数据可以使用快照直接恢复) snap快照
**
1、查看image镜像的快照
[root@node6 ~]# rbd snap ls image
2、为image创建名为image-sn1的快照
[root@node6 ~]# rbd snap create image --snap image-sn1
3、模拟误删除操作,恢复数据
(1)删除
[root@node6 ~]# rm -f /mnt/hello.txt
(2)卸载设备
[root@node6 ~]# umount /mnt/
(3)使用image-sn1还原快照
[root@node6 ~]# rbd snap rollback image --snap image-sn1
(4)挂载,查看是否已恢复
[root@node6 ~]# mount /dev/rbd0 /mnt/
[root@node6 ~]# cat /mnt/hello.txt
如果想从快照恢复出来一个新的经此昂,则可以使用克隆
克隆前,需要对快照进行《保护》操作
被保护的快照无法删除,取消保护(unprotect)
克隆快照
1、克隆快照,首先要把快照保护起来,防止误删除之类的操作
[root@node6 ~]# rbd snap protect image --snap image-sn1
测试删除快照
rbd snap rm image --snap image-snap1
rbd: snapshot 'image-sn1' is protected from removal.
2020-02-15 12:01:44.060700 7f06de822d80 -1 librbd::Operations: snapshot is protected
rbd:快照'image-sn1'被保护不被删除。
1 librbd::操作:快照是受保护的
2、克隆image-sn1快照,克隆的名称是image-cl1
[root@node6 ~]# rbd clone image --snap image-sn1 image-cl1 --image-feature layering
3、查看状态
[root@node6 ~]# rbd info image-cl1
parent: rbd/image@image-sn1 //副镜像是 rbd池里/image镜像@image-sn1的克隆
克隆镜像很多数据都来自于快照链
如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!
4、合并克隆文件
[root@node6 ~]# rbd flatten image-cl1
[root@node6 ~]# rbd info image-cl1 没有parent了 就是一个独立的东西了合并了
5、删除
[root@node6 ~]# umount /mnt/
[root@node6 ~]# rbd showmapped
[root@node6 ~]# rbd unmap /dev/rbd/rbd/image