存储根据其类型,可分为块存储,对象存储和文件存储。在主流的分布式存储技术中,HDFS/GPFS/GFS 属于文件存储,Swift 属于对象存储,而 Ceph 可支持块存储、对象存储和文件存储,故称为统一存储。
几种主流分布式存储技术的特点比较如下:
1 Ceph
Ceph 最早起源于 Sage 就读博士期间的工作、成果于2004年发表,并随后贡献给开源社区。经过多年的发展之后,已得到众多云计算和存储厂商的支持,成为应用最广泛的开源分布式存储平台。
Ceph 根据场景可分为对象存储、块设备存储和文件存储。Ceph相比其它分布式存储技术,其优势点在于:它不单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。同时,由于采用了CRUSH、HASH等算法,使得它不存在传统的单点故障,且随着规模的扩大,性能并不会受到影响。
1.1 Ceph 的主要架构
-
Ceph 的最底层是 RADOS(分布式对象存储系统),它具有可靠、智能、分布式等特性,实现高可靠、高可拓展、高性能、高自动化等功能,并最终存储用户数据。RADOS系统主要由两部分组成,分别是OSD和Monitor。
-
RADOS 之上是 LIBRADOS,LIBRADOS 是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。
-
基于 LIBRADOS 层开发的有三种接口,分别是 RADOSGW、librbd 和 MDS。
-
RADOSGW 是一套基于当前流行的RESTFUL协议的网关,支持对象存储,兼容S3和Swift。
-
librbd 提供分布式的块存储设备接口,支持块存储。
-
MDS 提供兼容 POSIX 的文件系统,支持文件存储。
1.2 Ceph 的功能模块
-
Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下:
-
Client客户端:负责存储协议的接入,节点负载均衡
-
MON监控服务:负责监控整个集群,维护集群的健康状态,维护展示集群状态的各种图表,如OSD Map、Monitor Map、PG Map和CRUSH Map
-
MDS元数据服务:负责保存文件系统的元数据,管理目录结构
-
OSD存储服务:主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。一般情况下一块硬盘对应一个OSD。
1.3 Ceph 的资源划分
-
Ceph 采用 crush 算法,在大规模集群下,实现数据的快速、准确存放,同时能够在硬件故障或扩展硬件设备时,做到尽可能小的数据迁移,其原理如下:
-
当用户要将数据存储到Ceph集群时,数据先被分割成多个object,(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。
-
由于object的数量很多,为了有效减少了Object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group ):PG用来管理object,每个object通过Hash,映射到某个pg中,一个 pg 可以包含多个 object。
-
Pg再通过CRUSH计算,映射到osd中。如果是三副本的ÿ