互联网技术详解 | 分布式存储技术及实践

数字化领航
传统存储在应对这些PB甚至EB级海量非结构化数据存储需求难以满足的同时,其技术架构也面临着诸多挑战,已经很难满足不断增长的数据需求,主要包括超大规模的横向扩展、越来越高的性能要求、数据长期存储的可靠性、统一资源池的管理、更低的TCO总体拥有成本等。

在今天的数字化时代,云计算、互联网、社交媒体以及大数据的发展,使得数据量呈现爆炸式增长。据IDC预测,2018年到2025年之间,全球产生的数据量将会从33 ZB增长到175 ZB,复合增长率达到27%,其中超过85%的数据都会是处理难度较大的非结构化数据。预计到2030年全球数据总量将达到3,5000EB。

2345截图20211028093243.png

传统存储在应对这些PB甚至EB级海量非结构化数据存储需求难以满足的同时,其技术架构也面临着诸多挑战,已经很难满足不断增长的数据需求,主要包括超大规模的横向扩展、越来越高的性能要求、数据长期存储的可靠性、统一资源池的管理、更低的TCO总体拥有成本等。

在这种情况下,用户迫切需要新的存储架构来解决这些问题,来满足不同应用的存储资源服务需求,所以随着客户需求的变更及技术的迭代升级发展,分布式存储技术应运而生。

分布式存储系统是一个高性能、可扩容的分布式存储系统,并且它可提供对象、块和文件三种种类存储服务,以满足客户复杂的业务应用场景,分布式存储架构逻辑上可分为四部分:OSD(Object-based Storage Device,对象存储设备)、Monitor(监控服务)、Client(客户端)、MDS(metadata server,元数据服务)。

2345截图20211028093243.png

01、

对象存储设备(OSD)

OSD包括操作系统和文件系统的计算存储单元,其硬件包括处理器、内存、硬盘以及网卡等,守护进程提供数据存储服务。在实际应用中,通常将每块硬盘(SSD或HDD)对应一个OSD守护进程,并将其视为OSD的硬盘部分,处理器、内存、网卡等在同一主机的多个OSD之间进行复用。

02、

监控服务(Monitor)

监控服务持有集群视图信息,包含关于集群本身的逻辑状态和存储策略的数据表示。集群视图包括监控视图、OSD视图、元数据服务视图,这些视图构成了集群的元数据。集群视图信息量较少,只有在集群的物理设备(如主机、硬盘)和存储策略发生变化时视图信息才发生改变。

03、

客户端(Client)

用户通过客户端登陆集群并对集群数据进行读写操作。客户端通过与OSD或者监控服务的交互获取集群视图,然后直接在本地进行计算,得出数据的存储位置后,便直接与对应的OSD通信,完成数据的各种操作。在此过程中,客户端可以不依赖于任何元数据服务器,不进行任何查表操作,便完成数据访问流程。

04、

集群元数据服务(MDS)

元数据是定义数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、指示历史数据、查找资源、文件记录等功能。

数据存储过程

在存储过程中存储的大数据都会被切分成Objects,Objects size大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的ID。

File:File就是用户需要存储或者访问的文件。

Object:object是底层系统所看到的对象。Object与上面提到的file的区别是,object的最大size由管理员限定(通常为2MB或4MB),以便实现底层存储的组织管理。

PG(Placement Group):对object的存储进行组织和位置映射。具体而言,一个PG负责组织若干个object(可以为数干个甚至更多),但一个object只能被映射到一个PG中,即,PG和object.之间是一对多"映射关系。同时,一个PG会被映射到n个OSD上,而每个OSD上都会承载大量的PG,即,PG和OSD之间是“多对多”映射关系。在实践当中,n至少为2,如果用于生产环境,则至少为3。一个OSD上的PG则可达到数百个。

OSD:OSD的数量事实上也关系到系统的数据分布均匀性,因此其数量不应太少。在实践当中,至少也应该是数十上百个的量级才有助于系统的设计发挥其应有的优势。

数据映射过程

基于上述定义,便可以对寻址流程进行解释了。具体而言,寻址至少要经历以下三次映射:

2345截图20211028093243.png

File->object ID映射

Object>PG映射,hash&mask->pgid

PG>OSD映射,CRUSH算法

全分布式架构中,客户端是直接读或者写存放在OSD上的对象存储中的对象(data object)的,因此,需要走完(Pool,Object)→(Pool,PG)→OSD set→OSD/Disk完整的链路,让client存储目标数据object的具体位置。

