
简介这份《OpenStack Ceph分布式存储安装测试报告》面向云计算运维工程师、存储架构学习者及OpenStack平台部署人员聚焦开源云平台与分布式存储的集成落地问题。报告从云计算基础概念切入梳理OpenStack与VMware的差异系统讲解Ceph的组件构成、CRUSH映射、强一致性与容错机制并给出在OpenStack中选择Ceph作为后端存储的考量依据最后附上本地YUM源配置与测试主机规划等实操内容。资源包内含1个docx文档约876KB结构完整、目录清晰便于按章节检索学习。目前已有254人学习下载适合希望理解OpenStack与Ceph结合原理、掌握部署测试思路的读者参考也可作为实际项目选型与实施前的技术调研材料。1. 从一份安装测试报告说起OpenStack 接 Ceph 到底能解决什么如果你正在搭私有云大概率绕不开一个选择虚拟机的镜像、云硬盘、快照到底放哪。用本地 LVM 凑合能跑但一旦要在线迁移、要扩容、要保证数据不丢本地盘立刻变成瓶颈。这份《OpenStack Ceph 分布式存储安装测试报告》记录的就是把 Ceph 作为 OpenStack 统一后端存储的完整落地过程——从本地 YUM 源、控制节点、计算节点一路装到 Ceph 集群最后把 Glance、Cinder、Nova 三个服务的存储后端全部切到 Ceph并验证从云硬盘引导虚机和在线迁移。它适合两类人一是手里有几台物理机或虚机、想按步骤复现一套 OpenStackCeph 环境的运维二是已经在跑 OpenStack、想把后端从本地存储换成分布式存储的工程师。报告本身是文档形态不是脚本包但目录结构非常完整每一步都有配置项和验证点照着走能少踩不少坑。下面我按「是什么 → 怎么装 → 坑在哪 → 怎么验证」的顺序把它拆开讲。2. 装之前先想清楚为什么是 Ceph而不是本地 LVM 或 Swift2.1 Ceph 的架构决定了它适合做统一后端Ceph 的核心是 RADOSReliable Autonomic Distributed Object Store上面架三层接口对象存储 RGW、块存储 RBD、文件系统 CephFS。OpenStack 用到的其实是 RBD 这一层——Glance 存镜像、Cinder 存云硬盘、Nova 存虚机磁盘全部走 RBD。数据分布靠 CRUSH 算法不是查表而是每个客户端自己算数据该放哪个 OSD。这意味着集群扩容时不需要中心元数据节点重新分配加 OSD 就能线性扩展。组件上要记住四个角色MON 维护集群状态图Cluster MapOSD 真正存数据MDS 只在用 CephFS 时才需要RGW 提供 S3/Swift 兼容接口。做 OpenStack 后端时MDS 和 RGW 可以先不装MON OSD 就够。强一致性这块Ceph 的写操作默认要等主副本写完、再从副本确认后才返回配合 PGPlacement Group和 CRUSH 规则保证副本落在不同故障域。这就是为什么它敢做虚机磁盘后端——虚机迁移时数据一致性不能出问题。2.2 和本地 LVM、Swift 的取舍本地 LVM 的问题是数据绑在计算节点上虚机在线迁移要么共享存储、要么块迁移前者需要额外存储、后者慢且中断。Swift 是对象存储适合存镜像和备份但没法直接当块设备给虚机用。Ceph RBD 同时解决这两点块设备语义 共享访问 副本冗余。报告里 1.8 节专门写了「在 OpenStack 中选择 Ceph 作为后端存储的考虑」核心就三条一是统一镜像、卷、虚机磁盘一套存储搞定二是可扩展加盘加节点不影响在线业务三是成本x86 服务器加 SATA/SAS 盘就能堆出可用集群不依赖专用存储阵列。2.3 主机规划与前置条件报告 1.10 节给了测试主机规划这是动手前必须定死的。常见做法是至少三台 MON奇数保证仲裁OSD 节点可以和 MON 复用也可以分开。网络建议存储流量和业务流量分开至少千兆起步万兆更稳。动手前先确认这几件事所有节点主机名解析正确/etc/hosts里 IP 和主机名一一对应别依赖 DNS。时间同步必须做MON 之间时间偏差过大会导致集群异常报告 3.6 节用 NTP 解决。操作系统内核版本要够报告 3.3 节专门升级内核Ceph 对内核有最低要求。防火墙和 SELinux 按需关闭或放行测试环境直接关掉省事。提示主机规划一旦定下来后面 ceph-deploy 的节点名、MON 地址、OSD 盘符都基于它中途改主机名是血泪经验级的翻车点。3. 基础环境落地本地 YUM 源、系统配置与依赖安装3.1 本地 YUM 源离线环境的第一道坎生产环境经常没有外网报告第二章专门讲本地 YUM 源。思路是把所有 RPM 包下载到一台服务器用 createrepo 生成仓库元数据其他节点指向它。# 1. 安装 createrepo 工具 yum install -y createrepo # 2. 把所有 rpm 包放到 /var/www/html/repo 目录下 mkdir -p /var/www/html/repo cp /path/to/rpms/*.rpm /var/www/html/repo/ # 3. 生成仓库元数据 createrepo /var/www/html/repo # 4. 更新元数据后续加包后执行 createrepo --update /var/www/html/repo逻辑说明createrepo会扫描目录下所有 RPM生成repodata目录里面是包索引。客户端 yum 靠这个索引找包。参数上--update只更新变化部分比全量重建快适合增量加包。客户端配置# /etc/yum.repos.d/local.repo [local] nameLocal Repository baseurlhttp://yum-server-ip/repo enabled1 gpgcheck0baseurl指向仓库服务器gpgcheck0测试环境省去签名校验生产环境建议开启并导入 GPG key。配完执行yum clean all yum makecache刷新缓存。3.2 操作系统层配置hosts、环境变量、网桥报告第三章把系统配置拆得很细。/etc/hosts要写全所有节点包括 controller、compute、ceph 各角色。环境变量这块主要是HOSTNAME、LANG之类保证各节点一致。网桥配置是重点OpenStack 的 Neutron 和 Nova 网络都依赖网桥。手工配网桥常见做法是改/etc/sysconfig/network-scripts/ifcfg-*把物理网卡桥接到 br0 或 br-ex。报告 3.4 节给了手工配置步骤核心是物理口不配 IP、网桥配 IP。# 物理网卡 ifcfg-eth0 DEVICEeth0 TYPEEthernet ONBOOTyes BRIDGEbr0 # 网桥 ifcfg-br0 DEVICEbr0 TYPEBridge ONBOOTyes BOOTPROTOstatic IPADDR192.168.1.10 NETMASK255.255.255.0 GATEWAY192.168.1.1参数说明BRIDGEbr0把物理口挂到网桥TYPEBridge声明这是网桥设备。改完重启网络用brctl show确认物理口在网桥下。这一步配错后面 Neutron 网络直接不通。3.3 关闭无用服务与 NTP 同步报告 3.5 节关掉不必要的服务典型的有 NetworkManager、firewalld、SELinux。NetworkManager 和传统 network 服务冲突测试环境建议停掉。NTP 同步用 chrony 或 ntpd所有节点指向同一时间源ntpq -p能看到同步状态。注意时间不同步是 Ceph 集群最常见的玄学故障来源MON 之间心跳超时、OSD 频繁 up/down先查时间。4. 控制节点与计算节点OpenStack 各组件怎么装、怎么连4.1 控制节点从 MySQL 到 Keystone 的依赖顺序报告第四章按依赖顺序装控制节点这个顺序不能乱。先 MySQL 存各服务的库再 Qpid 做消息队列然后 Keystone 认证之后 Glance、Nova、Dashboard、Cinder 依次上。MySQL 安装后要初始化 root 密码并给各服务建库建用户。Keystone 装完要初始化数据库、配令牌驱动。报告 4.4.3 节配置令牌早期版本用 PKI 或 UUID现在多用 Fernet配置项在keystone.conf的[token]段。# 安装 keystone 并配置 mysql 连接 yum install -y openstack-keystone python-keystoneclient # 编辑 /etc/keystone/keystone.conf [database] connection mysqlpymysql://keystone:KEYSTONE_DBPASScontroller/keystone [token] provider fernet # 初始化数据库 su -s /bin/sh -c keystone-manage db_sync keystone # 初始化 Fernet 密钥 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone逻辑说明db_sync建表fernet_setup生成令牌加密密钥。connection里的用户名密码要和 MySQL 里建的一致。装完用keystone-manage db_sync验证无报错再启动服务。Glance、Nova、Cinder 的安装套路类似装包 → 改配置连 MySQL 和 Keystone →db_sync→ 注册服务端点 → 启动。报告 4.7 到 4.10 节把每个服务的配置项都列了照着改就行。关键点是每个服务都要在 Keystone 里注册 endpoint否则 Dashboard 里看不到。4.2 计算节点Nova-Compute 与网络报告第五章装计算节点核心是 Nova-Compute 和 Nova-Network。计算节点要连控制节点的 MySQL、Qpid、Keystone配置项在nova.conf里指向控制节点地址。# /etc/nova/nova.conf 计算节点关键配置 [DEFAULT] rabbit_host controller auth_strategy keystone [keystone_authtoken] auth_uri http://controller:5000 auth_url http://controller:35357 memcached_servers controller:11211 auth_type password project_domain_name default user_domain_name default project_name service username nova password NOVA_PASS [database] connection mysqlpymysql://nova:NOVA_DBPASScontroller/nova参数说明rabbit_host指向消息队列auth_uri和auth_url是 Keystone 的公共和管理端点memcached_servers缓存令牌。计算节点装完用nova-manage service list或openstack compute service list看服务是否 up。4.3 验证控制节点和计算节点服务状态报告 4.11 和 5.6 节都强调检查服务状态。控制节点上systemctl status逐个看或者用openstack service list、openstack endpoint list确认注册。计算节点上确认 nova-compute 进程在且能连上控制节点。常见做法是装完先跑一遍openstack token issue验证认证再openstack image list、openstack volume list验证各服务 API 通。这一步过了再进 Ceph 集成。5. Ceph 集群部署与 OpenStack 对接避坑与排查5.1 ceph-deploy 装集群MON 和 OSD 的初始化报告第七章装 Ceph用 ceph-deploy 工具。先装 ceph-deploy再ceph-deploy new生成配置然后ceph-deploy mon create-initial初始化 MON最后ceph-deploy osd create加 OSD。# 安装 ceph-deploy yum install -y ceph-deploy # 创建工作目录 mkdir /my-cluster cd /my-cluster # 初始化集群配置指定 MON 节点 ceph-deploy new ceph-node1 ceph-node2 ceph-node3 # 安装 Ceph 包到各节点 ceph-deploy install ceph-node1 ceph-node2 ceph-node3 # 初始化 MON ceph-deploy mon create-initial # 准备 OSD 磁盘假设 /dev/sdb ceph-deploy osd create --data /dev/sdb ceph-node1逻辑说明new生成ceph.conf和密钥环install在各节点装包mon create-initial启动 MON 并生成 admin 密钥osd create把裸盘格式化成 OSD。参数上--data指定数据盘生产环境建议数据盘和日志盘分开--journal。装完用ceph -s看集群状态HEALTH_OK才算正常。ceph osd tree看 OSD 分布。5.2 避坑Ceph 部署与对接的五个常见问题现象一ceph -s显示HEALTH_WARN提示clock skew。原因MON 节点之间时间不同步。 解决所有节点配 NTPntpq -p确认同步偏差控制在毫秒级。现象二OSD 创建后一直downceph osd tree里权重为 0。原因磁盘有残留分区或文件系统ceph-deploy 没清干净。 解决ceph-deploy disk zap ceph-node1 /dev/sdb先擦盘再重新 create。现象三OpenStack 配置 Ceph 后端后创建云硬盘卡在creating。原因Cinder 的ceph.conf路径不对或 keyring 权限不对。 解决确认/etc/cinder/ceph.conf存在且 Cinder 用户可读keyring 文件权限 644rbd_user和rbd_secret_uuid配对。现象四从云硬盘引导虚机失败Nova 报rbd: image not found。原因Glance 和 Nova 用的 Ceph 池不一致或认证用户没权限。 解决统一images池和volumes池的配置确认glance和nova用户在 Ceph 里有对应权限。现象五虚机在线迁移卡住或失败。原因Nova 没配live_migration相关参数或 Ceph 后端没启用。 解决nova.conf里配live_migration_flag确认虚机磁盘在 Ceph 上而非本地。提示Ceph 对接 OpenStack 时ceph.conf和 keyring 要复制到所有计算节点和控制节点漏一个节点就有一个服务起不来。5.3 配置 Glance、Cinder、Nova 使用 Ceph 后端报告第八章讲对接。核心是给每个服务配 Ceph 客户端认证然后改配置指向 Ceph。Glance 配置# /etc/glance/glance-api.conf [glance_store] stores rbd default_store rbd rbd_store_pool images rbd_store_user glance rbd_store_ceph_conf /etc/ceph/ceph.conf rbd_store_chunk_size 8Cinder 配置# /etc/cinder/cinder.conf [DEFAULT] enabled_backends rbd glance_api_version 2 [rbd] volume_driver cinder.volume.drivers.rbd.RBDDriver 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 uuidNova 配置# /etc/nova/nova.conf [libvirt] images_type rbd images_rbd_pool vms images_rbd_ceph_conf /etc/ceph/ceph.conf rbd_user nova rbd_secret_uuid uuid参数说明rbd_store_pool指定池名rbd_user是 Ceph 认证用户rbd_secret_uuid是 libvirt 用的密钥 UUID要和ceph auth get-key对应。rbd_max_clone_depth控制克隆深度太深影响性能。配完重启各服务用openstack image create传镜像、openstack volume create建卷、openstack server create起虚机验证。6. 验证与进阶从云硬盘引导虚机、在线迁移和性能调优6.1 从 Ceph 云硬盘引导虚机的完整验证报告 8.4 节给了验证流程上传镜像到 Glance → 创建云硬盘 → 从云硬盘引导虚机 → 挂载云硬盘。这套流程走通说明 Glance、Cinder、Nova 三个服务的 Ceph 后端都正常。# 上传镜像 openstack image create --disk-format qcow2 --container-format bare \ --file cirros.qcow2 cirros # 创建云硬盘从镜像 openstack volume create --image cirros --size 10 bootable-vol # 从云硬盘引导虚机 openstack server create --flavor m1.tiny --volume bootable-vol test-vm # 查看虚机状态 openstack server list逻辑说明--image让 Cinder 从 Glance 镜像克隆出卷--volume让 Nova 从卷引导。如果卡住查/var/log/cinder/volume.log和/var/log/nova/nova-compute.log。6.2 虚机在线迁移的配置与测试报告第九章讲在线迁移。前提是虚机磁盘在共享存储Ceph上计算节点之间能互通。# /etc/nova/nova.conf 计算节点 [libvirt] live_migration_flag VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_TUNNELLED参数说明VIR_MIGRATE_LIVE是在线迁移VIR_MIGRATE_TUNNELLED走隧道避免网络配置问题。配完重启 nova-compute用openstack server migrate --live server测试。迁移过程中用openstack server show看状态virsh list在源和目标节点看虚机。迁移失败常见原因是目标节点资源不足或网络不通。6.3 性能调优与验证方法报告 7.4 节提了 Ceph 性能优化。几个实操点调优项配置位置建议值说明OSD 日志盘ceph-deploy osd create独立 SSD日志和数据分开提升写性能PG 数量ceph osd pool set按 OSD 数计算公式OSD 数 × 100 / 副本数副本数ceph osd pool set3生产环境至少 3 副本网络ceph.conf万兆存储流量和业务流量分开内核参数/etc/sysctl.conf调大文件句柄fs.file-max和ulimit验证方法用rados bench测吞吐和延迟rbd bench测块设备性能ceph osd perf看各 OSD 延迟。调优后对比数据别凭感觉。从那以后我每次配 Ceph 后端都强制先跑一遍ceph -s确认HEALTH_OK再动 OpenStack 配置。这份报告的价值在于它把安装、配置、验证串成了一条线照着走能省掉大量试错。希望帮到你。本文还有配套的精品资源点击获取