SpringCloudAlibaba云商场-分布式文件存储学习(一)

160 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

1.分布式文件存储系统Ceph

Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

对比说明TFSFASTDFSMooseFSGlusterFSCeph
开发语言C++CCCC++
数据存储方式文件/Trunk文件/块对象/文件/块
在线扩容支持支持支持支持支持
冗余备份支持支持支持支持支持
单点故障存在不存在存在不存在不存在
易用性安装复杂,官方文档少安装简单,社区相对活跃安装简单官方文档专业化安装有一定复杂度
适用场景跨集群的小文件单集群的中小文件单集群的大中文件跨集群云存储单集群的大中小文件

1.1Ceph介绍

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

Ceph特点:

CRUSH算法:Crush算法是ceph的两大创新之一,简单来说,ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。Crush算法有相当强大的扩展性,理论上支持数千个存储节点。

高性能:Ceph中的数据副本数量可以由管理员自行定义,并可以通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; ceph可以忍受多种故障场景并自动尝试并行修复。

高扩展性:Ceph本身并没有主控节点,扩展起来比较容易,并且理论上,它的性能会随着磁盘数量的增加而线性增长。
	
特性丰富:Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。在国内一些公司的云环境中,通常会采用ceph作为openstack的唯一后端存储来提升数据转发效率。

Ceph架构:

Ceph架构.jpg 组件对象讲解:

RADOS:就是这样一个可用于PB级规模数据存储集群的可伸缩的、可靠的对象存储服务,可以理解成Ceph的整个存储对象,包括逻辑对象。

File:用户上传的文件

object:上传的文件被切成N个小文件块对象,RADOS的基本存储单元。

MDS:元数据的内存缓存,为了加快元数据的访问。

CRUSH:Ceph寻址算法,用于计算当前文件存储到哪个PG对应的OSD中。

PG:object的存储进行组织和位置映射。具体而言,一个PG负责组织若干个object(可以为数千个甚至更多),但一个object只能被映射到一个PG中,即,PG和object之间是“一对多”映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是“多对多”映射关系。

OSD:RADOS中的存储节点被称为OSD

架构图讲解:

1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
2:切片后的文件object会存入到Ceph中
3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
4:PG是逻辑概念上对文件存储范围划分的索引
5:根据PG索引将文件存储到指定服务器的OSD中

总结:本篇主要简单介绍一下分布式文件存储系统Ceph,Ceph特点,Ceph架构图。