前言
本文主要讲述Ceph集群的快照,文件系统和对象存储
一、快照
快照可以保存某一时间点时的状态数据
快照是映像在特定时间点的只读逻辑副本
希望回到以前的一个状态,可以恢复快照
ps:快照使用COW技术,对大数据快照速度会更快
1、创建镜像快照
查看快照
client1:
rbd snap ls img1
创建镜像快照
# 为img1创建一个名为img1-sn1的快照
rbd snap create img1 --snap img1-sn1
还原快照
rbd snap rollback img1 --img1-sn1
ps:还原快照后需要重新挂载
保护快照,防止删除
#查询相关帮助
rbd help snap protect
rbd snap protect img1 --snap img1-sn1
# 尝试删除发现删不了
rbd snap rm img1 --snap img1-sn1
删除快照
# 取消保护
rbd snap unprotect img1 --snap img1-sn1
# 删除快照
rbd snap rm --snap img1-sn1
2、快照克隆
不能将一个镜像同时挂载到多个节点,如果这样操作,将会损坏数据
如果希望不同的节点,拥有完全相同的数据盘,可以使用克隆技术
克隆是基于快照的,不能直接对镜像克隆
快照必须是受保护的快照,才能克隆
克隆流程
镜像–创建–>快照–保护 -->受保护的快照–克隆–>克隆的镜像
给多个客户端生成数据相同的数据盘
创建名为img2的镜像,大小10G,创建快照,保护快照,通过快照克隆镜像
rbd clone img2 --snap img2-sn1 img2-sn1-1
rbd clone img2 --snap img2-sn1 img2-sn1-2
创建的镜像可以通过rbd ls查看
rbd ls
不同客户通过不同的克隆镜像可以查看相同的数据
合并父子镜像
img2-sn1-2是基于img2的快照克隆来的,不能独立使用。
如果父镜像删除了,子镜像也无法使用。
将父镜像内容合并到子镜像中,子镜像就可以独立使用了。
# 把img2的数据合并到子镜像img2-sn1-2中
rbd flatten img2-sn1-2
# 查看状态,它就没有父镜像了
rbd info img2-sn1-2
# 删除父镜像,如果镜像正在被使用,则先取消
# 因为img2-sn1-2已经是独立的镜像了,所以它还可以使用
3、开机自动挂载
准备镜像
# 创建一个10G的镜像
rbd create img1 --size 10G
# 映射到本地
rbd map img1
# 创建文件系统
mkfs.xfs /dev/rbd0
# 设置开机自启动
# vim /etc/fstab
...
/dev/rbd/rbd/img1 /data xfs noauto 0 0
# noauto的含义是等rbdmap服务启动后再挂载
# 启动rbdmap服务
systemctl enable rbdmap --now
# reboot查看结果
df -h /data/
二、ceph文件系统
文件系统:相当于是组织数据存储的方式。
格式化时,就是在为存储创建文件系统。
Linux对ceph有很好的支持,可以把ceph文件系统直接挂载到本地。
要想实现文件系统的数据存储方式,需要有MDS组件
使用MDS
元数据就是描述数据的属性。如属主、属组、权限等。
ceph文件系统中,数据和元数据是分开存储的
新建存储池
归置组PG:存储池包含PG。PG是一个容器,用于存储数据。为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有的数据扁平化存放。
通常一个存储池中创建100个PG。
创建ceph文件系统
client1:
ceph osd pool create data01 100
ceph osd pool create metadata01 100
# 创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中
ceph fs new myfs01 metadata01 data01
ceph osd lspools
ceph df
ceph fs ls
ceph orch apply mds myfs01 --placement="2 ceph1 ceph2"
ceph -s
客户端使用cephfs
# 挂载文件系统需要密码。查看密码
cat /etc/ceph/ceph.client.admin.keyring
ps:-t 指定文件系统类型。-o是选项,提供用户名和密码
mkdir /mydata
mount.ceph 192.168.88.13:/ /mydata -o name=admin,secret=AQD9ZpJmcZK6HRAAQl1lGkzp33eJwk7Lc6GkNQ==
df -h /mydata/
四、对象存储
需要专门的客户端访问
键值对存储方式
对象存储需要rgw组件
安装部署
#配置服务端
client1:
#在ceph1/ceph2上部署rgw服务,名为myrgw
ceph orch apply rgw myrgw --placement="2 ceph1 ceph2" --port 8080
ceph -s
#配置客户端
client1:
# 安装amazon S3 cli工具(客户端工具)
yum install -y awscli
#在ceph中创建一个用户
radosgw-admin user create --uid=testuser --display-name="Test User" --email=test@tedu.cn --access-key=12345 --secret=67890
# 初始化客户端
aws configure --profile=ceph
AWS Access Key ID [None]: 12345
AWS Secret Access Key [None]: 67890
Default region name [None]: # 回车
Default output format [None]: # 回车
#创建名为testbucket的bucket,用于存储数据
#vim /etc/hosts
192.168.88.11 ceph1
192.168.88.12 ceph2
192.168.88.13 ceph3
###
aws --profile=ceph --endpoint=http://ceph1:8080 s3 mb s3://testbucket
#上传文件
aws --profile=ceph --endpoint=http://ceph1:8080 --acl=public-read-write s3 cp /etc/hosts s3://testbucket/hosts.txt
#查看bucket数据
aws --profile=ceph --endpoint=http://ceph1:8080 s3 ls s3://testbucket
#下载数据
wget -O zhuji http://ceph1:8080/testbucket/hosts.txt
ps:wget需要 yum下载
访问Dashborad
https://192.168.88.11:8443 用户名admin密码123456