Proxmox VE Ceph 超融合集群落地实战

Proxmox VE Ceph 超融合集群落地实战

系列文章 #3 | 后 VMware 时代企业虚拟化实战

目录

  1. [为什么选 Ceph](#为什么选 Ceph)
  2. 硬件选型与规划
  3. 集群部署步骤
  4. [存储池与 CephFS 配置](#存储池与 CephFS 配置)
  5. 性能调优
  6. 故障处理与扩容
  7. 监控与告警
  8. 常见坑

一、为什么选 Ceph

Proxmox 内置 Ceph,提供软件定义存储(SDS),对标 VMware vSAN。核心优势:

  • 无单点:数据三副本分布在不同节点/机柜
  • 横向扩展:加节点即扩容量和性能
  • 统一接口:RBD(块)、CephFS(文件)、RGW(对象)一套集群三种用法
  • 开源免费:无存储阵列许可

适用场景:

  • 3 节点以上的 PVE 集群
  • 对 IOPS 和延迟要求不是极致(毫秒级可接受)
  • 有独立存储网络预算(10GbE 起步)

不适用场景:

  • 单节点或 2 节点
  • 数据库等对尾延迟极敏感的工作负载(建议本地 NVMe)
  • 网络只有 1GbE

二、硬件选型与规划

2.1 最小规模与推荐规模

维度 最小可用 推荐生产
节点数 3 5+
每节点 OSD 盘 2 4-8
OSD 盘类型 企业级 SATA SSD 企业级 NVMe
存储网络 10GbE 25GbE / 100GbE
每节点内存 64GB 128GB+
CPU 16 core 32 core+

2.2 OSD 盘选型红线

  • 必须是企业级:消费级 SSD 没断电保护,Ceph 会数据不一致
  • DWPD ≥ 1:高写入场景建议 DWPD ≥ 3
  • 禁用 RAID 卡:直通 HBA 模式,Ceph 自己管冗余
  • 容量:单盘 1.92TB - 7.68TB 较优,太小 OSD 数多管理复杂,太大重建慢

2.3 网络规划

复制代码
           ┌─────────────┐
           │  Public 网   │ 10GbE  ← 客户端访问 (PVE ↔ Ceph)
           └─────────────┘
           ┌─────────────┐
           │ Cluster 网   │ 25GbE  ← OSD 内部复制/心跳
           └─────────────┘

关键:Public 和 Cluster 网物理隔离,否则重建流量会打爆业务网。


三、集群部署步骤

3.1 前置检查

bash 复制代码
# 每个 PVE 节点执行
pveversion        # 确认 8.x+
pvecm status      # 确认集群 Quorate
lsblk             # 确认 OSD 盘可见且未使用

3.2 安装 Ceph(Web UI 方式)

Step 1:在任一节点 Web UI

Datacenter → pve01 → Ceph → Install Ceph

选择版本(推荐 Reef 或 Squid),确认安装。

等效 CLI:

bash 复制代码
pveceph install --repository no-subscription --version reef

Step 2:初始化集群

UI: Ceph → 初始化向导

  • Public Network: 10.0.0.0/24
  • Cluster Network: 10.0.1.0/24
  • 副本数: 3/2 (默认,size=3, min_size=2)

CLI:

bash 复制代码
pveceph init --network 10.0.0.0/24 --cluster-network 10.0.1.0/24

3.3 部署 Monitor 和 Manager

至少 3 个 Monitor(奇数,防脑裂):

bash 复制代码
# 分别在 pve01/pve02/pve03 执行
pveceph mon create

# 同样部署 Manager
pveceph mgr create

验证:

bash 复制代码
ceph -s
# cluster:
#   health: HEALTH_OK
#   services:
#     mon: 3 daemons, quorum pve01,pve02,pve03
#     mgr: pve01(active), standbys: pve02, pve03

3.4 创建 OSD

对每块数据盘:

bash 复制代码
pveceph osd create /dev/nvme0n1
pveceph osd create /dev/nvme1n1
# ...

或 Web UI:pve01 → Ceph → OSD → Create: OSD

验证:

bash 复制代码
ceph osd tree
# ID  CLASS  WEIGHT  TYPE NAME       STATUS
# -1         15.0    root default
# -3          5.0      host pve01
#  0   ssd    2.5        osd.0       up
#  1   ssd    2.5        osd.1       up
# ...

四、存储池与 CephFS 配置

4.1 创建 RBD 池(给 VM 用)

UI: Datacenter → Ceph → Pools → Create

复制代码
Name:     vm-pool
Size:     3          ← 副本数
Min Size: 2          ← 最少可用副本
PG Num:   auto
CRUSH Rule: replicated_rule
Add Storage: [✓]    ← 自动添加到 Datacenter Storage

CLI:

bash 复制代码
pveceph pool create vm-pool --size 3 --min_size 2 --add_storages

4.2 创建 CephFS(给 ISO/备份用)

bash 复制代码
pveceph fs create --name cephfs --add-storage

挂载后在 Datacenter 看到存储 cephfs 可存 ISO、模板、快照。

4.3 副本数策略

场景 size / min_size 说明
生产 VM 3 / 2 默认,允许 1 节点故障
测试环境 2 / 1 省空间,风险高
关键数据 4 / 2 跨机房副本
容量优先 纠删码 4+2 节省空间但性能差,不建议 VM 用

五、性能调优

5.1 OSD 层面

bash 复制代码
# 编辑 /etc/pve/ceph.conf 的 [global] 或 [osd]
osd_memory_target = 8G           # 默认 4G,NVMe 下可调高
osd_op_num_threads_per_shard = 4  # 高并发调大
bluestore_cache_size_ssd = 8G    # SSD 专用缓存

5.2 网络层面

  • MTU 9000(Jumbo Frame):Public + Cluster 网都启用
  • 多路径:用 bond mode 4 (LACP) 聚合
bash 复制代码
# 验证 MTU
ping -M do -s 8972 10.0.1.21

5.3 VM 侧优化

  • 磁盘缓存模式:writeback (性能最佳,需 UPS)或 none(最安全)
  • 磁盘控制器:VirtIO SCSI single(可发挥多队列)
  • 启用 IO thread:Web UI → VM Hardware → Disk → iothread [✓]

5.4 性能基准测试

bash 复制代码
# rados 基准
rados bench -p vm-pool 60 write --no-cleanup
rados bench -p vm-pool 60 seq
rados bench -p vm-pool 60 rand

# 清理测试数据
rados -p vm-pool cleanup

参考基准(5 节点 × 8 NVMe × 25GbE):

  • 顺序写:6-8 GB/s
  • 4K 随机写 IOPS:200K-400K
  • 延迟:<2ms 平均

六、故障处理与扩容

6.1 OSD 故障替换

当某块盘红灯:

bash 复制代码
# 1. 标记 out(数据迁出)
ceph osd out osd.5

# 2. 等待迁移完成(看 ceph -s 的 recovering)
ceph -s

# 3. 停止 OSD
systemctl stop ceph-osd@5

# 4. 从 CRUSH 删除
ceph osd purge osd.5 --yes-i-really-mean-it

# 5. 更换物理盘后重新创建
pveceph osd create /dev/nvme5n1

6.2 节点扩容

新加节点到 PVE 集群后:

bash 复制代码
# 新节点上
pveceph install --version reef
pveceph mon create    # 可选,保持 mon 数奇数
pveceph osd create /dev/nvme0n1
# ... 逐盘加入

# 数据自动重平衡,监控进度
ceph -s

6.3 集群状态急救

bash 复制代码
# 集群 HEALTH_ERR 怎么办?
ceph health detail          # 查看具体告警
ceph osd tree               # 检查 OSD 状态
ceph pg dump_stuck          # 卡住的 PG
ceph pg repair <pg_id>      # 修复不一致的 PG

七、监控与告警

7.1 Ceph 自带 Dashboard

bash 复制代码
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
ceph dashboard ac-user-create admin <password> administrator

访问 https://<mgr-ip>:8443

7.2 Prometheus 集成

bash 复制代码
ceph mgr module enable prometheus
# 默认暴露 9283 端口
curl http://<mgr>:9283/metrics | head

Prometheus 配置:

yaml 复制代码
- job_name: 'ceph'
  static_configs:
    - targets: ['10.0.0.21:9283']

Grafana Dashboard 推荐 ID:2842 (Ceph Cluster)、7056(Ceph Pools)。

7.3 关键告警

指标 阈值 含义
ceph_health_status != 0 集群不健康
ceph_cluster_total_used_ratio > 0.85 容量超过 85%
ceph_osd_up < count 有 OSD 掉线
ceph_pg_active ratio < 1 PG 未全部 active

八、常见坑

  1. 只用 1GbE 网络 → 性能惨不忍睹,且重建会打爆业务。必须 10GbE+
  2. 消费级 SSD → 数据损坏风险,硬件不省
  3. 不分 Public/Cluster 网 → 重建时业务卡顿
  4. 副本数设 2 → 生产绝不能这么做,一盘坏=风险敞口
  5. PG 数设置过小 → 数据不均衡;过大 → 内存爆。用 pg_autoscaler 自动调
  6. Mon 数设为偶数 → 脑裂风险,永远奇数
  7. 容量用到 90%+ → Ceph 会进入只读保护,务必留 20% 余量
  8. 忘了设置 noout 再维护 → 例行维护会触发不必要的数据迁移

维护模式正确姿势:

bash 复制代码
# 节点下线维护前
ceph osd set noout
ceph osd set norebalance

# 维护完恢复
ceph osd unset noout
ceph osd unset norebalance

结语

Ceph 是 Proxmox 生态的压舱石,但也是最需要硬件投入和运维理解的组件。不建议在 1GbE + 消费级 SSD 上玩"生产 Ceph",那是自找麻烦。硬件配齐 + 监控到位 + 演练过故障,Ceph 才真正是 vSAN 的平替。

下一篇 → Proxmox PBS 企业级备份体系设计

相关推荐
Goldbioinformatics1 小时前
Windows版Claude Cowork启动Linux问题
linux·运维·windows
xiaoshuaishuai82 小时前
C# CDN加速与离线包优化PowerSetting慢问题
开发语言·windows·spring·c#
韭菜钟2 小时前
Windows下,在Github Copilot Chat/CLI中使用obra/superpowers
windows·github·copilot
老wang你好3 小时前
Ceph存储全攻略:RBD、CephFS与RGW详解
ceph
love530love4 小时前
ComfyUI MediaPipe 猴子补丁终极完善版:补全上下文管理与姿态检测兼容
人工智能·windows·python·comfyui·protobuf·mediapipe
Gavin_9154 小时前
“操作无法完成,因为其中的文件夹或文件已在另一程序中打开”解决方案
windows·重命名·文件夹
郭龙飞9804 小时前
OpenClaw 飞书机器人搭建指南 远程 AI 操控电脑配置
人工智能·windows·机器人·飞书
有味道的男人6 小时前
1688 商品价格 API:阶梯价、代发价、批发价实时查询
开发语言·windows·python
江晓曼*凡云基地6 小时前
Hermes Agent 多Agent模式:并行拆解复杂任务的实战指南
javascript·windows·microsoft
郭龙飞9809 小时前
OpenClaw Windows 端快速部署教程 小白实操指南
人工智能·windows