丝析发解丨分布式存储系统基本原理

本文详细介绍了分布式存储的定义,包括其通过软件连接服务器形成存储池,具备故障容忍和可扩展性等特点。重点讲述了如何通过划分小盘和Raft组实现扩展,以及数据分散到不同Raft组的Sharding方法,以块接口为例进行解释。作者黄岩,云和恩墨的分布式存储专家,分享了深入的技术原理。
摘要由CSDN通过智能技术生成

0de6f54807fb9c58ab21584926657c79.png

什么是分布式存储?先给他下个定义,满足下面四个特征的存储系统,就是分布式存储:

  • 【软件+服务器 => 专业存储】分布式存储是通过网络连接起来的多个服务器,运行特殊软件,构成像磁盘阵列那样的专业存储系统。

  • 【用软件整合硬盘 => 存储池】不同服务器节点的软件之间协同工作,把服务器上的硬盘都整合起来,成为一个大的存储池。

  • 【容忍故障】这个存储系统可以容忍硬盘故障,也可以容忍服务器故障。

  • 【可扩展】存储池容量不足,或者性能不足,可以通过增加硬盘,或者增加服务器,来扩展存储池的容量,或者扩展性能。

软件怎么整合硬盘呢?怎么容忍故障呢?下图是一个容易想到的方法,三个服务器节点构成一个组,把数据在这三个节点之间复制三份,用Raft这类共识协议来保证一致性。当其中一个节点故障了,换一个新节点进来;一个硬盘故障了,就换一个硬盘进来。这样,上面4个特征的前3个都可以满足。

ca0261765721613638d80e56892d527a.jpeg

唯独无法满足第4个特征【可扩展】,怎么办呢?

实际上,按照硬盘来构成Raft组,也无法扩展。解决扩展性问题的方法是:把硬盘分为小盘,用小盘来构成多个Raft组。每3个小盘构成的一个组,在Ceph中被叫做PG(Placement Group),放置组。在 zStorage 中借用了Ceph的概念,也被称为PG。zStorage与Ceph的不同在于:zStorage用了Raft,Ceph使用了自定义的共识协议。

如下图所示,每个硬盘被划分4个小盘,3个节点,一共6个硬盘,24个小盘。每3个小盘构成1个Raft组,这24个小盘构成8个Raft组。

acf54225a11b2d47e192f192942579fc.jpeg

如下图所示,增加一个服务器节点之后,小盘总数量不变,还是24个。但是以前3个节点中的部分小盘中的数据,被迁移到了新的服务器节点上,这样每个硬盘中只有3个小盘了,那么每个小盘的空间也就自动扩大了。就是通过这种方式,实现自动扩容的。

481a9b5ab7d2e9e782683baea3852b71.jpeg

如下图所示,4个节点的情况下,如果一个节点故障了,那么再把这个故障节点上的小盘的数据,迁移到剩下的3个节点上,当然,前提是剩余存储空间足够。这样迁移之后,数据还能保持三副本。

7a7d8ced4c18de5044dd16a58cadcc63.jpeg

分布式存储系统如何把数据分散(Sharding)存到不同的Raft组中(也叫做PG)?

分布式存储系统对外提供的接口有三种:对象接口、块接口、文件接口。下面以块接口为例,讲一下如何分散(Sharding)存数据。

所谓块接口,在客户端看来就是,它里面有多个虚拟的硬盘,存储术语叫做LUN。其实,每个虚拟的硬盘,就是从这个高可靠的、可扩展的存储池中,划分出的一部分存储空间。也就是,客户端看到虚拟硬盘的所有磁道(sectors),在存储池中都对应一个Raft组。每个Raft组里面都承载了很多个磁道(sector)。

这些Sector与Raft组怎么对应呢?如下图所示,每个虚拟的硬盘,有一个Lun_ID;每个磁道,有一个LBA地址。把LUN_id和LBA地址这两个值,交给hash算法,可以计算出一个PG_id,用这个PG_id就可以寻址唯一Raft组了(Raft组也叫做PG)。

375bc95a23c15078db580bc894369504.jpeg

如果读完了以上这三条,那么恭喜,您已经掌握了90%分布式存储系统基本原理。

c1230e43df564482f02180896780b608.png

作者简介

黄岩,云和恩墨分布式存储软件总架构师,十余年存储研发经验,在NAS和备份领域有深入钻研,曾担任某NAS产品性能SE,负责产品性能调优工作,该产品在2011年打破了SPESsfs性能测试世界纪录。

「墨读时刻」特别节目黄岩人物专访即将上线,听一位存储老兵讲述摸爬滚打的这些年和对未来自研存储的洞察,敬请期待... ...

04599e1a35208f04de5d18830f44a0e1.png

44d0ff5141ae390d6cc201dc77b11588.gif

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,以“数据驱动,成就未来”为使命,是智能的数据技术提供商。我们致力于将数据技术带给每个行业、每个组织、每个人,构建数据驱动的智能未来。

云和恩墨在数据承载(分布式存储、数据持续保护)、管理(数据库基础软件、数据库云管平台、数据技术服务)、加工(应用开发质量管控、数据模型管控、数字化转型咨询)和应用(数据服务化管理平台、数据智能分析处理、隐私计算)等领域为各个组织提供可信赖的产品、服务和解决方案,围绕用户需求,持续为客户创造价值,激发数据潜能,为成就未来敏捷高效的数字世界而不懈努力。

4d89c854d0d5cba6e293a19db261521c.gif

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值