Skip to content

Ceph 架构集成

Ceph 与 H3C 产品集成矩阵

H3C 产品与 Ceph 集成:

CloudOS(IaaS):
  ├── Nova(计算)→ Ceph RBD(VM 系统盘)
  ├── Cinder(块存储)→ Ceph RBD(数据卷)
  ├── Glance(镜像)→ Ceph RBD(镜像存储)
  └── Swift(对象存储)→ Ceph RGW(对象存储)

CAS(虚拟化):
  └── VM 磁盘 → Ceph RBD

HCI(超融合):
  └── 内置 Ceph(软件定义存储)

AI 平台:
  └── 训练数据集 → CephFS 或 Ceph RGW(S3)

Ceph 集群规划

硬件规划

Ceph 节点角色规划:

MON 节点(3 台,奇数):
  CPU:4-8 核即可
  内存:16-32GB
  存储:2× SSD(系统盘 + MON 数据)
  网络:1GbE 管理网 + 10GbE 存储网

OSD 节点(N 台,越多越好):
  CPU:每 OSD 约 1 核(16 OSD → 16 核)
  内存:每 OSD 约 4-8GB(16 OSD → 64-128GB)
  存储:
    全 SSD:每节点 12-24 块 NVMe/SAS SSD
    混合:2 块 SSD(WAL/DB)+ 12 块 HDD
  网络:2× 25GbE(存储网,Bond)

MDS 节点(CephFS 需要,2 台):
  CPU:8-16 核
  内存:64-128GB(元数据缓存)
  存储:SSD(元数据存储)

网络规划

Ceph 网络分离(推荐):

Public Network(客户端访问):
  用途:客户端(CloudOS/应用)访问 Ceph
  带宽:10GbE 或 25GbE
  IP 段:10.0.2.0/24

Cluster Network(OSD 内部复制):
  用途:OSD 之间数据复制
  带宽:25GbE 或 100GbE(复制流量大)
  IP 段:10.0.3.0/24

分离原因:
  数据复制会产生大量流量
  与客户端流量混用会相互影响
  分离后各自独立,互不干扰

Ceph 配置优化

ceph.conf 关键配置

ini
[global]
# 集群 ID(自动生成)
fsid = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# MON 地址
mon_host = 10.0.2.11,10.0.2.12,10.0.2.13

# 网络配置
public_network = 10.0.2.0/24
cluster_network = 10.0.3.0/24

# 认证
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

# 日志级别(生产环境用默认值)
debug_ms = 0
debug_osd = 0

[osd]
# OSD 内存目标(根据实际内存调整)
osd_memory_target = 4294967296  # 4GB

# BlueStore 缓存(SSD OSD 可以设置更大)
bluestore_cache_size_ssd = 4294967296  # 4GB SSD 缓存
bluestore_cache_size_hdd = 1073741824  # 1GB HDD 缓存

# 数据恢复速度限制(避免影响业务)
osd_recovery_max_active = 3
osd_max_backfills = 2
osd_recovery_op_priority = 3

# 心跳超时
osd_heartbeat_grace = 20
osd_heartbeat_interval = 6

[mon]
# MON 时钟漂移容忍
mon_clock_drift_allowed = 0.5

[client]
# RBD 缓存(提升读性能)
rbd_cache = true
rbd_cache_size = 134217728  # 128MB
rbd_cache_max_dirty = 100663296  # 96MB
rbd_cache_target_dirty = 67108864  # 64MB

Ceph 运维操作

常用运维命令

bash
# === 集群状态 ===
ceph status                    # 集群总体状态
ceph health detail             # 详细健康信息
ceph df                        # 存储使用情况
ceph osd df                    # 每个 OSD 使用情况

# === OSD 管理 ===
ceph osd tree                  # OSD 树形结构
ceph osd stat                  # OSD 统计
ceph osd ls                    # 列出所有 OSD
ceph osd find <osd-id>         # 查找 OSD 所在节点

# 标记 OSD 为 out(触发数据迁移)
ceph osd out <osd-id>

# 从集群移除 OSD
ceph osd crush remove osd.<osd-id>
ceph auth del osd.<osd-id>
ceph osd rm <osd-id>

# === PG 管理 ===
ceph pg stat                   # PG 统计
ceph pg dump | grep -v "active+clean"  # 查看异常 PG

# === 性能监控 ===
ceph osd perf                  # OSD 延迟统计
ceph iostat                    # 实时 I/O 统计(需要 ceph-mgr)

# === 维护操作 ===
# 设置 noout(维护时防止数据重建)
ceph osd set noout
ceph osd unset noout

# 设置 norebalance(防止数据均衡)
ceph osd set norebalance
ceph osd unset norebalance

# === 存储池管理 ===
ceph osd pool ls detail        # 列出所有存储池
ceph osd pool stats            # 存储池 I/O 统计
ceph osd pool get <pool> all   # 查看存储池配置

# 调整存储池副本数
ceph osd pool set <pool> size 3
ceph osd pool set <pool> min_size 2

# 调整 PG 数量
ceph osd pool set <pool> pg_num 256
ceph osd pool set <pool> pgp_num 256

故障处理

bash
# OSD 故障处理

# 1. 查看故障 OSD
ceph osd tree | grep down

# 2. 查看 OSD 日志
journalctl -u ceph-osd@<osd-id> -n 100

# 3. 尝试重启 OSD
systemctl restart ceph-osd@<osd-id>

# 4. 如果磁盘故障,需要更换磁盘
# 先标记 OSD 为 out
ceph osd out <osd-id>
# 等待数据重建完成
watch -n 10 ceph status
# 确认 HEALTH_OK 后,移除 OSD
ceph osd crush remove osd.<osd-id>
ceph auth del osd.<osd-id>
ceph osd rm <osd-id>
# 更换磁盘后,重新添加 OSD
ceph-volume lvm create --data /dev/sdX

# MON 故障处理
# 查看 MON 状态
ceph mon stat
# 重启 MON
systemctl restart ceph-mon@$(hostname)
# 如果 MON 数据损坏,需要重建
# (复杂操作,建议联系 H3C 支持)

Ceph 性能调优

bash
# 针对不同场景的调优

# 场景1:虚拟化(随机 I/O 为主)
ceph config set osd bluestore_cache_size_ssd 4294967296
ceph config set osd osd_op_num_threads_per_shard 2
ceph config set osd osd_op_num_shards 8

# 场景2:大数据(顺序 I/O 为主)
ceph config set osd osd_recovery_max_active 5
ceph config set osd bluestore_prefer_deferred_size_hdd 65536

# 场景3:混合负载
# 使用 QoS 限制不同存储池的 I/O
ceph osd pool set vms rbd_qos_iops_limit 50000
ceph osd pool set backup rbd_qos_bps_limit 1073741824  # 1GB/s

# 性能测试
# 测试 Ceph 集群原始性能
rados bench -p vms 60 write --no-cleanup
rados bench -p vms 60 seq
rados bench -p vms 60 rand
rados -p vms cleanup

褚成志的云与计算笔记