Ceph 分布式存储
Ceph 架构
三种存储接口
| 接口 | 用途 | 特点 |
|---|---|---|
| RBD | 块设备 | K8s PersistentVolume、虚拟机磁盘 |
| CephFS | 文件系统 | POSIX 兼容,多客户端共享 |
| RGW | 对象存储 | S3/Swift API 兼容 |
部署(cephadm)
cephadm 快速部署
# 引导初始节点
cephadm bootstrap --mon-ip 10.0.1.10
# 添加节点
ceph orch host add node2 10.0.1.11
ceph orch host add node3 10.0.1.12
# 部署 OSD(自动发现空磁盘)
ceph orch apply osd --all-available-devices
# 检查集群健康
ceph status
ceph health detail
K8s 集成(Rook)
Rook CephCluster CRD
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
提示
Rook 是 Ceph 在 Kubernetes 上的最佳部署方式,以 Operator 模式管理 Ceph 集群的完整生命周期。
常见面试问题
Q1: Ceph 如何保证数据可靠性?
答案:
- CRUSH 算法:数据按规则分布到不同节点/机架/机房,无需中心元数据服务器
- 副本策略:默认 3 副本,分布在不同故障域
- 自愈能力:OSD 故障后自动重建副本到其他节点
- 纠删码(EC):类似 RAID 5,节省空间但牺牲写性能
Q2: Ceph 和 NFS 怎么选?
答案:
| 维度 | NFS | Ceph |
|---|---|---|
| 规模 | 中小 | 大规模 |
| 可靠性 | 单点 | 无单点 |
| 接口 | 文件 | 块+文件+对象 |
| 运维 | 简单 | 复杂 |
| K8s 集成 | 简单但功能有限 | Rook 原生支持 CSI |