一键部署 Ceph 集群!Ansible 运维实战教程

作者:遇见火星日期:2026/3/3

一、Ceph 基础介绍

1.1 什么是Ceph

Ceph是一款开源的分布式存储系统,具备高可用、高扩展、无单点故障的特性,可统一提供块存储(RBD)、对象存储(RGW)、文件存储(CephFS)三种存储服务,广泛应用于云计算、大数据等场景。

1.2 Ceph核心组件

组件作用
MON(Monitor)集群监视器,维护集群状态、管理认证、决策集群拓扑
OSD(Object Storage Daemon)存储数据的核心进程,负责数据的存储、复制、恢复、均衡
MDS(Metadata Server)为CephFS提供元数据服务(仅文件存储需要)
RGW(Rados Gateway)提供S3/Swift兼容的对象存储接口
MGR(Manager)集群管理进程,提供监控、REST API、集群优化等功能

二、部署前置准备

2.1 环境要求(示例)

角色服务器配置数量系统版本核心配置
部署节点(Ansible)2C/4G/50G1CentOS 7/8/Ubuntu 20.04可访问所有节点
MON/MGR2C/4G/50G3(推荐奇数)同上千兆网卡、静态IP
OSD4C/8G/≥100G(数据盘)≥3同上至少1块独立数据盘(无分区、未挂载)

2.2 基础环境配置(所有节点)

1. 关闭防火墙和SELinux

1# CentOS 7
2 systemctl stop firewalld && systemctl disable firewalld
3 setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
4 
5 # Ubuntu
6 ufw disable

2. 配置主机名和hosts解析

1# 示例:设置主机名(各节点按需修改)
2 hostnamectl set-hostname ceph-mon-01
3 
4 # 配置hosts(所有节点一致)
5 cat >> /etc/hosts << EOF
6 192.168.1.10 ceph-ansible  # 部署节点
7 192.168.1.11 ceph-mon-01   # MON/MGR节点1
8 192.168.1.12 ceph-mon-02   # MON/MGR节点2
9 192.168.1.13 ceph-mon-03   # MON/MGR节点3
10 192.168.1.21 ceph-osd-01   # OSD节点1
11 192.168.1.22 ceph-osd-02   # OSD节点2
12 192.168.1.23 ceph-osd-03   # OSD节点3
13 EOF

3. 部署节点安装Ansible

1# CentOS 7
2 yum install epel-release -y
3 yum install ansible -y
4 
5 # Ubuntu
6 apt update && apt install ansible -y
7 
8 # 验证安装
9 ansible --version  # 推荐2.9+版本

4. 配置部署节点免密登录所有节点

1# 部署节点生成密钥对
2 ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
3 
4 # 分发公钥到所有节点(替换为实际节点IP/主机名)
5 for node in ceph-mon-01 ceph-mon-02 ceph-mon-03 ceph-osd-01 ceph-osd-02 ceph-osd-03; do
6     ssh-copy-id -i ~/.ssh/id_rsa.pub root@$node
7 done

三、基于Ansible部署Ceph集群

3.1 拉取官方Ceph-Ansible项目

