欢迎来到重庆转折点官方网站
+

加关注

新闻资讯
联系我们 CONTACT US
电话:
023-68828805
19112838315
地址:
重庆九龙坡区高创锦业大厦11-1
邮件:
ZZDZZD@tom.com
传真:

新闻资讯 NEWS CENTER

当前位置:首页 >新闻资讯 >行业动态

专家有料 | 浅谈分布式存储原理

浏览次数:0   更新时间:2022-07-08 发布人:admin

分布式存储的简介

 

 

其实,传统企业集中式存储设备就如同上文中的大胃王。当有大量数据需要存储时,所有数据均可通过存储设备的控制器完成计算,再通过内部总线传输到硬盘框中的硬盘上集中存储起来,最终数据全部集中存储在单套设备上。并且,传统企业的集中式存储设备,存储数据的效率一般来说比普通服务器本地存储效率更高。

 

所以过去很多年,企业集中式存储(如图一)成为了各企业数据存放的核心设备之一。

 
 

 

(图一 集中式存储结构图)

 

 
而我们的主角——分布式存储,就与上题中B选项的情形类似。当有大量数据需要存储时,我们将数据拆分,分成很小的数据块(如图二),然后分发到多个用于存储的普通服务器上。
 
 

 

(图二 数据分片图)

 
即使单个普通服务器的存储效率不如传统的企业集中式存储设备,但是数据分发后,多个设备并发存储,每个用于存储的普通服务器需要存储的数据量较少,最终多个服务器并发存储任务,总的存储效率得到提升。
 

所以在当前云时代背景下,分布式存储也在云场景中不断崛起,广泛用于云场景中。

 

 

就如同上题中所提到的,其实普通人吃馒头的速度肯定不如大胃王快。但是,由于馒头总数有100个之多,大胃王一个接一个地吃掉这些馒头用的时间,理论来说肯定比把馒头分给100个普通人同时吃,每个人吃一个馒头用的时间长。我们把这种吃馒头的模式称为分布式吃馒头,同理我们也把这种由多个普通计算服务器,通过某种系统串联构建起对外提供数据分布存储的方式,称为分布式存储。而大胃王的模式存储数据呢?就是传统的企业集中式存储了。

 

2

 

分布式存储的构成

 

 

分布式存储是相对于集中式存储的另一种存储架构,也可以说是另一种存储系统。行业中有非常多的分布式存储系统,例如华为FusionStorage分布式存储套件,该分布式存储系统是业界领先的分布式存储解决方案之一,广泛应用于传统医疗、金融、教育、制造等行业,同时也用于华为HCS云解决方案中。本文以华为FusionStorage为例进行分析(各分布式存储产品原理都十分相似,即采用哈希路由方式对数据进行分片分发)。

 

 

一般来说分布式存储的存储系统分为三大板块:

 

 

元数据管理模块:对数据存储过程中需要用到的数据分布式规则、数据重建规则、数据读写规则的创造者和维护者,同时也是整个系统健康管理的监控者。

 

 

数据计算分发模块:一般以代理的方式安装在用户侧,在系统内存侧接收需要存储的数据,通过相应规则对数据切块分片,再根据元数据管理模块生产的数据分布式规则,结合哈希计算,将数据分发至各分布式存储的节点内的底层存储介质管理模块。

 

 

底层存储介质管理模块:一般用于管理底层存储介质(如磁盘等),也用于接收上层数据计算分发模块下发的数据分片,并将其存储于所管理的存储介质中。

 

那么华为FusionStorage也采用以上架构模块模式(如下图三)。元数据管理模块为MDC,数据计算分发模块VBS,底层存储介质管理模块OSD

 

 
 

 

 

(图三  FusionStorage 组件图)

 

 

3

 

数据分布式存储规则 

 

 

华为的FusionStorage系统在创建分布式存储的存储池时,系统会针对加入该存储池的各个存储服务器中的存储介质安装OSD模块。一般来说每一块存储介质或者说磁盘都会对应一个OSD模块,该OSD模块负责该磁盘的状态检测接收VBS下发的数据,并存储于该磁盘中。通常存储池会生成对应的MDC模块(一个MDC最多管理两个存储池),首先将存储池托管给该MDC,MDC会生成一个哈希路由圆环,然后将圆环分为N(N=2^32)份分区,根据存储池内OSD的数量,对N份分区进行的均分,每一个OSD都可以分到对应的分区(切记,均分)。

 

 

