恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Ceph 14.2.22离线部署实战:制作rpm本地源与三节点集群搭建

  • 首页
  • 资讯中心
  • /
  • Ceph 14.2.22离线部署实战:制作rpm本地源与三节点集群搭建

相关资讯

SQLite Schema迁移:借鉴Rust版本机制,解决升级加表崩溃问题 2026/9/2 1:47:09
Web前端期末大作业实战:选题、技术选型与审批流实现 2026/9/2 1:47:09
2026软件测试高频面试题汇总:从基础理论到自动化实践 2026/9/2 1:47:09

最新资讯

Java医院HIS系统源码拆解:从挂号到结算的核心业务与技术实现
多模态大模型Qwen3VL部署与微调实战:从环境配置到服务化落地
3DMax 8 SDK插件开发实战:环境、架构与导出实现解析
AI Agent SaaS产品功能拆解与出海落地指南
刀具磨损预测实战:从数据切分到在线报警的完整流程
QT5黄金矿工游戏开发:从物理模拟到状态机的2D游戏实战拆解

今日推荐

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案
用Python搭建搞笑语音助手:从语音识别到语音合成全教程
ROS2阿克曼底盘仿真:从运动学原理到Nav2导航集成实践

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Ceph 14.2.22离线部署实战:制作rpm本地源与三节点集群搭建

