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 # 64MBCeph 运维操作
常用运维命令
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