你可以这样想象,哈希路由圆环就像一个很大的抽奖转盘(如下图四),由MDC生成,然后我们把这个抽奖转盘分为很多个小份区域,每一小份就是上文说的分区。接着我们可以根据OSD的数量,将这些小份区域均分给OSD。假设现在N为36份,且有12个OSD,则一共36个分区,12个OSD,将36个分区均分给12个OSD,每个OSD分到了3个分区。比如分区1-分区3为OSD1的所属分区,分区4-分区6为OSD2的所属分区,以此类推。

 

 
 

 

 

(图四 哈希分区逻辑图)

 

 
最终会形成一个分区对应OSD的对应关系,因为OSD是对应磁盘的管理模块,所以也可以说是分区对应磁盘的关系,我们也可以说这个分区对应磁盘的关系为数据分布式规则,由MDC生成。

 

4

 

数据分布式存储原理

 

 
数据分布式规则?就这?怎么就数据分布式了。
 

现在我们把MDC对应OSD数量生成的数据分布式规则交给VBS模块。VBS是安装在用户系统中的一个代理,当用户需要存放数据在分布式存储中时,VBS会先接收用户的数据,然后对用户数据进行切块分区(一般会把数据分成1MB大小的数据分片,例如一个1GB的视频文件需要存放在分布式存储中,则会被VBS接收后分割为1024个1MB大小的数据分片),接着对每个数据分片带有的SCSI标识进行格式转化,使之成为分布式存储系统使用的Key标识。然后对key进行哈希计算,算出每个数据分片的哈希值。

 

可以这样理解,其实每个数据在操作系统下发存储的时候都会带着一个介绍信(SCSI标识),操作系统告诉数据拿着这个介绍信去找大V哥开房间存放数据。分布式存储的VBS模块就是这个大V哥,当大V哥看到这个介绍信(SCSI标识)后就告诉数据,你的这个介绍信(SCSI标识)现在用不了了,必须重新登记一下,然后VBS就根据介绍信(SCSI标识)又开了一张票(Key)给数据,然后数据拿着这张票(Key)去找大V哥的小弟,小弟就根据票(key)来分配房卡(key带入哈希函数进行计算算出哈希值),开房间存放数据(如图五)。

 
 

 

 

(图五 数据分片逻辑图)

 

 

数据被VBS接收后,最终数据会变成多个1MB的小数据分片,并且每一个1MB的小数据块都会带着最终的哈希值 哈希值可以在0-2^32之间取整,很巧的是,MDC生成的哈希路由圆环也刚好是2^32份个分区,那么哈希值取整是多少,该1MB数据分片就归属于哪一个分区。由于MDC通过对应OSD和哈希路由圆环的分区生成了一个分区对应磁盘的关系(数据分布式规则),那么最终这个数据就存放在该分区对应的磁盘中,该磁盘的OSD会将数据持久化存放在磁盘介质中。(如图六)若上文假设中提到分区1-分区3对应OSD1,刚好现在有一个数据分片对应的哈希值取整后为3,则该1MB数据归属在分区3,分区3对应OSD1,则由OSD1将该1MB数据存放到该OSD对应的磁盘中,完成数据落盘

 

 
 

 

 

(图六   哈希全流程图)

 

 

由于哈希路由圆环所生成的分区是均分对应到OSD上的,所以当大量数据存储时,由于概率,最终数据基本会均分到各个OSD对应的磁盘中存放起来。所有磁盘是并发工作的,都可以接收数据就等同于所有磁盘对应所在的服务器都是并发且相对均衡地接收数据,最终完成数据的分布式存储。

 

 
 
思 考:

通过以上内容,结合华为FusionStorage分布式存储系统给大家分析了分布式存储的存储原理,最后请大家思考另一个问题:

 

如果只有一个馒头或者极少的馒头,你们觉得大胃王和一百个普通人谁吃完这些馒头用的时间更短,效率更高呢?请结合思考分布式存储和传统集中式存储的应用场景区别分析。