Skip to content

第一章 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,提供更灵活的存储接口
  • 企业级存储:替代商业存储产品,降低成本