发布时间:2026/9/2 1:47:09
Ceph 14.2.22离线部署实战:制作rpm本地源与三节点集群搭建 简介面向需要在无外网或网络受限环境中部署Ceph的企业运维、存储管理员和架构师这份资源收录了Ceph 14.2.22稳定版对应的全套RPM离线安装包并针对RHEL/CentOS 7系统做了整理。压缩包共105个文件大小约111.05MB其中98个rpm包涵盖ceph-common、ceph-osd等存储核心组件及selinux-policy等基础依赖3个gz与3个bz2是仓库元数据压缩文件1个xml为仓库索引信息整体已形成可供yum/dnf直接识别的本地仓库结构。目前已有686人学习下载。借助这份离线源运维人员可在隔离网络中快速配置Ceph软件源完成分布式存储集群的批量安装、版本升级与依赖校验避免因缺少软件包导致的部署中断同时也适合需要严格管理软件版本的生产项目能显著降低离线环境下的交付难度与维护风险。 最近在帮一个客户做三节点Ceph集群的离线部署版本锁定在14.2.22操作系统是CentOS 7.9。整个过程折腾下来最有价值的产出就是这套rpm离线源。今天把整个制作思路、操作步骤和踩过的坑完整记录下来给后面要做Ceph离线部署的朋友一个可以直接照抄的作业。先交代一下背景客户现场是严格的内网隔离环境不能连外网。Ceph集群如果走在线源安装yum会拉取大量依赖包没有任何外网条件下只有先把所有rpm包下载好做成一个本地yum源才能完成三节点Mon、OSD、RBD网关的部署。Ceph 14.2.22是Nautilus分支的最后一个修复版本相比14.2.0到14.2.21修复了不少稳定性问题尤其是OSD心跳超时和RGW内存泄漏的问题所以在离线环境里选这个版本是当前Nautilus系列里比较稳的一个选择。这个内容的适用对象很明确需要在内网环境部署Ceph的运维工程师、存储交付人员以及对Ceph安装流程还不太熟、想了解yum离线源是怎么一回事的Linux爱好者。看完这篇文章你能掌握完整制作Ceph rpm离线源的流程并且知道怎么用这个源完成三节点集群的初始化。1. 为什么需要离线源背景与选型思路1.1 离线部署的核心困境Ceph的安装依赖极其复杂光是基础依赖就有lttng-ust、librdmacm、libibverbs、snappy、leveldb、gperftools等几十个包。它不像装个nginx那么简单yum装一下也就几个依赖的事情。Ceph每个组件包的依赖树非常深如果单纯下载ceph包本身而不下载它的依赖到现场执行rpm -ivh的时候会直接卡在依赖解析上报出一长串Requires: xxx的错误。所以离线源的本质是把Ceph主包和所有依赖包一次性准备好在本地建立一个yum仓库让yum在安装时从本地源解析依赖。这个思路和在家门口开一个小卖部一样不用每次都跑到几公里外的大超市去买东西。1.2 为什么选定14.2.22这个版本版本选择是有讲究的。Ceph的发布版分为几个系列Nautilus是14.x系列Octopus是15.xPacific是16.x。14.2.22是Nautilus系列中比较靠后的版本修复了大量bug尤其是以下三个问题OSD心跳超时老版本在高负载下可能出现心跳超时导致OSD被误标记为down14.2.22明显改善。RGW内存泄漏长时间运行的RGW实例内存占用会持续增长14.2.22修复了这个问题。Bluestore的空间回收删除大量对象后bluestore磁盘空间不能及时回收的问题新版有优化。对于生产环境来说稳定性远比新功能重要。14.2.22不新不旧经过大量实际部署验证是一个比较稳妥的版本。同时Nautilus系列和CentOS 7的兼容性也最好glibc和boost版本都对得上。1.3 rpm离线源 vs 容器化部署的取舍现在Ceph官方也在推容器化部署cephadm但容器化部署在纯内网环境里更麻烦需要提前准备好容器镜像、导入到本地镜像仓库还要解决docker/podman本身的离线安装问题。而且容器化部署对操作系统版本的要求更严格内核版本不够新的话cephadm可能直接拒绝运行。rpm方式虽然传统但在离线场景下反而是一条更可靠的路。打包一套rpm离线源用U盘或移动硬盘拷进内网yum本地源一配安装逻辑和在线yum完全一样没有任何黑盒子。我个人的建议是内网环境、机器数量不多比如三五个节点、对容器技术不熟悉的情况下老老实实用rpm离线源最省心。2. 在有网环境制作Ceph rpm离线源2.1 准备一台同版本系统的下载机制作离线源的第一步是找到一台可以和外网联通的机器而且操作系统版本最好和目标服务器保持一致。比如目标服务器是CentOS 7.9那下载机也最好用CentOS 7.9因为不同系统版本的依赖包有差异在CentOS 8上拉下来的部分依赖包CentOS 7可能安装不了。下载机的配置要求不高2核4G即可但硬盘空间建议给足。Ceph的rpm包加上所有依赖完整同步下来大概需要2到3GB算上createrepo生成的元数据3GB空间是底线。建议预留5GB以上后面还要留拷贝用的空间。2.2 配置Ceph源并同步rpm包在下载机上先安装Ceph的yum源仓库文件。Ceph官方提供了aliyun等国内镜像源速度更快这里用的是aliyun镜像。# 安装ceph-release包它会自动配置yum源 rpm -ivh https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ceph-release-1-1.el7.noarch.rpm安装完成后检查/etc/yum.repos.d/ceph.repo内容大致是[Ceph] nameCeph packages for $basearch baseurlhttps://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch enabled1 gpgcheck0 typerpm-md [Ceph-noarch] nameCeph noarch packages baseurlhttps://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch enabled1 gpgcheck0 typerpm-md这里需要注意把gpgcheck改为0否则后面同步时会因为GPG密钥缺失而失败。接下来用reposync把Ceph仓库的所有rpm包同步到本地目录。reposync是yum-utils包提供的工具先安装yum install -y yum-utils createrepo然后同步# 创建目录 mkdir -p /opt/ceph-offline-source cd /opt/ceph-offline-source # 同步Ceph主仓库x86_64架构 reposync -r Ceph -p /opt/ceph-offline-source # 同步noarch仓库 reposync -r Ceph-noarch -p /opt/ceph-offline-source同步过程会持续一段时间取决于网络速度。同步完成后目录结构大致是/opt/ceph-offline-source/ ├── Ceph/ │ ├── ceph-14.2.22-0.el7.x86_64.rpm │ ├── ceph-base-14.2.22-0.el7.x86_64.rpm │ ├── ceph-mds-14.2.22-0.el7.x86_64.rpm │ ├── ceph-mon-14.2.22-0.el7.x86_64.rpm │ ├── ... │ └── repodata/ └── Ceph-noarch/ ├── ceph-grafana-dashboards-14.2.22-0.el7.noarch.rpm ├── ceph-release-1-1.el7.noarch.rpm └── repodata/检查一下版本号确认是14.2.22。如果官方源里最新版不是14.2.22而是更高的比如14.2.23可以使用yum --showduplicates list ceph查看所有可用版本再用yumdownloader或直接指定版本号的方式获取yum install -y ceph-14.2.22 --downloadonly --downloaddir/opt/ceph-offline-source/ceph-14.2.222.3 用createrepo生成仓库索引同步下来的rpm包还不能直接作为yum源使用必须用createrepo生成repodata元数据。yum需要根据元数据来解析依赖关系。cd /opt/ceph-offline-source createrepo -v Ceph/ createrepo -v Ceph-noarch/生成完成后每个目录下会出现repodata/子目录里面有repomd.xml等文件。这一步就是创建了标准的 yum 仓库结构。2.4 合并依赖包并二次补充同步完Ceph官方源还不够。由于Ceph的依赖包可能会依赖其他基础软件仓库比如EPEL里的包单纯同步Ceph源后在内网安装时仍然可能遇到缺依赖的情况。为了解决这个问题我通常会再执行一次yum install的模拟把缺失的依赖补全。做法是先安装createrepo_c和yumdownloader然后执行# 从本地源构建一个临时仓库 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw --downloadonly --downloaddir/tmp/ceph-deps如果提示缺依赖就再用yumdownloader一个个补齐。最省力的方式是把之前同步的目录直接加进yum源配置然后执行yum install cephyum会尝试解析依赖并提示缺哪些包缺什么就yumdownloader什么。在实际操作中Ceph 14.2.22在CentOS 7.9上还需要手动补这几个依赖libbabeltrace、lttng-ust、python3-rbd如果用python3、liboath。这几个包在EPEL源里可以在下载机上先配置EPEL源再执行yumdownloader。全部收集好之后把/opt/ceph-offline-source整体打包tar czf ceph-14.2.22-offline-source.el7.tar.gz /opt/ceph-offline-source这个压缩包大概1.5G左右用U盘拷贝到内网机器即可。3. 离线环境配置本地源并部署3.1 内网机器配置本地repo文件将打包的离线源解压到目标服务器每台机器都需要tar xzf ceph-14.2.22-offline-source.el7.tar.gz -C /opt/然后创建本地repo文件这里以/etc/yum.repos.d/ceph-local.repo为例[ceph-local] nameceph-local baseurlfile:///opt/ceph-offline-source/Ceph enabled1 gpgcheck0 [ceph-local-noarch] nameceph-local-noarch baseurlfile:///opt/ceph-offline-source/Ceph-noarch enabled1 gpgcheck0注意如果还有其他补充依赖放在别的目录也要一并写进去。执行yum clean all yum makecache让yum重建缓存然后验证yum list | grep ceph能看到c14.2.22开头的包说明源配置成功。3.2 三节点Mon和OSD部署三节点集群中每台机器都配置好本地源后就可以开始安装了。在每台节点上执行yum install -y ceph ceph-radosgw这个命令会一次性安装mon、osd、mds、radosgw等所有组件因为本地源已经把依赖都放齐了安装过程中应该不会报错。如果之前依赖没补全这里会报Requires: xxx的错误缺什么就从下载机上用yumdownloader拉下来再拷贝过来装。安装完成后初始化集群# 在三台节点上配置hosts解析 echo 192.168.1.11 node1 /etc/hosts echo 192.168.1.12 node2 /etc/hosts echo 192.168.1.13 node3 /etc/hosts # 在node1上创建ceph.conf mkdir -p /etc/ceph cat /etc/ceph/ceph.conf EOF [global] fsid $(uuidgen) mon_initial_members node1,node2,node3 mon_host 192.168.1.11,192.168.1.12,192.168.1.13 public_network 192.168.1.0/24 cluster_network 192.168.1.0/24 osd_pool_default_size 2 osd_pool_default_min_size 1 EOF # 初始化monitor ceph-mon --cluster ceph --mkfs -i node1 --keyring /etc/ceph/ceph.mon.keyring # 启动ceph-mon systemctl start ceph-monnode1三台节点的mon都起来之后用ceph -s查看集群状态monmap应该能看到3个mon都在。OSD部分的部署由于每台机器的磁盘配置不同一般是单独格式化磁盘然后用ceph-volume lvm create准备好OSD再将OSD加入集群。3.3 配置客户端访问RBD集群起来之后客户端如果需要挂载块设备还要创建pool和用户认证。操作如下# 在管理节点创建pool ceph osd pool create rbd 128 128 # 创建客户端用户仅允许访问rbd池 ceph auth get-or-create client.rdbuser mon allow r osd allow class-read object_prefix rbd_children, allow rwx poolrbd -o /etc/ceph/ceph.client.rdbuser.keyring # 拷贝keyring和conf到客户端 scp /etc/ceph/ceph.conf /etc/ceph/ceph.client.rdbuser.keyring rootclient:/etc/ceph/ # 客户端挂载rbd设备 rbd create --pool rbd --image test-image --size 10G rbd map --pool rbd --image test-image --name client.rdbuser mkfs.xfs /dev/rbd0 mount /dev/rbd0 /mnt/ceph-rbd这里有个小坑客户端如果找不到rbd命令说明客户端机器没有装ceph-common包。在离线环境下同样把离线源拷一份到客户端机器上然后用yum install -y ceph-common安装即可。4. 运维场景掉盘、OSD恢复与池容量限制4.1 磁盘故障后的OSD处理Ceph运行中掉盘是比较常见的故障。表现为ceph -s中出现1 osd down或1 osd destroyed。处理思路是把故障OSD从集群中剔除ceph osd out osd.3 ceph osd crush remove osd.3 ceph osd rm osd.3 ceph auth del osd.3对应的systemd服务禁用防止重启后自动拉起systemctl disable ceph-osd3更换新盘后重新创建OSDceph-volume lvm zap /dev/sdb ceph-volume lvm create --bluestore --data /dev/sdb4.2 数据恢复与回填OSD重新上线后PG会进入peering和backfilling状态此时可以观察ceph pg stat ceph osd df正常情况下回填速度由osd_max_backfills控制。如果回填太慢可以临时调高这个参数ceph tell osd.* injectargs --osd-max-backfills 4如果因为掉盘导致数据只有一份ceph -s会提示Degraded data redundancy此时要立刻检查剩余OSD的健康状态避免二次故障。4.3 限制池容量防止写满Ceph pool如果写满整个集群会进入full状态所有IO都会被阻塞这是生产事故级别的问题。所以提前限制池容量非常有必要。在Nautilus版本中可以通过ceph osd pool set-quota设置pool的最大容量ceph osd pool set-quota rbd max_bytes 107374182400这会把rbd池限制为100GB。当使用量超过这个阈值时Ceph会拒绝新的写入并返回Quota exceeded错误。对于业务方来说看到这个错误总比整个集群挂掉好得多。5. 常见问题与排查技巧实录5.1 没找到rpm命令这个问题的原因很直接系统里没有安装rpm包管理器。一般是精简安装的Linux系统比如最小化安装的CentOS或裁剪过的系统才会遇到。解决办法用yum install -y rpm安装即可。但在纯离线环境里就会陷入鸡生蛋的困境要装rpm就要用yum但yum没有rpm就运行不起来。我的经验是在做离线源打包时就把rpm、yum、yum-utils这几个基础包也放进去拷贝到内网后先装rpm再配置源。应急做法直接用tar把另一台正常机器上的/usr/bin/rpm和/usr/lib64/librpm*拷贝过来放到对应目录然后用ldconfig刷新动态链接库缓存rpm命令就能用了。5.2 安装时依赖缺失离线安装最怕的是依赖缺失通常报错格式是Error: Package: ceph-mon-14.2.22-0.el7.x86_64 (ceph-local) Requires: libbabeltrace.so.1()(64bit)排查思路是在下载机上执行以下命令查看这个文件到底是哪个包提供的yum provides */libbabeltrace.so.1然后用yumdownloader把对应包下载到离线源目录重新createrepo再拷贝到内网。我在实际做14.2.22源时出现过好几次liboath.so.0和librabbitmq.so.4缺失的问题都是通过这种方式补全的。5.3 rpm模糊查询与依赖关系排查维护离线源时rpm命令的查询技巧特别重要。几个实用的# 查询某个已安装的rpm包是什么时候装的排查误装干扰 rpm -qa --last | head -20 # 反查某个文件属于哪个rpm包 rpm -qf /etc/ceph/ceph.conf # 查看某个rpm包的依赖 rpm -qpR ceph-common-14.2.22-0.el7.x86_64.rpm # 查看某个rpm包提供了哪些文件 rpm -qpl ceph-common-14.2.22-0.el7.x86_64.rpm # 模糊查询包含关键字的rpm包 rpm -qa | grep -i librbd在没有yum网络源的离线环境里rpm -qpR是排查依赖问题最核心的命令。针对每个安装失败的包先rpmlib依赖和常规依赖分开看版本号里的rpmlib(CompressedFileNames)是rpm自身的特性限制不用管真正要解决的是libxxx.so.1()这类动态库依赖。6. 离线源运维的几点经验最后分享几个我测试过程中的观察。第一离线源在传输过程中最好用sha256sum做个校验U盘拷贝时偶尔出现的文件损坏会让yum报repomd.xml解析失败排查起来很费时间。第二yum源目录的权限不能太严chmod -R 755就行太严会导致其他低权限用户无法读取提示Could not open metadata file。第三如果现场有多套不同版本的Ceph集群建议把源目录做成ceph-14.2.22、ceph-15.2.17这样带版本号的目录结构同时在repo文件里启用或禁用对应仓库切换升级时非常方便。踩过几次坑之后我现在的做法是每次执行完离线源同步都会在下载机上先用yum install --downloadonly方式装一遍所有Ceph组件确认没有任何依赖缺失后再打包。这个自检步骤能过滤掉九成以上的现场安装问题。总之离线源这事一次性做好后面运维能省下大把时间。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号