本章目标:
- 提升 Kubernetes 使用 Ceph 的 IOPS、吞吐和稳定性
- 优化 GPU/AI 训练、数据库、CI/CD、大规模 PVC 场景
- 建立生产级 Ceph 硬件、网络、OSD、Pool、CSI 参数基线
8.1 Ceph 性能优化总体模型
Ceph性能由以下链路决定:
Kubernetes Pod
|
|
CSI Driver
|
|
RBD / CephFS
|
|
Ceph Pool
|
|
PG Placement
|
|
OSD
|
+--------------+--------------+
| |
CPU Disk
|
Network
任何一层瓶颈都会影响整体性能
8.2 生产硬件选型建议
8.2.1 存储节点推荐配置
| 组件 | 推荐 |
|---|---|
| CPU | 16-32 Core |
| 内存 | 128GB+ |
| 系统盘 | SSD RAID1 |
| OSD盘 | NVMe SSD / HDD |
| 网络 | 25GbE+ |
| HBA | 直通模式 |
8.2.2 不推荐架构
❌ RAID控制器
例如:
SSD
|
RAID Controller
|
Ceph OSD
原因:
- Ceph自身提供副本
- RAID降低性能
- 故障定位困难
推荐:
SSD
|
HBA Passthrough
|
Ceph OSD
8.3 存储介质选择
8.3.1 HDD集群
适合:
- 文件存储
- 备份
- 大容量对象
特点:
容量高
IOPS低
推荐:
4TB-18TB HDD
+
SSD DB/WAL
8.3.2 SSD集群
适合:
- 数据库
- DevOps
- Kubernetes PVC
推荐:
NVMe
+
BlueStore
8.3.3 NVMe高性能集群
适合:
- AI训练
- GPU计算
- 大模型数据集
推荐:
PCIe Gen4/Gen5 NVMe
100K+ IOPS
8.4 BlueStore优化
Ceph默认:
BlueStore
架构:
BlueStore
|
+-------+-------+
DB/WAL DATA
RocksDB Object
8.5 DB/WAL规划
HDD OSD
推荐:
HDD:
DATA
SSD:
DB/WAL
比例:
| 类型 | DB |
|---|---|
| HDD | 1%-4% |
| SSD | 无需单独 |
示例
18TB HDD:
DATA:
18TB
DB:
100GB SSD
WAL:
20GB SSD
8.6 Rook配置DB/WAL
CephCluster:
storage:
useAllNodes: true
useAllDevices: false
devices:
- name: /dev/sdb
config:
osdsPerDevice: "1"
使用独立DB设备:
metadataDevice: nvme0n1
例如:
storage:
nodes:
- name: node01
devices:
- name: sdb
config:
osdsPerDevice: "1"
8.7 Ceph网络优化
Ceph对网络极其敏感
生产建议:
双网络
Kubernetes
|
+--------+--------+
Public Network
业务访问
Cluster Network
OSD复制
8.8 网络规划
小型集群
10GbE
最低要求
生产环境
推荐:
25GbE
AI/GPU集群
推荐:
100GbE
8.9 Jumbo Frame优化
检查:
ip link
设置:
ip link set ens1 mtu 9000
验证:
ping -M do -s 8972 IP
8.10 Ceph网络参数
查看:
ceph config dump
调整:
ceph config set global ms_bind_ipv4 true
开启:
ceph config set global ms_tcp_read_timeout 900
8.11 CPU优化
Ceph OSD非常吃CPU
查看:
top
重点:
ceph-osd
建议:
每个OSD:
| 磁盘 | CPU |
|---|---|
| HDD | 1-2 Core |
| SSD | 2-4 Core |
| NVMe | 4+ Core |
8.12 内存优化
OSD缓存:
查看:
ceph config get osd.* osd_memory_target
默认:
4GB
调整:
例如:
ceph config set osd.* \
osd_memory_target 8589934592
8GB
8.13 PG数量优化
PG过少:
性能不足
PG过多:
OSD压力大
查看:
ceph osd pool stats
计算:
PG =
(OSD数量 * 100)
/
副本数
/
Pool数量
示例:
12 OSD
副本3
Pool 3
1200/3/3
≈133 PG
推荐:
128
256
512
8.14 Pool参数优化
查看:
ceph osd pool get rbd all
设置副本:
生产:
ceph osd pool set rbd size 3
最小:
ceph osd pool set rbd min_size 2
8.15 RBD性能优化
StorageClass参数
示例:
parameters:
imageFeatures:
- layering
- exclusive-lock
- object-map
- fast-diff
开启:
fast-diff
提升:
- 快照
- 克隆
- 备份
8.16 RBD Cache优化
查看:
ceph config dump | grep cache
客户端:
rbd_cache=true
适合:
- VM
- 数据库
不建议:
- 强一致数据库写入
8.17 CephFS优化
MDS数量
生产:
active MDS >=2
查看:
ceph fs status
增加:
ceph fs set cephfs max_mds 2
8.18 Kubernetes CSI优化
RBD CSI参数
推荐:
mountOptions:
- discard
支持:
TRIM
8.19 SSD TRIM优化
节点:
fstrim -av
定时:
systemctl enable fstrim.timer
8.20 Kubernetes调度优化
存储节点标签
kubectl label node node01 \
storage=true
Ceph节点:
placement:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: storage
operator: In
values:
- "true"
8.21 GPU训练场景优化
典型:
GPU Node
|
|
PVC
|
|
Ceph RBD
|
|
NVMe OSD
推荐:
数据集
CephFS
原因:
- 多Pod共享
Checkpoint
RBD
原因:
- 高随机IO
模型仓库
RGW
原因:
- S3兼容
8.22 数据库场景优化
PostgreSQL/MySQL
推荐:
RBD
独占Volume
参数:
exclusive-lock
fast-diff
object-map
避免:
CephFS
原因:
数据库随机写性能下降
8.23 Jenkins/GitLab场景优化
CI/CD特点:
大量:
- 小文件
- clone
- artifact
推荐:
SSD CephFS
优化:
ceph fs set cephfs max_mds 2
8.24 大规模集群容量规划
单集群建议
| 规模 | OSD |
|---|---|
| 小 | <50 |
| 中 | 50-200 |
| 大 | 200-1000 |
8.25 Ceph性能测试
RBD测试
安装:
apt install fio
测试:
fio \
--name=rbd-test \
--rw=randread \
--bs=4k \
--iodepth=32 \
--numjobs=4
指标:
关注:
IOPS
Latency
Bandwidth
8.26 常见性能问题
问题1:IO延迟高
检查:
ceph osd perf
原因:
- 磁盘慢
- 网络
- PG过多
问题2:CPU高
检查:
top
原因:
- OSD数量过多
- 加密
- 压缩
问题3:恢复慢
调整:
ceph config set osd \
osd_max_backfills 3
和:
ceph config set osd \
osd_recovery_max_active 5
8.27 生产推荐基线
通用K8s集群
CPU:
32 Core
Memory:
256GB
Network:
25GbE
OSD:
NVMe
Replica:
3
PG:
128-512
MON:
3
MGR:
2
8.28 性能优化检查清单
| 项目 | 完成 |
|---|---|
| HBA直通 | □ |
| 关闭RAID缓存 | □ |
| 25G网络 | □ |
| Jumbo Frame | □ |
| DB/WAL分离 | □ |
| PG合理 | □ |
| SSD Trim | □ |
| CSI优化 | □ |
| Prometheus监控 | □ |
| 容量<80% | □ |