前言:
- Ceph ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和扩展性
- ceph项目最早其源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
一、Ceph特点
-
高性能
① Ceph摒弃了传统的集中式元数据寻址方案,采用crush算法, 数据分布均匀,并行度高
② 考虑了容灾域的隔离,能够实现哥类负载的副本放置规则,例如跨机房、机架感知等
③ 能够支持上千个存储节点的规模,支持TB到PB级的数据
-
高可用性
① 副本数可以灵活控制
② 支持故障域分隔,数据强一致性
③ 多种故障常见自动进行修复自愈
④ 没有单点故障,自动管理
- 高可扩展性
① 去中心化
② 扩展灵活
③ 随着节点增加而线性增长
- 特性丰富
① 支持三种存储接口:块存储、文件存储、对象存储
② 支持自定义接口,支持多种语言驱动
二、Ceph架构介绍
2.1 Ceph生态系统大致分为四类
-
客户端 clients
数据用户
-
元数据服务器 mds metadata server cluster
缓存和同步分布式元数据
-
对象存储集群 osd object storage cluster
将数据和元数据作为对象存储,执行其他关键职能
-
集群监视器 Cluster monitors
执行监视功能
2.2 Ceph架构
2.2.1 三种接口文件
-
① Object
由原生的API,而且兼容Swift的S3和API
-
② Block
支持精简配置、快照、克隆
-
③ file
posix接口,支持快照
2.3 Ceph 核心组件简介
-
Monitor(监控):monitor在集群中扮演管理者角色,负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD
当Ceph集群为2个副本,至少需要2个OSD才能达到健康状态
-
MGR:由于Monitor负载过大,采用MGR来辅助Monitor管理
-
OSD(存储):负责响应客户端请求返回具体数据的进程,一个ceph集群有很多OSD
OSD还能够存储数据、处理数据的复制、恢复、回填再均衡、并且通过检查其他的OSD的守护进程的心跳,向monitor提供给一些监控信息
-
MDS(元数据):CephFS服务依赖的元数据服务,元数据的内存缓存,为了加快元数据的访问
-
Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据
-
PG(Placement Groups),PG就是管理Object(对象)的容器
-
RADOS(Reliable Autonomic Distributed Object Store):RADOS在动态变化和异质结构的存储设备机群之上提供一种稳定、可扩展、高性能的单一逻辑对象(Object)存储接口和能够实现节点的自适应和自管理的存储系统
-
Libradio:
Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持
-
Crush
CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
-
RGW
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
-
CephFS
CephFS全称Ceph File System,是Ceph对外提供的文件系统服务
三、Ceph三种存储类型
3.1 文件存储
-
典型设备
FTP NFS服务器
-
主要功能
为了克服块存储文件无法共享的问题,所以有了文件存储,在服务器上架设FTP和NFS服务,就是文件存储
-
优缺点
-
优点:
造价低、随便一台机器就可以
方便文件共享
-
缺点
读写速率低
传输速率慢
-
-
使用场景
日志存储、有目录结构的文件存储等等
3.2 块存储
-
典型设备
磁盘阵列、硬盘
-
主要功能
主要功能是将裸磁盘空间映射给主机使用
-
优缺点
-
优点
通过RAID与LVM等手段,对数据提供了保护
多块廉价的硬盘组合起来,提高容量
多块磁盘组合出来的逻辑盘,提升读写效率
-
缺点
采用SAN架构组网时,光纤交换机造价成本高
主机之间无法共享数据
-
-
使用场景
docker容器、虚拟机磁盘存储分配
日志存储、文件存储等等
3.3 对象存储
-
典型设备
内置大容量硬盘的分布式服务器(Swift,s3)
-
功能
多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能
-
优点
具备块存储的读写高速
具备文件存储的共享等特性
-
使用场景(适合更新变动较少的数据)
图片存储
视频存储
3.4 分布式文件系统比较
四、Ceph搭建
4.1 实验环境
- 此项实验基于之前的OpenStack多节点部署的环境,OpenStack多节点部署可查看我之前的博客:
-
注意,在部署Ceph之前,必须把和存储有关的数据清理干净(可在控制台删除),包括:
安装的实例
上传的镜像
cinder块
4.2 ceph环境部署
- 关闭所有节点的防火墙
[root@ct ~]# systemctl stop iptables
-
在三个节点上部署本地源
上传openstack_rock2.tar.gz 到/opt目录中
-
解压上传的包
[root@ct ~]# tar zxvf openstack_rocky2.tar.gz -C /opt
- 因为此处上传的文件和之前部署openstack的yum源的文件一致,所以直接清除缓存并重新创建缓存即可
[root@ct yum.repos.d]# yum clean all
[root@ct yum.repos.d]# yum makecache
4.3 Ceph集群搭建
- ① 在所有节点服务器上安装Python-setuptools工具和ceph软件
[root@ct ~]# yum install python-setuptools -y
[root@ct ~]# yum -y install ceph
- ② 在控制节创建ceph配置文件目录并安装ceph-deploy
[root@ct ~]# mkdir -p /etc/ceph
[root@ct ~]# yum -y install ceph-deploy
- ③ 在控制节点创建三个mon
[root@ct ~]# cd /etc/ceph/
[root@ct ceph]# ceph-deploy new ct c1 c2
......省略部分内容
[root@ct ceph]# more /etc/ceph/ceph.conf
[global]
fsid = b65b3c32-7d1e-4e5f-b2f6-24072373c333
mon_initial_members = ct, c1, c2
mon_host = 192.168.100.10,192.168.100.11,192.168.100.12
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
- ④ 在控制节点初始化mon,同时收集三个节点的密钥
[root@ct ceph]# ceph-deploy mon create-initial
......省略部分内容
[root@ct ceph]# ls
ceph.bootstrap-mds.keyring ceph.conf
ceph.bootstrap-mgr.keyring ceph-deploy-ceph.log
ceph.bootstrap-osd.keyring ceph.mon.keyring
ceph.bootstrap-rgw.keyring rbdmap
ceph.client.admin.keyring
- ⑤ 在控制节点创建OSD
[root@ct ceph]# ceph-deploy osd create --data /dev/sdb ct
......省略部分内容
[root@ct ceph]# ceph-deploy osd create --data /dev/sdb c1
......省略部分内容
[root@ct ceph]# ceph-deploy osd create --data /dev/sdb c2
......省略部分内容
- ⑥ 使用ceph-deploy下发配置文件和admin密钥下发到三个节点
[root@ct ceph]# ceph-deploy admin ct c1 c2
[c2][DEBUG ] connected to host: c2
[c2][DEBUG ] detect platform information from remote host
[c2][DEBUG ] detect machine type
[c2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
...........省略部分内容
- ⑦ 在所有节点上给keyring添加执行权限
[root@ct ceph]# chmod +x ceph.client.admin.keyring
[root@c1 ceph]# chmod +x ceph.client.admin.keyring
[root@c2 ceph]# chmod +x ceph.client.admin.keyring
- ⑧ 创建mgr管理服务
[root@ct ceph]# ceph-deploy mgr create ct c1 c2
[c2][INFO ] Running command: ceph --cluster ceph --name client.bootstrap-mgr --keyring /var/lib/ceph/bootstrap-mgr/ceph.keyring auth get-or-create mgr.c2 mon allow profile mgr osd allow * mds allow * -o /var/lib/ceph/mgr/ceph-c2/keyring
[c2][INFO ] Running command: systemctl enable ceph-mgr@c2
[c2][WARNIN] Created symlink from /etc/systemd/system/ceph-mgr.target.wants/[email protected] to /usr/lib/systemd/system/[email protected].
[c2][INFO ] Running command: systemctl start ceph-mgr@c2
[c2][INFO ] Running command: systemctl enable ceph.target
......省略部分内容
- ⑨ 检查ceph集群状态
[root@ct ceph]# ceph -s
cluster:
id: b65b3c32-7d1e-4e5f-b2f6-24072373c333
health: HEALTH_OK
services:
mon: 3 daemons, quorum ct,c1,c2
mgr: ct(active), standbys: c2, c1
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 3.0 TiB / 3.0 TiB avail
pgs:
- ⑩ 创建三个与openstack对接的pools(volumes、vms、images)64(PG)
[root@ct ceph]# ceph osd pool create volumes 64
pool 'volumes' created
[root@ct ceph]# ceph osd pool create vms 64
pool 'vms' created
[root@ct ceph]# ceph osd pool create images 64
pool 'images' created
- 最后查看ceph状态
[root@ct ceph]# ceph mon stat
e1: 3 mons at {c1=192.168.100.11:6789/0,c2=192.168.100.12:6789/0,ct=192.168.100.10:6789/0}, election epoch 6, leader 0 ct, quorum 0,1,2 ct,c1,c2
[root@ct ceph]# ceph osd status
+----+------+-------+-------+--------+---------+--------+---------+-----------+
| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |
+----+------+-------+-------+--------+---------+--------+---------+-----------+
| 0 | ct | 1026M | 1022G | 0 | 0 | 0 | 0 | exists,up |
| 1 | c1 | 1026M | 1022G | 0 | 0 | 0 | 0 | exists,up |
| 2 | c2 | 1026M | 1022G | 0 | 0 | 0 | 0 | exists,up |
+----+------+-------+-------+--------+---------+--------+---------+-----------+
[root@ct ceph]#
4.4 Ceph集群管理页面安装
- 前提:查询Ceph状态,不能出现error
- 启动dashboard模块
[root@ct ceph]# ceph mgr module enable dashboard
- 创建https证书
[root@ct ceph]# ceph dashboard create-self-signed-cert
Self-signed certificate created
- 查看mgr服务
[root@ct ceph]# ceph mgr services
{
"dashboard": "https://ct:8443/"
}
- 设置密码和账号
#123密码可以修改
[root@ct ceph]# ceph dashboard set-login-credentials admin 123
Username and password updated
-
使用web页面登录查看
访问https://192.168.100.10:8443
五、配置Ceph与OpenStack对接
5.1 Ceph与OpenStack对接环境部署
- ① 在控制节点创建client.cinder并设置权限
[root@ct ceph]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=volumes,allow rwx pool=vms,allow rx pool=images'
[client.cinder]
key = AQCawnRevBYQIBAAYySbtyd8+2NLnRhMlpdaCQ==
- ② 在控制节点创建client.glance并设置权限
[root@ct ceph]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=images'
[client.glance]
key = AQDGwnRetqs2ABAAvsCsf7ys93L82emAqjzVRQ==
- ③ 推送密钥到对接的节点,因为本实验中glance是装在控制节点的,所以不需要发送到其他的节点
[root@ct ~]# ceph auth get-or-create client.glance |tee /etc/ceph/ceph.client.glance.keyring
[client.glance]
key = AQDGwnRetqs2ABAAvsCsf7ys93L82emAqjzVRQ==
[root@ct ~]# chown glance.glance /etc/ceph/ceph.client.glance.keyring
- ④ 将client.cinder节点 因为这个默认也是安装在controller上 ,所以不需要传递到其他节点,如果在其他节点就执行第一条语
[root@ct ~]# ceph auth get-or-create client.cinder | tee /etc/ceph/ceph.client.cinder.keyring
[client.cinder]
key = AQCawnRevBYQIBAAYySbtyd8+2NLnRhMlpdaCQ==
[root@ct ~]# chown cinder.cinder /etc/ceph/ceph.client.cinder.keyring
- ⑤ 同时将client.cinder 传递到计算节点
#由于计算节点需要将用户的client.cinder用户的密钥文件存储在libvirt中,所以需要执行如下操作
[root@ct ~]# ceph auth get-key client.cinder |ssh c1 tee client.cinder.key
AQCawnRevBYQIBAAYySbtyd8+2NLnRhMlpdaCQ==
[root@ct ~]# ceph auth get-key client.cinder |ssh c2 tee client.cinder.key
AQCawnRevBYQIBAAYySbtyd8+2NLnRhMlpdaCQ==
#在c1 和 c2两个节点查看是否收到
[root@c1 ceph]# ls
ceph.client.admin.keyring ceph.conf rbdmap tmpShIV0Z
[root@c2 ceph]# ls
ceph.client.admin.keyring ceph.conf rbdmap tmpOYNw82
5.2 添加临时密钥到libvirt中
- 在运行nova-compute的计算节点将临时密钥文件添加到libvirt 中然后删除
- 配置libvirt secret
- KVM虚拟机需要使用librbd才可以访问ceph集群
- Librbd访问ceph又需要账户认证
- 因此在这里,需要给libvirt设置账户信息
5.2.1 在C1节点配置
- ① 生成UUID
[root@c1 ceph]# uuidgen
4a7e1428-c0ef-429a-8055-5ceb8baa1fbd
- ② 创建密钥文件(使用上一步生成的UUID)
[root@c1 ceph]# cd /root
[root@c1 ~]# vi secret.xml
[root@c1 ~]# cat secret.xml
<secret ephemeral='no' private='no'>
<uuid>4a7e1428-c0ef-429a-8055-5ceb8baa1fbd</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
----》wq
- ③ 定义密钥,将其保存。在之后会使用这个密钥
[root@c1 ~]# virsh secret-define --file secret.xml
Secret 4a7e1428-c0ef-429a-8055-5ceb8baa1fbd created
- ④ 设置密钥并删除临时文件,删除文件的步骤是可选的,目的是保持系统的纯净
[root@c1 ~]# virsh secret-set-value --secret 4a7e1428-c0ef-429a-8055-5ceb8baa1fbd --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
Secret value set
5.2.2 在C2节点上配置
- ① 创建密钥文件
[root@c2 ceph]# cd /root
[root@c2 ~]# vi secret.xml
[root@c2 ~]# cat secret.xml
<secret ephemeral='no' private='no'>
<uuid>4a7e1428-c0ef-429a-8055-5ceb8baa1fbd</uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
------》wq
- ② 定义秘钥,并将其保存
[root@c2 ~]# virsh secret-define --file secret.xml
Secret 4a7e1428-c0ef-429a-8055-5ceb8baa1fbd created
- ③ 设置秘钥并删除临时文件
[root@c2 ~]# virsh secret-set-value --secret 4a7e1428-c0ef-429a-8055-5ceb8baa1fbd --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
Secret value set
- ④ 在控制节点ct上开启ceph监控
[root@ct ~]# ceph osd pool application enable vms mon
enabled application 'mon' on pool 'vms'
[root@ct ~]# ceph osd pool application enable images mon
enabled application 'mon' on pool 'images'
[root@ct ~]# ceph osd pool application enable volumes mon
enabled application 'mon' on pool 'volumes'
5.3 Ceph对接Glance
- 登录到glance所在的ct节点进行修改
- ① 备份配置文件
[root@ct ~]# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
- ② 修改对接配置文件
[root@ct ceph]# vi /etc/glance/glance-api.conf
#2054行,修改rbd格式(存储类型)
原:stores=file,http,swift
修改:stores=rbd
#2108行 修改默认存储格式
原:default_store=file
修改:default_store=rbd
#2442行 注释镜像本地存储
#filesystem_store_datadir=/var/lib/glance/images/
#2605 取消注释
rbd_store_chunk_size = 8
#2626 取消注释
rbd_store_pool = images
#2645 取消注释,指定用户
原:rbd_store_user = <None>
修改:rbd_store_user = glance
#2664 取消注释 ,确定Ceph路径如下
rbd_store_ceph_conf = /etc/ceph/ceph.conf
-----》wq
- ③ 查找glance用户,对接上面
[root@ct ~]# source /root/keystonerc_admin
[root@ct ~(keystone_admin)]# openstack user list | grep glance
| 6122b6bddb9f41cebb9c69d6581f3513 | glance |
- ④ 重启OpenStack-glance-api服务
[root@ct ~(keystone_admin)]# systemctl restart openstack-glance-api
- ⑤ 上传镜像测试
#查看镜像大小
[root@ct ~(keystone_admin)]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
3.0 TiB 3.0 TiB 3.0 GiB 0.10
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
volumes 1 0 B 0 972 GiB 0
vms 2 0 B 0 972 GiB 0
images 3 13 MiB 0 972 GiB 8
#13mib的镜像上传成功
#查看镜像
[root@ct ~(keystone_admin)]# rbd ls images
1e37a9ad-9eab-4e45-9bdc-a225ffb7c5c3
- 确认本地是否还有其他镜像
[root@ct ~(keystone_admin)]# ls /var/lib/glance/images
[root@ct ~(keystone_admin)]#
#为空是正常的
5.4 Ceph与cinder对接
- ① 备份cinder.conf 配置文件并修改
[root@ct ceph(keystone_admin)]# cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
[root@ct ceph(keystone_admin)]# vi /etc/cinder/cinder.conf
#409 修改
原:enabled_backends=lvm
修改:enabled_backends=ceph
#5261~5267 注释掉
#[lvm]
#volume_backend_name=lvm
#volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
#iscsi_ip_address=192.168.100.10
#iscsi_helper=lioadm
#volume_group=cinder-volumes
#volumes_dir=/var/lib/cinder/volumes
#在文末添加ceph段
default_volume_type= ceph
glance_api_version = 2
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = cinder
rbd_secret_uuid = 4a7e1428-c0ef-429a-8055-5ceb8baa1fbd
#以上UUID使用的是之前的
- ② 重启cinder服务
[root@ct ~(keystone_admin)]# systemctl restart openstack-cinder-volume
[root@ct ~(keystone_admin)]#
- ③ 查看cinder卷的类型有几个
root@ct ~(keystone_admin)]# cinder type-list
+--------------------------------------+-------+-------------+-----------+
| ID | Name | Description | Is_Public |
+--------------------------------------+-------+-------------+-----------+
| e518fc11-56c6-4b44-bed6-a1b7933063eb | iscsi | - | True |
+--------------------------------------+-------+-------------+-----------+
[root@ct ~(keystone_admin)]#
- ④ 命令行创建cinder的ceph存储后端相应的type
[root@ct ~(keystone_admin)]# cinder type-list
+--------------------------------------+-------+-------------+-----------+
| ID | Name | Description | Is_Public |
+--------------------------------------+-------+-------------+-----------+
| e518fc11-56c6-4b44-bed6-a1b7933063eb | iscsi | - | True |
+--------------------------------------+-------+-------------+-----------+
[root@ct ~(keystone_admin)]# cinder type-create ceph
+--------------------------------------+------+-------------+-----------+
| ID | Name | Description | Is_Public |
+--------------------------------------+------+-------------+-----------+
| 6c9242f1-5c57-4d37-b7b9-b7f9d9ab5ddd | ceph | - | True |
+--------------------------------------+------+-------------+-----------+
- ⑤ 创建卷
- ⑥ 查看创建的卷
[root@ct ~(keystone_admin)]# ceph osd lspools
1 volumes
2 vms
3 images
[root@ct ~(keystone_admin)]# rbd ls volumes
volume-6f366040-a1e2-4933-85d4-c4271cede498
- ⑦ 开启cinder服务
[root@ct ~(keystone_admin)]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
[root@ct ~(keystone_admin)]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
5.5 Ceph与Nova对接
- ① 备份配置文件(C1 、C2节点)
[root@c1 ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
[root@c1 ~]# cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
-
② 修改配置文件(C1、C2节点)
仅展示C1节点
[root@c1 ~]# vi /etc/nova/nova.conf
#6932行 取消注释,添加硬盘缓存模式
原:#disk_cachemodes =
修改:disk_cachemodes ="network=writeback"
#7072行 取消注释,修改为rbd格式
原:#images_type=default
修改:images_type=rbd
#7096行 取消注释,修改为vms
原:#images_rbd_pool=rbd
修改:images_rbd_pool=vms
#7099行 取消注释、添加ceph的配置文件路径
原:#images_rbd_ceph_conf =
修改:images_rbd_ceph_conf = /etc/ceph/ceph.conf
#7256行 取消注释、添加cinder
原:#rbd_user=<None>
修改:rbd_user=cinder
#7261行 取消注释、添加UUID
原:#rbd_secret_uuid=<None>
修改:rbd_secret_uuid=4a7e1428-c0ef-429a-8055-5ceb8baa1fbd
#搜索live_migration(593行),在此行附近添加以下内容(是否启用热迁移)
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
#7114 取消注释、添加unmap
原:#hw_disk_discard=<None>
修改:hw_disk_discard=unmap
- ③ 在俩个计算节点安装Libvirt
[root@c1 ~]# yum -y install libvirt
[root@c2 ~]# yum -y install libvirt
- ④ 编辑两个计算节点
[root@c1 ~]# vi /etc/ceph/ceph.conf
#在行尾添加以下内容
[client]
rbd cache=true
rbd cache writethrough until flush=true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20
---->wq
- ⑤ 创建配置文件目录和权限
[root@c1 ~]# mkdir -p /var/run/ceph/guests/ /var/log/qemu/
[root@c1 ~]# chown 777 -R /var/run/ceph/guests/ /var/log/qemu/
- ⑥ 将控制节点的/ect/ceph/下的密钥复制到两个计算节点
[root@ct ~(keystone_admin)]# cd /etc/ceph/
[root@ct ceph(keystone_admin)]# scp ceph.client.cinder.keyring root@c1:/etc/ceph
ceph.client.cinder.keyring 100% 64 24.2KB/s 00:00
[root@ct ceph(keystone_admin)]# scp ceph.client.cinder.keyring root@c2:/etc/ceph
ceph.client.cinder.keyring 100% 64 27.1KB/s 00:00
- ⑦ 两个计算节点重启服务
[root@c1 ~]# systemctl restart libvirtd
[root@c1 ~]# systemctl enable libvirtd
[root@c1 ~]# systemctl restart openstack-nova-compute
以上,OpenStack----多节点部署Ceph文件系统实验完成~,之后可以根据需求创建实例进行测试