第一章 Ceph v1.0
Ceph是一个统一的、分布式的存储系统,设计目标是良好地扩展到EB(Exabyte)级别的存储容量,并且提供高性能和高可靠性。
第一部分 核心架构
一、RADOS(Reliable Autonomic Distributed Object Store)
RADOS是Ceph的基础存储层,提供:
- 对象存储:基于对象的存储接口
- 分布式:数据自动分布到集群中的所有节点
- 自愈:自动检测和修复故障
二、核心组件
- OSD(Object Storage Daemon):负责存储数据,每个OSD对应一块硬盘
- MON(Monitor):维护集群状态,包括OSD Map、CRUSH Map等
- MDS(Metadata Server):为CephFS提供元数据服务
第二部分 存储类型
一、RBD(RADOS Block Device)
- 提供块存储接口
- 支持快照、克隆、精简配置
- 常用于虚拟机磁盘(如OpenStack、KVM)
二、CephFS
- 提供POSIX兼容的文件系统接口
- 支持目录结构和文件权限
- 适合共享文件存储
三、RGW(RADOS Gateway)
- 提供对象存储接口
- 兼容S3和Swift API
- 适合海量非结构化数据存储
第三部分 数据分布机制
一、CRUSH算法
Ceph使用CRUSH(Controlled Replication Under Scalable Hashing)算法来确定数据存储位置:
- 去中心化:无需中心节点,客户端可直接计算数据位置
- 可扩展:支持大规模集群
- 灵活:支持自定义故障域(如机架、机房)
二、数据保护
- 多副本:默认3副本,数据自动复制到不同OSD
- 纠删码:可选的数据保护方式,节省存储空间
第四部分 部署方式
一、手动部署
使用ceph-deploy或cephadm工具部署:
bash
# 安装ceph-deploy
pip install ceph-deploy
# 创建集群
ceph-deploy new node1 node2 node3
# 安装Ceph
ceph-deploy install node1 node2 node3
# 初始化Monitor
ceph-deploy mon create-initial
# 创建OSD
ceph-deploy osd create node1:/dev/sdb二、容器化部署
使用Cephadm或Rook(Kubernetes环境)部署。
第五部分 优缺点
| 优点 | 缺点 |
|---|---|
| 统一存储,支持块、文件、对象三种接口 | 部署和管理复杂 |
| 高可用、自愈、可扩展 | 对硬件要求较高 |
| 开源免费 | 学习曲线陡峭 |
第六部分 典型应用场景
- 云平台存储:为OpenStack、Kubernetes提供存储后端
- 大数据存储:替代HDFS,提供更灵活的存储接口
- 企业级存储:替代商业存储产品,降低成本