Ceph官方提供了ceph-ansible项目(GitHub地址:https://github.com/ceph/ceph-ansible),是部署Ceph最成熟的Ansible剧本,步骤如下:

1# 部署节点克隆仓库(指定稳定版本,以nautilus为例,可替换为octopus/pacific)
2 git clone -b stable-4.0 https://github.com/ceph/ceph-ansible.git
3 cd ceph-ansible
4 
5 # 安装依赖(Ansible角色依赖)
6 ansible-galaxy install -r requirements.yml

3.2 配置部署清单(inventory)

创建自定义inventory文件(示例:ceph-cluster.ini),定义集群节点角色:

1[all]
2 ceph-mon-01 ansible_host=192.168.1.11
3 ceph-mon-02 ansible_host=192.168.1.12
4 ceph-mon-03 ansible_host=192.168.1.13
5 ceph-osd-01 ansible_host=192.168.1.21
6 ceph-osd-02 ansible_host=192.168.1.22
7 ceph-osd-03 ansible_host=192.168.1.23
8 
9 [mons]
10 ceph-mon-01
11 ceph-mon-02
12 ceph-mon-03
13 
14 [mgrs]
15 ceph-mon-01
16 ceph-mon-02
17 ceph-mon-03
18 
19 [osds]
20 ceph-osd-01
21 ceph-osd-02
22 ceph-osd-03
23 
24 # 可选:如果需要对象存储/文件存储,添加对应角色
25 #[rgws]
26 #ceph-mon-01
27 #[mdss]
28 #ceph-mon-01

3.3 配置集群参数(group_vars)

修改group_vars/all.yml(核心配置,按需调整):

1# Ceph版本(与ceph-ansible分支匹配)
2 ceph_stable_release:nautilus
3 
4 # 集群名称
5 cluster:ceph
6 
7 # 认证方式(新手推荐cephx)
8 cephx:true
9 
10 # OSD配置(指定数据盘,示例:所有OSD节点使用/dev/sdb作为数据盘)
11 osd_scenario:collocated# 单盘部署(数据+日志同盘)
12 devices:
13 -/dev/sdb
14 osd_auto_discovery:false# 关闭自动发现,手动指定磁盘
15 
16 # 网络配置(指定集群通信网段)
17 public_network:192.168.1.0/24
18 cluster_network:192.168.1.0/24# 若无独立集群网,与public_network一致
19 
20 # 禁用dashboard(如需启用,可设为true)
21 dashboard_enabled:false

3.4 执行部署剧本

1# 先执行连通性测试
2 ansible -i ceph-cluster.ini all -m ping
3 
4 # 执行部署(耗时根据节点数量/网络情况而定,约10-30分钟)
5 ansible-playbook -i ceph-cluster.ini site.yml

3.5 验证部署结果

在任意MON节点执行以下命令验证集群状态:

1# 查看集群健康状态(健康为HEALTH_OK)
2 ceph -s
3 
4 # 查看OSD状态
5 ceph osd tree
6 
7 # 查看MON状态
8 ceph mon stat

四、Ceph核心运维命令

命令作用
ceph -s查看集群整体状态(健康度、PG状态、节点数量)
ceph osd tree查看OSD节点拓扑、权重、状态
ceph mon stat查看MON节点状态
ceph osd pool create <池名> <PG数>创建存储池(PG数需根据OSD数量计算,推荐公式:总PG数=OSD数×100)
ceph osd pool ls列出所有存储池
ceph df查看集群存储使用情况
ceph health detail查看集群健康详情(定位故障)
ceph osd out <osd-id>将指定OSD下线(维护前操作)
ceph osd in <osd-id>将指定OSD上线
ceph auth list查看集群认证密钥
rados df查看对象存储层级的存储使用情况

五、常见问题排查

  1. 部署时报“SSH连接失败”:检查免密登录是否配置成功,目标节点sshd服务是否正常。
  2. OSD启动失败:检查指定的磁盘是否已分区/挂载(需清空),磁盘权限是否正确。
  3. 集群状态HEALTH_WARN:执行ceph health detail查看具体原因,常见为PG未均衡、OSD数量不足。

总结

  1. 部署核心:基于官方ceph-ansible项目,通过配置inventory定义节点角色、group_vars配置集群参数,执行site.yml即可完成自动化部署。
  2. 关键验证:部署完成后通过ceph -s确认集群健康状态为HEALTH_OK,通过ceph osd tree确认所有OSD正常上线。
  3. 核心命令ceph -s(集群状态)、ceph osd tree(OSD状态)、ceph osd pool create(创建存储池)是日常运维最常用的命令。

注意:生产环境部署需根据实际服务器配置调整磁盘、网络、Ceph版本等参数,建议先在测试环境验证部署流程。


一键部署 Ceph 集群!Ansible 运维实战教程》 是转载文章,点击查看原文


相关推荐


一个简单Demo彻底理解前后端怎么连的丨Figma + Supabase + Vercel
阿星AI工作室2026/2/23

哈喽,大家好! 我是阿星👋 很多小白编程学了三个月,全是AI做主UI,难以融入自己的设计理念。 甚至不了解前后端到底怎么连通的。 一旦代码出错了,可能和AI对话还要重新理解一遍概念。所以今天,我们通过一个简单的case,把一个完整前后端的核心链路全跑一遍👇🏻 让你能自己把控UI、把控数据库、把控前端、后端。 🗺️ 先看一眼全局流程 整件事分五步,每一步做完了才能进下一步: ① Figma 画页面 →  ② 定接口契约 →  ③ Supabase 建数据库→  ④ AI 帮你写连接代码


EasyExcel的使用
脸大是真的好~2026/2/15

需求1:能够导出1个Excel文件,能够导入一个Excel文件; 需求2:导出的文件,能实现第1行,第123列的合并单元格:也就是会写注册处理器;知道sheet和cell是什么; 需求3:能实现合并的单元格设置单元格宽高,背景颜色,内容居中,字体大小; 需求4:能控制从任意行开始写入,并让要输出的字段居中; 需求5:导出能实现从任意行开始读入; 导出Excel文件 <!-- EasyExcel 核心依赖 --> <dependency> <groupId>com.alibaba</gro


提示词工程入门-03
一诺滚雪球2026/2/6

前言 "写个代码" "帮我写个快速排序函数,用 Python 实现,要求时间复杂度 O(n log n),添加详细注释" 同样是让 AI 写代码,为什么第一个指令得到的是模糊的回复,而第二个能得到精确满足需求的代码? 这就是提示词工程(Prompt Engineering)的魔力。 好的 Prompt = 好的输出。今天我们来学习如何写出让 AI "秒懂"的提示词。 1. 什么是提示词工程 提示词(Prompt):你给大模型的输入指令 提示词工程(Prompt Engineering):设计和


耗时 20 天,AI 漫剧 APP 和 Web 全部开源, 已斩获 764 星!
苍何2026/1/28

这是苍何的第 474 篇原创! 大家好,我是消失了一段时间的苍何。 1 月 5 号,我写了篇文章,并开源了 AI 漫剧 APP,获得了很多朋友的喜欢。 然后在 GitHub 上一共获得了 764 星和 181 fork,让我有些吃惊。 说实话,这个项目远超我们的预期,甚至连歪果哥都来给我们提 issue,希望支持双语。 甚至还有老板来咨询问我卖不卖这个 APP,我说,大哥,咱都开源了,自己去整吧,不用付费,哈哈哈。 这或许就是开源的魅力吧。 但我发现,APP 还是不大方便,评论区也不少求


万字长文!搞懂机器学习中的概率图模型
aicoting2026/1/19

推荐直接网站在线阅读:aicoting.cn 概率图模型(Probabilistic Graphical Models, PGM)是一类结合概率论与图论的强大工具,用于描述多个随机变量之间的依赖关系。它通过图结构将复杂的联合概率分布分解为局部条件概率分布,使得对高维数据建模和推断变得可行且高效。 根据图的类型,PGM 可分为有向图模型(如贝叶斯网络)和无向图模型(如马尔可夫随机场)。贝叶斯网络利用有向无环图表示变量之间的因果关系,适合建模因果推断和序列数据;马尔可夫随机场则通过无向图捕捉变量之


WPF样式进阶实战:外置样式+MVVM主题切换+样式优先级全解析
bugcome_com2026/1/11

在WPF开发中,样式(Style)是实现界面美化、统一风格、提高代码复用性的核心利器。但很多开发者在实际项目中,容易陷入「内联样式冗余」「主题切换困难」「样式优先级混乱」的困境,写出难以维护的XAML代码。 今天我们就通过一个完整的模块化实战项目(附全部可运行代码),从「外置样式封装」到「MVVM模式主题切换」,再到「样式优先级核心知识点」,全方位解锁WPF样式的高级用法,最终实现一个支持「浅/深色全局主题切换」「按钮专属样式切换」「传统后台代码样式切换」的完整案例。 一、项目架构梳理:模块化让


2025年终总结,智启
袁庭新2026/1/3

大家好,我是袁庭新。2025年就这么溜走了,对我而言,是极为不寻常的一年,总是想着用文字把它记录下来。 文章输出 写是为了更好的思考,坚持写作,力争更好的思考。 2025年累计发表54篇原创文章,平均1周更1篇,大多数是技术相关。2025年我有个转变——每个月写一篇月总结,对这个月主要做了什么事做一个系统的梳理,尽量以可量化的形式呈现,比如,这个月写了多少篇文章,拍了几条短视频,录了几节课,办了几场讲座等诸如此类。 为什么采用这种方式呢?前些年我也不是没写过年终总结,年底一回顾,感觉又稀里糊涂过


一文带你吃透 Java 反射机制
BestAns2025/12/24

一文带你吃透 Java 反射机制 在Java开发中,“反射”绝对是个让人又爱又恨的知识点。有人觉得它晦涩难懂、破坏封装,也有人靠它实现了各种灵活的功能——比如框架开发、动态配置加载。 其实反射没那么神秘,今天就给大家用最通俗的语言讲清楚:反射到底是什么、怎么用,以及反射在实际开发中的应用。 一、Java反射到底是什么? 我们先从Java的核心特性“封装”说起。平时写代码时,我们通过new关键字创建对象,调用类的方法、访问属性,都是在“编译期”就确定好要操作的类,比如User user = new


为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
西陵2025/12/16

首发于公众号 code进化论,欢迎关注。 前言 这几年 AI 在前端开发里的能力几乎是肉眼可见地进化”。从最早只能帮我们做做代码补全、提示几个参数,例如早期的 comate。到后来能够独立生成一个完整的 React/Vue 组件,连逻辑、样式和交互都能自动写好,例如 cursor 和 claude。再到现在,AI 已经能根据一句自然语言去搭建整个前端项目,自动创建页面、路由、接口层,甚至跑通基础业务流程,例如 v0 和 bolt.new。AI 的角色正在从“聪明的编辑器”变成“能独立干活的虚拟工


计算机十万个为什么--数据库索引
无限大62025/12/8

计算机十万个为什么--数据库索引 大家好,欢迎来到最新一期的无限大博客。 突然发现自己对数据库相关的内容掌握不够扎实,于是就去学习了一下,顺便也将自己的理解写成了一篇博客。 希望这篇文章能对大家有所帮助 数据库索引:给数据仓库装个"智能导航系统" 🧭 想象一下,你走进一个占地 1000 平方米的超级图书馆 📚,里面塞满了几十万本书,却连个分类牌都没有。老板忽然喊你找一本《数据库从入门到放弃》,你是不是当场想表演一个原地消失术?😱 这就是没有索引的数据库的日常!每次查询都像蒙眼找书,全表

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客