数据写入时,文件被切分成object,object先映射到PG,再由PG映射到OSD set。每个pool有多个PG,每个object通过计算hash值并取模得到它所对应的PG。PG再映射到一组OSD(OSD个数由pool的副本数决定),第一个OSD是Primary,剩下的都是Replicas。

分布数据的过程:首先计算数据x的Hash值并将结果和PG数目取余,以得到数据x对应的PG编号。然后,通过CRUSH算法将PG映射到一组OSD中。最后把数据x存放到PG对应的OSD中。这个过程中包含了两次映射,第一次是数据x到PG的映射。PG是抽象的存储节点,它不会随着物理节点的加入或则离开而增加或减少,因此数据到PG的映射是稳定的。具体步骤:

(1)创建Pool和它的PG。根据上述的计算过程,PG在Pool被创建后就会被MON在根据CRUSH算法计算出来的PG应该所在若干的OSD上被创建出来了。也就是说,在客户端写入对象的时候,PG已经被创建好了,PG和OSD的映射关系已经是确定了的。

(2)客户端通过哈希算法计算出存放object的PG的ID:

客户端输入pool ID和object ID(比如pool=“liverpool”and object-id=“john”)

对object ID做哈希

对该hash值取PG总数的模,得到PG编号(比如58)(第2和第3步基本保证了一个pool的所有PG将会被均匀地使用)

对pool ID取hash

将pool ID和PG ID组合在一起(比如3.23)得到PG的完整ID。也就是:PG-id=hash(pool-id).hash(objet-id)%PG-number

2345截图20211028093243.png

(3)客户端通过CRUSH算法计算出object会被保存到PG中OSD位置。

对客户端来说,只要它获得了Cluster map,就可以使用CRUSH算法算出某个object将要所在的OSD的ID,然后直接与它通信。

client从MON获取最新的cluster map。

client根据上面的第(2)步计算出该object将要在的PG的ID。

client再根据CRUSH算法计算出PG中目标主和次OSD的ID。也就是:OSD-ids=CURSH(PG-id,cluster-map,crush-rules)。

CRUSH算法

为了保证负载均衡,保证新旧数据混合在一起。但是简单HASH分布不能有效处理设备数量的变化,导致大量数据迁移。应用了CRUSH算法,它是一种伪随机数据分布算法,它能够在层级结构的存储集群中有效的分布对象的副本。CRUSH实现了一种伪随机(确定性)的函数,它的参数是object id或object group id,并返回一组存储设备(用于保存object副本OSD)。CRUSH需要cluster map(描述存储集群的层级结构)、和副本分布策略(rule)。

CRUSH算法根据每个设备的权重尽可能概率平均地分配数据。分布算法是由集群可用存储资源以及其逻辑单元的map控制的。这个map(如下图所示)的描述类似于一个大型数据中心的描述:数据中心(root)由各个机房(row)组成,机房由一系列的机柜(rack)组成,机柜装满服务器(host),服务器装满磁盘(osd)。数据分配的策略是由定位规则来定义的,定位规则指定了集群中将保存多少个副本,以及数据副本的放置有什么限制。例如,可以指定数据有三个副本,这三个副本放置在不同的机柜中,使得三个数据副本不共用一个物理电路。

2345截图20211028093243.png

给定一个输入x,CRUSH算法将输出一个确定的有序的储存目标向量。当输入x,CRUSH利用强大的多重整数hash函数根据集群map、定位规则、以及x计算出独立的完全确定可靠的映射关系。CRUSH分配算法是伪随机算法,并且输入的内容和输出的储存位置之间是没有明显相关的关系。我们可以说CRUSH算法在集群设备中生成了“伪集群”的数据副本。集群的设备对一个数据项目共享数据副本,对其他数据项目又是独立的。

CRUSH算法通过每个设备的权重来计算数据对象的分布。目的是利用可用资源优化分配数据,当存储设备添加或删除时高效地重组数据,以及灵活地约束对象副本放置,当数据同步或者相关硬件故障的时候最大化保证数据安全。

H3C X10000海量存储系统,是H3C自主研发的新一代全对称分布式存储。X10000在同时支持块、文件、对象与HDFS存储能力,最大支持4096个节点的横向扩展,单一命名空间支持EB级容量,系统的性能和容量随节点数增加呈线性增长。

该产品拥有高性能、高扩展、高可靠、易管理维护等特性,广泛适用于互联网行业云计算、虚拟化、数据库、文件共享、票据影像、HPC、视频监控、归档备份等场景,为用户提供海量存储资源池。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论