AnyShare ECeph 存储架构浅析
ECeph是一个可大规模横向扩展的分布式对象存储系统,提供可支持副本和纠删码数据冗余策略的对象存储服务。 ECeph对象存储系统通过软件将通用硬件的本地存储资源整合从而构建分布式存储池,提供企业级的可靠性和可用性。
AnyShare内容数据湖需要对象存储服务的海量内容存储能力,对象存储服务主要提供非结构化数据的二进制内容的存储服务。ECeph对象存储服务是AnyShare的对象存储集群的选择之一,具有统一内容管理、横向扩展和海量存储能力,可为AnyShare组建多对象存储集群。
ECeph对象存储由分布式存储集群RADOS和对象存储网关RGW构成。
对象存储网关守护进程(radosgw),使用librados接口和RADOS集群交互。其提供了与Amazon S3兼容的接口,将使用S3协议上传的对象进行处理,存储到RADOS集群中,如下图所示:
ECeph对象存储架构
RADOS分布式存储集群则包括两种类型的守护进程:OSD和Monitor。由OSD守护进程处理存储设备上的读/写操作。同时通过Monitor维护着集群运行图的主副本。Monitor集群确保了当某个Monitor失效时的高可用性。存储集群客户端向Monitor索取集群运行图的最新副本。ECeph OSD 守护进程检查自身状态、以及其它 OSD 的状态,并报告给Monitor。RADOS集群的客户端和各个OSD守护进程使用 CRUSH 算法高效地计算数据位置,而不是依赖于一个中心化的查询表。
传统文件系统通过元数据(Metadata)或文件分配表(FAT)查找数据块存放位置。ECeph使用分布式存储系统,摒弃了传统的数据存储方案,使用CRUSH算法来计算数据块的存放位置。
CRUSH算法是一种数据分布算法,具有以下特点:
Ø 故障隔离:同一份数据的不同副本分布在不同节点的磁盘上,降低节点或者磁盘故障带来的数据损坏风险;
Ø 负载均衡:CRUSH算法将数据块充分打散,数据能均匀的分布到不同容量的节点上,避免节点负载不同带来的性能瓶颈。
Ø 分布式元数据:CRUSH算法通过CRUSH MAP和一些规则,能够快速定位数据块位置,避免元数据热点导致的性能瓶颈。
Ø 最优的动态变化:CRUSH算法具有动态适应性,当CRUSH MAP变化时,CRUSH算法以最小化数据迁移,重新恢复数据平衡分布。