Ceph Linux部署实战:5分钟搭建可读写最小集群

发布时间:2026/10/15 19:28:17
Ceph Linux部署实战:5分钟搭建可读写最小集群 简介本资源是一份完整的Ceph分布式存储系统中文技术文档合集面向Linux系统运维工程师、云平台架构师及存储方向开发者帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储RGW、块设备RBD、文件系统CephFS三大应用场景从节点初始化、网络规划到集群搭建全流程提供中文实践指导。压缩包共482个文件以346个rst格式技术文档为主干辅以76个txt配置说明、18个png架构图、9个conf模板文件、8个sh自动化脚本及少量py工具和HTML主题文件结构完整、即查即用整体仅4.04MB轻量便携。已有421人学习下载内容聚焦生产环境典型配置如rgw.conf、ceph.conf、disk.conf等含多版本适配说明与主题样式定制支持是快速上手Ceph部署与二次配置的高实用性参考材料。1. 这不是“又一个Linux命令手册”Ceph中文文档到底能帮你解决什么实际问题你刚听说Ceph可能是在同事一句“我们对象存储用Ceph搭的”里也可能是在招聘JD里看到“熟悉Ceph集群运维”时心头一紧。但翻开源码仓库或英文官网满屏的RADOS、CRUSH、PG、mon/osd/mgr——像走进一间没开灯的机房连电闸在哪儿都摸不着。别急这本《Linux-Ceph中文文档》不是让你从零造轮子的学术论文也不是只给资深SRE看的故障排查日志。它是一份专为Linux环境下的真实使用者准备的“操作地图”当你需要在三台旧服务器上快速搭出一个能存照片、备份数据库、甚至跑起轻量AI模型缓存的分布式存储系统时它告诉你第一步该敲哪条命令、配置文件哪一行不能改、重启服务前必须确认的三个状态是什么。它不讲“CAP理论如何影响Ceph设计”但会说“如果你用默认配置在单节点上测试为什么ceph -s永远显示HEALTH_WARN”。适合所有正在用Linux、手头有几台机器、不想被英文文档卡在ceph-deploy第一步的新手——哪怕你昨天才学会ls和cd。2. 先搞懂一个核心事实Ceph不是“软件”而是一套可拆解、可组合的存储服务拼图Ceph常被误认为是一个“装完就能用”的黑匣子就像安装MySQL一样。但真相是Ceph本质是一组协同工作的守护进程daemon每个进程只负责存储链条中的一环合起来才构成完整能力。理解这点是避免后续所有“为什么配了不生效”“为什么服务起不来”类问题的起点。下面用你每天都在接触的东西来类比2.1 想象一下你家的快递收发站Ceph的四大核心角色MONMonitor→ 相当于小区门岗物业前台它不存数据只记“谁在干活、干得怎么样、规则有没有变”。比如当前有3个OSD在线、PG映射表最新版本是v42、集群健康状态是HEALTH_OK。所有其他组件都必须先问它“现在规矩是什么”才能行动。没有MON整个集群就失去方向感连自己该往哪儿写数据都不知道。OSDObject Storage Daemon→ 相当于快递柜里的每一个格子物理磁盘真正存数据的地方。每块硬盘或分区启动一个OSD进程它负责把用户数据切片、加校验、按规则分散存到自己肚子里并定时向MON汇报“我这儿还活着磁盘没坏空间还剩30%”。一个OSD挂了数据不会丢——因为Ceph默认存3份其他OSD会自动补全。MGRManager→ 相当于智能物业APP后台不参与数据读写但提供监控图表、性能分析、REST API接口。你用浏览器打开http://mgr-ip:7000看到的漂亮仪表盘背后全是它在干活。新手可以先不启MGR等集群稳了再加不影响基本读写。RGWRADOS Gateway→ 相当于快递站开通的“微信小程序”把底层Ceph存储变成你熟悉的S3兼容接口。你用aws s3 cp、用Python的boto3库、甚至用CosBrowser背后都是RGW在翻译成Ceph能听懂的语言。没RGW你只能用rados put这种命令行工具存对象有了RGW你就能像用阿里云OSS一样操作。提示初学者最容易犯的错就是以为“装完ceph包就等于装好了Ceph”。其实apt install ceph只是装了一堆二进制程序真正的集群要靠你手动或用工具如cephadm把MON、OSD一个个拉起来、配好网络、互相认领才算真正启动。2.2 为什么必须强调“Linux环境”——Ceph对内核和文件系统的硬性依赖Ceph不是Java程序它深度绑定Linux内核特性。这意味着内核版本不能太老Ceph Quincy17.x要求Linux 5.4否则OSD可能因io_uring缺失而性能暴跌。你用Ubuntu 20.04内核5.4刚好够用但CentOS 7内核3.10就必须升级或打补丁。文件系统推荐XFSEXT4对大文件并发写支持弱OSD日志容易卡住XFS原生支持大目录、高吞吐是官方唯一明确推荐的生产文件系统。格式化命令不是mkfs.ext4 /dev/sdb而是mkfs.xfs -f /dev/sdb。必须关闭透明大页THPLinux默认开启的THP会让OSD内存分配变慢引发slow ops告警。关掉它只需两行echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag并写入/etc/rc.local确保重启生效。这是新手部署后ceph -s总显示HEALTH_WARN的头号元凶。2.3 中文文档的价值把英文文档里“理所当然”的前提变成你能执行的步骤英文文档常写“Ensure your clocks are synchronized across all nodes.”确保所有节点时间同步——但它不会告诉你用chrony还是ntpd答chrony因它在虚拟机和网络抖动环境下更稳chrony.conf里必须加哪三行答pool pool.ntp.org iburstmakestep 1.0 -1rtcsync如何验证真的同步了答chronyc tracking看Last offset是否5mschronyc sources -v看^*标记的源是否活跃这本中文文档就把这些“文档里省略的、但实操中必填的坑”一条条列成带注释的命令、可复制的配置块、失败时的检查清单。它不替代英文文档而是给你一把能拧开第一颗螺丝的扳手。3. 第一个实战用3台虚拟机或3个Docker容器5分钟搭出可读写的最小Ceph集群别被“分布式”吓住。Ceph允许你在单机上模拟多节点——只要网络隔离、端口不冲突。我们用最轻量的方式3个Ubuntu 22.04虚拟机或Docker容器每台只跑1个MON1个OSD不启MGR/RGW目标是让rados put成功、rados get取回。这是所有后续学习的“Hello World”。3.1 准备工作三台机器的基础配置每台都要执行假设三台机器IP分别为192.168.10.10(node1),192.168.10.11(node2),192.168.10.12(node3)。先统一做三件事# 1. 关闭swapCeph禁止swap否则OSD直接拒绝启动 sudo swapoff -a sudo sed -i /swap/d /etc/fstab # 2. 关闭THP前面提过的头号性能杀手 echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag # 写入开机脚本Ubuntu 22.04用systemd方式 echo echo never /sys/kernel/mm/transparent_hugepage/enabled | sudo tee -a /etc/rc.local echo echo never /sys/kernel/mm/transparent_hugepage/defrag | sudo tee -a /etc/rc.local sudo chmod x /etc/rc.local # 3. 安装Ceph核心包Quincy版稳定且文档最全 sudo apt update sudo apt install -y ceph ceph-common cephadm解释cephadm是Ceph官方推荐的集群部署工具它用容器封装所有组件避免环境依赖冲突。ceph-common提供ceph,rados,rbd等客户端命令。这里没装ceph-mgr-dashboard等可选包因为我们先求“通”不求“全”。3.2 在node1上初始化集群并部署MON所有操作在192.168.10.10node1上执行# 创建集群配置目录cephadm会把所有东西放这里 sudo mkdir -p /etc/ceph # 生成初始配置和密钥环--cluster-network指定内网通信网段防外网暴露 sudo cephadm bootstrap --mon-ip 192.168.10.10 --cluster-network 192.168.10.0/24 # 等待约2分钟看到Bootstrap complete.即成功 # 此时会自动生成/etc/ceph/ceph.conf和/etc/ceph/ceph.client.admin.keyring关键参数说明--mon-ip 192.168.10.10告诉cephadm“MON服务绑定在这个IP上”其他节点必须能ping通它。--cluster-network 192.168.10.0/24指定OSD之间数据同步用的私有网段必须和你的实际内网一致否则OSD无法加入。成功后你会看到类似You can access the Ceph Dashboard at http://192.168.10.10:8443/的提示——先别点因为MGR还没部署这个链接会404。我们继续。3.3 在node2和node3上添加OSD每台执行一次回到192.168.10.11node2执行# 将node1的公钥复制过来cephadm用SSH管理节点 sudo ssh-copy-id -f -i /etc/ceph/ceph.pub root192.168.10.10 # 在node1上执行把node2加入集群并在其上部署OSD假设/dev/sdb是空盘 sudo ceph orch host add node2 192.168.10.11 sudo ceph orch daemon add osd node2:/dev/sdb同样在192.168.10.12node3上sudo ssh-copy-id -f -i /etc/ceph/ceph.pub root192.168.10.10 # 回到node1执行 sudo ceph orch host add node3 192.168.10.12 sudo ceph orch daemon add osd node3:/dev/sdb注意/dev/sdb必须是未挂载、无文件系统的裸盘。如果已用先sudo umount /dev/sdb*并sudo wipefs -a /dev/sdb清空。OSD部署过程约1-2分钟期间ceph -s可能显示osds: 0 up, 0 in稍等即可。3.4 验证集群状态并写入第一个对象在node1上执行# 查看集群概览耐心等1分钟直到HEALTH_OK ceph -s # 应该看到类似 # cluster: # id: a1b2c3d4-... # health: HEALTH_OK # services: # mon: 1 daemons, quorum node1 (age 5m) # mgr: no daemons active # osd: 2 osds: 2 up (since 2m), 2 in (since 2m) ← 关键up和in都为2如果osd行显示2 up, 2 in说明两个OSD已就位。现在测试读写# 创建一个测试池名字叫mytest副本数设为2因只有2个OSD ceph osd pool create mytest 32 32 replicated ruleset0 # 设置该池的最小副本数为2否则写入会因达不到3副本而失败 ceph osd pool set mytest size 2 # 用rados命令存一个文件 echo Hello from Ceph! | rados -p mytest put hello.txt - # 读出来验证 rados -p mytest get hello.txt - # 输出应为Hello from Ceph!为什么size 2因为Ceph默认要求size3存3份但我们只部署了2个OSD达不到3副本写入会卡住。size 2表示“存2份”刚好匹配现有OSD数量。这是新手第一次rados put超时的最常见原因。4. 新手必踩的5个坑现象、原因、一招解决部署Ceph最痛苦的不是学不会而是卡在某个报错上反复折腾。以下是根据大量新手实操记录整理的高频问题每一条都来自真实翻车现场4.1 现象ceph -s显示HEALTH_WARN且有clock skew detected警告原因三台机器时间不同步超过0.05秒。Ceph对时间极其敏感MON之间时间差过大会导致选举失败、OSD频繁掉线。解决# 在所有节点执行用chrony非ntpd sudo apt install -y chrony sudo systemctl enable chrony sudo systemctl restart chrony # 等2分钟然后验证 chronyc tracking | grep Last offset # 输出应类似Last offset: -0.000012123 seconds # 如果0.05检查防火墙是否放行UDP 123端口或换国内NTP源如cn.pool.ntp.org4.2 现象ceph orch daemon add osd node2:/dev/sdb执行后ceph -s仍显示0 osd原因/dev/sdb已有文件系统如EXT4/XFS或已被LVM占用cephadm拒绝在非裸盘上创建OSD。解决# 在node2上彻底清空磁盘警告此操作不可逆 sudo umount /dev/sdb* sudo wipefs -a /dev/sdb # 再次运行添加OSD命令 sudo ceph orch daemon add osd node2:/dev/sdb4.3 现象rados put命令卡住不动或报错RADOS timed out原因OSD未真正进入in状态虽显示up但未被MON接纳进集群。常见于--cluster-network网段填错导致OSD无法与MON通信。解决# 在node2上检查OSD日志找最新日志文件 sudo ls -t /var/log/ceph/ceph-osd.*.log | head -1 # 查看最后10行 sudo tail -10 $(sudo ls -t /var/log/ceph/ceph-osd.*.log | head -1) # 如果看到 failed to fetch mon config 或 connection refused立即检查 # 1. node2能否ping通node1的192.168.10.10 # 2. node1的防火墙是否放行6789MON端口执行sudo ufw allow 67894.4 现象ceph -s显示HEALTH_WARN提示Reduced data availability: 1 pg inactive原因PGPlacement Group处于inactive状态通常因OSD启动后未完成数据映射初始化。这不是严重错误但需等待。解决# 查看具体哪个PG卡住 ceph pg stat # 如果看到类似 100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/100/1......超长数字说明PG正在初始化。 # 等待5-10分钟再执行 ceph -s通常会自动恢复。4.5 现象部署后无法用ceph dashboard浏览器打开空白或报错原因MGR模块未启用或Dashboard插件未开启。我们前面刻意跳过了MGR所以这是预期行为不是故障。解决# 如果你确实需要Dashboard只需在node1上执行 sudo ceph mgr module enable dashboard sudo ceph dashboard create-self-signed-cert sudo ceph dashboard set-login-credentials admin admin123 # 然后访问 http://192.168.10.10:8443用admin/admin123登录 # 但再次强调对新手先确保rados put/get能跑通再加Dashboard。5. 下一步学什么——从“能跑”到“敢用”的三步进阶路径当你已经成功在三台机器上跑通rados put/get恭喜你跨过了Ceph最陡的入门坡但别急着去配RGW或对接Kubernetes——那会把你重新拖回概念迷宫。我建议按下面这个完全基于动手反馈的渐进路径走每一步都解决一个具体问题每一步都有明确的验证方式5.1 第一步把“测试池”变成“可用池”——学会管理真实数据你现在用的mytest池是临时的没有数据保护策略。下一步要让它真正承载业务数据目标创建一个名为backup-pool的池要求数据存2份size 2即使一块硬盘损坏数据不丢min_size 1自动清理旧备份设置pg_autoscale_mode为on让Ceph根据数据量自动调优PG数操作清单在node1执行# 创建池并设副本 ceph osd pool create backup-pool 64 64 replicated ceph osd pool set backup-pool size 2 ceph osd pool set backup-pool min_size 1 # 启用自动PG缩放避免手动计算PG数 ceph osd pool set backup-pool pg_autoscale_mode on # 验证写入10MB测试文件看是否秒传 dd if/dev/zero oftestfile bs1M count10 time rados -p backup-pool put testfile testfile为什么这步关键它教会你“池不是静态容器”而是可配置的数据策略单元。min_size 1意味着即使只剩1个OSD在线你仍能读写降级模式这对小集群容灾至关重要。5.2 第二步让Linux服务器“原生挂载”Ceph存储——告别rados命令行rados好用但终究是命令行。你想让开发同事像用U盘一样mount /mnt/ceph那就必须上RBDRADOS Block Device目标在node2上将Ceph存储挂载为本地块设备/dev/rbd0并格式化成EXT4供应用使用。操作清单在node2执行# 安装rbd客户端工具 sudo apt install -y ceph-common # 从node1拷贝密钥环用于认证 sudo scp root192.168.10.10:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ # 创建RBD镜像大小10G rbd create --size 10G backup-image --image-feature layering # 映射为本地块设备 rbd map backup-image # 格式化并挂载 sudo mkfs.ext4 /dev/rbd0 sudo mkdir -p /mnt/ceph-backup sudo mount /dev/rbd0 /mnt/ceph-backup # 验证写入文件并检查 echo Backup test OK | sudo tee /mnt/ceph-backup/test.txt sudo cat /mnt/ceph-backup/test.txt避坑提示rbd map可能报错RBD image feature set mismatch。这是因为新版本Ceph默认开启高级特性如deep-flatten而老内核不支持。解决方案是创建时显式关闭rbd create --size 10G --image-feature layering backup-image。5.3 第三步用S3接口对接现有工具——把Ceph变成“平替OSS”你有Python脚本用boto3上传日志有CosBrowser管理图片不用改代码只需启动RGW目标在node1上部署RGW获得http://192.168.10.10:8000的S3兼容API端点。操作清单在node1执行# 部署RGW实例绑定到node1的8000端口 sudo ceph orch apply rgw mystore --realmmyrealm --zonemyzone --port8000 # 创建S3用户获取Access Key/Secret Key sudo radosgw-admin user create --uids3user --display-nameS3 User --emails3example.com # 输出结果里会看到类似 # access_key: V4TQXZ7YJ9F2B8L3N1P5, # secret_key: aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789/ # 用curl测试替换你的key curl -H Authorization: AWS V4TQXZ7YJ9F2B8L3N1P5:aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789/ \ -X PUT http://192.168.10.10:8000/mybucket验证技巧用Python一行命令测试# 安装boto3pip install boto3 import boto3 s3 boto3.client(s3, endpoint_urlhttp://192.168.10.10:8000, aws_access_key_idV4TQXZ7YJ9F2B8L3N1P5, aws_secret_access_keyaBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789/) s3.create_bucket(Buckettest-bucket)从那以后我每次教新人都强制他们先完成这三步用rados确认底层读写通用rbd确认块设备挂载通用boto3确认S3接口通。只要这三关全过后续学CephFS、对接K8s CSI、做跨机房复制就不再是玄学而是“换参数、调配置、看日志”的确定性工作。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询