第二篇:5分钟部署Ceph集群——从零开始的存储革命

2026年01月20日/ 浏览 7

开篇场景:

"想象你在宿舍组装乐高千年隼:

步骤1:拆开包装(安装依赖)步骤2:拼装底盘(部署Monitors)步骤3:添加引擎(配置OSD)步骤4:启动光速(集群初始化)

Ceph部署就像这个过程,只不过你搭建的是数据宇宙飞船!"

技术解析:

1. 现代部署工具对比

工具

适用场景

核心优势

学习曲线

Cephadm

生产环境

全生命周期管理

中等

Rook

Kubernetes集成

云原生友好

较高

Ansible

传统数据中心

灵活定制

较低

选择建议

初学者:从Cephadm开始,官方推荐工具云原生用户:直接使用Rook,与K8s无缝集成批量部署:Ansible Playbook适合大规模集群

2. 单节点快速部署(实验环境)

环境要求

1台Linux服务器(Ubuntu 20.04+)至少2块磁盘(1块系统盘,1块数据盘)4GB内存,2核CPU

部署步骤

# 1. 安装依赖 sudo apt update sudo apt install -y docker.io python3-cephadm # 2. 启动Bootstrap节点 sudo cephadm bootstrap --mon-ip 192.168.1.100 # 3. 添加所有可用磁盘为OSD sudo ceph orch apply osd --all-available-devices # 4. 验证集群状态 sudo ceph -s

预期输出

cluster: id: 3e8f5c6a-1b2c-4d3e-9f0a-8b7c6d5e4f3a health: HEALTH_OK services: mon: 1 daemons, quorum node1 mgr: node1.vkrptz(active, since 2m) osd: 3 osds: 3 up (since 1m), 3 in (since 1m)

3. 多节点生产架构图

推荐拓扑

Monitor节点:3台(奇数台,防止脑裂)OSD节点:至少3台,每台4-12块数据盘RGW/MDS节点:按需扩展

网络规划

网络类型

带宽要求

用途

公共网络

10GbE

客户端访问、API调用

集群网络

25GbE/100GbE

数据复制、心跳检测

硬件配置建议

组件

配置要求

备注

Monitor

16核CPU/64GB内存/SSD系统盘

高可用需3台

OSD

24核CPU/128GB内存/HDD数据盘

每节点4-12块盘

RGW

32核CPU/256GB内存/NVMe缓存盘

支持S3接口

避坑指南:

问题1:时钟不同步导致Monitor脑裂

现象

HEALTH_WARN clock skew detected on mon.node1, mon.node2

解决

# 1. 安装NTP服务 sudo apt install chrony -y # 2. 配置NTP服务器 sudo nano /etc/chrony/chrony.conf # 添加: server ntp.aliyun.com iburst server time.google.com iburst # 3. 重启服务 sudo systemctl restart chrony # 4. 强制同步 sudo chronyc makestep

问题2:OSD无法自动发现磁盘

排查步骤

检查磁盘状态:lsblk # 确认磁盘未挂载查看Ceph设备列表:sudo ceph orch device ls手动添加OSD:sudo ceph orch daemon add osd node1:/dev/sdb

动手实验:

实验1:在MiniKube中部署Ceph测试集群

步骤

# 1. 创建本地集群 minikube start --nodes 3 --driver=docker # 2. 部署Rook Operator kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/crds.yaml kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/common.yaml kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/operator.yaml # 3. 创建CephCluster cat <<EOF | kubectl apply -f - apiVersion: ceph.rook.io/v1 kind: CephCluster metadata: name: rook-ceph namespace: rook-ceph spec: dataDirHostPath: /var/lib/rook mon: count: 3 storage: useAllNodes: true useAllDevices: true EOF

验证部署

kubectl -n rook-ceph get pods # 查看Pod状态 kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status # 检查集群健康

实验2:使用Ceph Dashboard

启用Dashboard

# 1. 启用模块 ceph mgr module enable dashboard # 2. 创建管理员用户 ceph dashboard set-login-credentials admin mypassword # 3. 访问Dashboard https://<monitor-ip>:8443

功能亮点

实时监控:集群健康、性能指标配置管理:存储池、OSD、RGW设置日志查看:集中化日志检索

总结:

通过本篇,可以掌握从单节点实验到多节点生产的Ceph部署全流程。记住:

实验环境:Cephadm快速上手生产环境:严格规划网络与硬件云原生场景:Rook是首选方案

下篇预告

《第三篇:解剖Ceph OSD——数据世界的搬运工》将深入探讨:OSD工作原理与性能优化Bluestore引擎的黑科技故障恢复与数据重建机制

picture loss