一:块存储应用案例
快照:把硬盘(镜像)在某一个时刻的数据,做一个备份。
1、创建镜像快照
-
查看镜像快照(默认所有镜像都没有快照)。
[root@node1 ~]# rbd snap ls jacob
#查看某个镜像有没有快照,jacob是镜像的名称,ls是list查看 -
给镜像创建快照。
[root@node1 ~]# rbd snap create jacob --snap jacob-snap1
#为jacob镜像创建快照,–snap指定快照名称,快照名称为jacob-snap1,快照名称可以任意
[root@node1 ~]# rbd snap ls jacob
rbd存储池——》jacob——xxx
快照 jacob-snap1——xxxx
- 模拟用户误删:删除客户端写入的测试文件
(注意:在删除前,一定要做快照)
[root@client ~]# rm -rf /mnt/a.txt
[root@client ~]# umount /mnt
[root@client ~]# rbd unmap /dev/rbd0
rbd存储池——》jacob
快照 jacob-snap1——xxxx
- 还原快照
[root@node1 ~]# rbd snap rollback jacob --snap jacob-snap1
rollback是回滚的意思,使用jacob-snap1快照回滚数据,对jacob镜像进行回滚数据
[root@client ~]# mount /dev/rbd0 /mnt/ #客户端重新挂载分区
[root@client ~]# ls /mnt #查看数据是否被恢复
rbd存储池——》jacob——xxxx
快照 jacob-snap1——xxxx
2、创建快照克隆
ceph共享——》存储池——》创建镜像——》用户访问
ceph共享—》存储池—》创建镜像(6G数据)—》快照(6G数据)—》创建镜像(6G数据)-》用户
快照的作用:
1、还原数据。
2、基于当前的快照创建一个镜像(可以直接使用,不需要格式化)
1)克隆快照
[root@node1 ~]# rbd snap protect jacob --snap jacob-snap1 #保护快照
#jacob是镜像名称,jacob-snap1是前面创建的快照(被保护的快照,不可以被删除)
[root@node1 ~]# rbd snap rm jacob --snap jacob-snap1 #删除被保护的快照,会失败
[root@node1 ~]# rbd clone
jacob --snap jacob-snap1 jacob-clone --image-feature layering
[root@node1 ~]# rbd list
2)查看克隆镜像与父镜像快照的关系
[root@node1 ~]# rbd info jacob-clone
rbd image ‘jacob-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
parent: rbd/jacob@jacob-snap1
#克隆镜像的很多数据都来自于快照链(相当于文件的软链接的概念)
#如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!!
[root@node1 ~]# rbd flatten jacob-clone #让新克隆的镜像与快照脱离关系
[root@node1 ~]# rbd info jacob-clone #查看镜像信息
rbd image ‘jadob-clone’:
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3f53d1b58ba
format: 2
features: layering
flags:
#注意,父快照信息没了!
3)删除快照
[root@node1 ceph]# rbd snap rm jacob --snap jacob-snap1
//没有取消保护前,无法删除。
rbd: snapshot ‘jacob-snap1’ is protected from removal.
2021-03-12 17:44:20.173668 7f0e94161d80 -1 librbd::Operations: snapshot is protected
[root@node1 ceph]# rbd snap unprotect jacob --snap jacob-snap1
//取消保护
[root@node1 ceph]# rbd snap rm jacob --snap jacob-snap1 //删除快照
[root@node1 ceph]# rbd snap ls jacob //查看镜像的快照
二:Ceph文件系统
1)部署元数据服务器
登陆node1,安装ceph-mds软件包(如果前面课程已经安装,此步骤可以忽略)
[root@node1 ~]# yum -y install ceph-mds
2)创建存储池
[root@node1 ceph]# ceph osd pool create cephfs_data 64
#创建存储池,共享池的名称为cephfs_data,对应有64个PG
#共享池名称可以任意
[root@node1 ceph]# ceph osd pool create cephfs_metadata 64
#创建存储池,共享池的名称为cephfs_metadata,对应有64个PG
(如要删除某个存储池: ceph osd pool delete 存储池名 存储池名 --yes-i-really-really-mean-it)
3)登陆node1部署节点操作
[root@node1 ~]# cd /root/ceph-cluster
#该目录,是最早部署ceph集群时,创建的目录
[root@node1 ceph-cluster]# ceph-deploy mds create node1
#远程nod3,拷贝集群配置文件,启动mds服务
4)创建Ceph文件系统
[root@node1 ceph-cluster]# ceph fs new myfs1 cephfs_metadata cephfs_data
#myfs1是名称,名称可以任意,注意,先写metadata池,再写data池
#fs是filesystem的缩写,filesystem中文是文件系统
#默认,只能创建1个文件系统,多余的会报错
[root@node1 ceph-cluster]# ceph fs ls
5)客户端挂载(客户端需要安装ceph-common,前面的课程已经安装)
[root@client ~]# mount -t ceph 192.168.4.11:6789:/ /mnt
-o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
#注意:-t(type)指定文件系统类型,文件系统类型为ceph
#-o(option)指定mount挂载命令的选项,选项包括name账户名和secret密码
#192.168.4.11为MON节点的IP(不是MDS节点),6789是MON服务的端口号
#admin是用户名,secret后面是密钥
#密钥可以在/etc/ceph/ceph.client.admin.keyring中找到。
6789后面的/,表示ceph的文件系统存储。
[root@client ~]# df -Th
错误点:
1、密码不对。报错:坏的超级块。
2、用户名不对。报错: 权限不足(permission denied)
3、ceph-mds.target服务没有启动。报错:设备不存在(don’t exits)
4、服务有启动,没有文件系统。卡死。
扩展知识:
[root@node1 /]# ceph auth get-or-create client.nb
osd ‘allow *’
mds ‘allow *’
mon ‘allow *’ > /etc/ceph/nb.keyring
#文件名可以自定义。执行完成后会生成一个nb用户。
块
lsblk
/dev/sda /dev/sdb /dev/sdc
文件系统
mount -t ceph 。。。。。。。 /mnt
df -Th
三、Ceph对象存储
1)部署RGW软件包(提前装过,可忽略)
[root@node3 ~]# yum -y install ceph-radosgw
2)新建网关实例
拷贝配置文件,启动一个rgw服务
[root@node1 ~]# cd /root/ceph-cluster
[root@node1 ceph-cluster]# ceph-deploy rgw create node3 #远程mode3启
3)、登陆node3验证服务是否启动
[root@node3 ~]# ps aux |grep radosgw
ceph 4109 0.2 1.4 2289196 14972 ? Ssl 22:53 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node3 --setuser ceph --setgroup ceph
[root@node3 ~]# systemctl status ceph-radosgw@*