Infinidat存储架构技术概述

InfiniBox是一种现代存储系统,可立即插入魔术方块的右侧。它的独特性是什么?

简要背景

什么是InfiniBox?这是一个Infinidat存储系统。什么是Infinidat?这是由Moshe Yanay(Symmetrix和XIV的创建者)创建的公司,用于实施理想的企业级存储项目。

该公司是作为软件开发人员创建的,该软件安装在经过验证的设备(即SDS)上,但是是一个整体。

介绍

在本文中,我们将介绍InfiniBox存储系统,其体系结构,其工作方式以及以相对较低的价格获得的高可靠性(99.99999%),性能和容量。由于存储系统的基础是其软件,尤其是对于该系统,主要重点将放在软件上,因此不会有任何漂亮的照片腺体。

为什么您在市场上需要另一个存储系统?

许多任务需要非常大的容量,而可靠性和性能也很重要。例如,云系统,大型公司的标准任务,物联网,基因研究,大型结构的安全系统。很难找到适合此类任务的最佳存储系统,尤其是在价格方面。着眼于此类任务,构建了InfiniBox的软件体系结构。

寻址

如何存储无限量的数据?通过提供无限的地址空间。为此,InfiniBox使用VUA-虚拟用户地址空间。用户可以在InfiniBox上创建的所有对象(卷,快照,文件系统)都包含在此VUA中,这些对象的总大小是VUA的当前大小。寻址很薄,并且不与磁盘关联:也就是说,VUA的大小可能比可用磁盘容量大得多,并且实际上是无限的。



接下来,我们需要将此空间划分为我们要服务的部分,以便更轻松地使用它们。



整个地址空间分为6部分-VU(虚拟单元-虚拟部分)。每个对象的地址空间(例如卷)均在这些部分之间平均分配。录制以64kB的块进行,在此过程中,您可以非常简单,迅速地了解此卷地址所属的VU(LBA / 64kB余数的除法,取模功能,在最少的CPU周期内就可以很快完成)。

除了以较小的空间简化工作之外,VU还是从物理磁盘进行抽象的第一级,并且是控制器级系统容错的基础。例如,有3个控制器(物理服务器),每个控制器负责操作,并且是两个VU的主要控制器,以及另外两个VU的备用控制器。该控制器不为其保留的VU提供服务,但同时从另一个控制器接收该VU的元数据和写入操作,因此在主控制器发生故障的情况下,它将立即接管该VU的所有工作。



如果一个控制器发生故障,其他两个控制器将接管其任务-使用其VU。



寻址,快照,缓存



VUA是可供用户使用的虚拟地址空间,实际上是无限的。 VDA(虚拟磁盘地址)是虚拟内部存储空间。它的大小由硬盘驱动器的数量和容量(减去奇偶校验,元数据和更换故障驱动器的空间)预先严格确定。 VUA和VDA之间的连接是通过Trie(前缀树)进行组织的。树中的每个条目都是从用户空间(VUA)到内部空间(VDA)的指针。以前缀树的形式寻址允许您寻址任何大小的块。也就是说,将任何大小的元素(文件,串行数据流,对象)添加到磁盘后,都可以使用树中的一条记录对其进行寻址,并且树保持紧凑。

但是,树的最重要特征是搜索和扩展树时的高性能。当需要在磁盘上查找具有给定地址的块时,将在读取操作期间执行搜索。树的扩展发生在写操作期间,当我们将新数据添加到磁盘时,必须在树上添加一个可以找到它的地址。在使用大型结构时,性能非常重要,并且前缀树使您可以在将来(例如在磁盘容量增加的情况下)获得巨大利润。

关于VUA和VDA之间的关系可以说:

  1. VUA大小可能远远超过VDA大小
  2. 在将精简配置写入其中之前,VUA与VDA无关
  3. 多个VUA可以引用一个VDA(快照/克隆)

因此,通过VUA和VDA的组织,它们之间的连接以及这些连接的寻址,您可以实现非常快的快照和自动精简配置。由于创建快照仅是更新内存中的元数据,并且是工作时不断发生的操作,因此实际上此操作不需要任何时间。通常,在创建快照时,经典存储系统会停止更新元数据和/或I / O,以保证事务的完整性。这导致不均匀的I / O延迟。所讨论的系统的工作原理不同:什么都不会停止,并且块元数据中的时间戳(64 + 4KB)用于确定操作是否在快照中。因此,系统可以拍摄数十万张照片,而不会减慢工作速度,具有数百个快照的卷和没有快照的卷的性能没有什么不同。由于所有操作都在内存中完成,并且它们是常规过程,因此可以在卷组上每秒拍摄几十个快照。这使您可以在快照上实现异步复制,并且副本之间的差异只需几秒钟甚至更少,而且又不影响性能,这也很重要。

让我们看一下整个系统,数据如何运行。通过所有三个控制器(服务器)的端口接收操作。端口驱动程序在用户空间中工作,如果端口上事件的任何组合使驱动程序挂起,则您可以简单地重新启动它们。在经典实现中,这是在内核中完成的,而问题是通过重新启动整个控制器来解决的。

接下来,将流分为64KB + 4KB的部分。这些额外的4KB是什么?这是防止静默错误的保护措施,它包含校验和,时间以及有关该操作的其他信息,这些信息用于对该操作进行分类,并用于优化缓存和预读。



记录缓存是一件非常简单的事情,不能说阅读。如果我们知道要读取的内容,则读取缓存效果很好。经典系统使用顺序访问预读算法。但是,随心所欲怎么办?完全随机访问在实际应用程序中极为罕见,即使正确模拟它也是非常困难的,编写一个真正的随机数生成器是一项相当有趣的任务。但是,如果像传统系统那样单独考虑每个I / O操作,则除了完全顺序的操作外,所有其他操作都是任意且不可预测的。但是,如果您花了一段时间查看整个I / O流,则可以看到结合了不同操作的模式。

系统缓存基本上对卷,文件,基于VUA的任何逻辑结构一无所知。缓存仅基于节的行为和属性来查看节及其元数据,这使您可以查找实际连接的不同应用程序之间的依赖关系。对于输入输出操作,构造活动矢量。



系统累积统计信息,构建这些活动向量,然后尝试识别当前的I / O并将其绑定到已知向量或构建新的向量。识别后,根据向量进行预测读取,即预测应用程序行为,并对看似任意的负载执行预测读取。

刻录到光盘

14个部分以条带形式组装在一起以进行固定。这是通过一个特殊的过程完成的,该过程为这种条带选择部分。



接下来,考虑两个奇偶校验部分-条带已准备好写入磁盘。奇偶校验是通过基于XOR的几次运算来计算的,这比基于Reed-Solomon代码的速度快两倍。进一步的条带(14 + 2个部分)分配给RAID组(RG)。 RAID组只是用于存储多个条带的对象,仅此而已。条带按如下所示进行分组,一个在另一个之上,垂直列称为RAID组的成员。 VDS(虚拟磁盘空间)是可用于用户数据的磁盘空间,而VDA是其中的地址。



RAID组的一列或成员被写入一个机架(磁盘单元)中的一个磁盘(PD-物理驱动器)。写入RAID组成员的位置称为磁盘分区(DP-Drive Partition)。磁盘上DP的数量是恒定的,等于264,其大小取决于磁盘的大小。这种设计使您可以均匀地加载所有磁盘。同时,该算法将一个RAID组中的列尽可能远地分布在不同的磁盘和架子上。这导致以下事实:当两个磁盘发生故障时,它们上的公共条带数量同时最小,并且系统在几分钟之内从保护状态N切换到N + 1,从而立即重建了缺少两列的那些条带(可靠性为7个9)。 )



结果,整个系统的逻辑设计看起来非常简单,并在下图中显示。



物理实施

该系统的构造使其所有组件均根据N + 2或2N方案得到保护,包括阵列内部的电源和数据通道。这是电源实现图。

ATS(自动转换开关)-ATS,相位开关
BBU(备用电池)-UPS,不间断电源
节点-控制器



通过此方案,您可以在复杂事件(例如,电源故障和一个电源电路的临时关闭)中保护控制器和内存的完整性。 UPS易于管理,可让您获取准确的充电信息并灵活更改缓存大小,以便控制器始终有时间对其进行重置。也就是说,与传统方案不同,当仅在电池充满电时才打开缓存时,系统会更早地开始主动使用缓存。

这是系统内数据通道的示意图。



控制器通过Infiniband互连,并通过SAS连接到驱动器。每个控制器都可以访问系统中的每个磁盘。此外,如果控制器和磁盘之间的连接不起作用,则控制器可以通过Infiniband通过充当代理的另一个控制器请求数据。机架包含用于同时访问磁盘的SAS交换机。每个磁盘架包含60个磁盘,磁盘架可以是2个,4个或8个,总共多达480个3、4、6、8或12 TB磁盘。未经压缩,可供用户使用的总容量超过4.1PB。说到压缩,为了实现压缩而不损失性能,不对内存进行压缩,结果,系统有时会以更快的速度打开压缩工作-在读取时,您需要读取的内容较少,有足够的处理器能力,刻录时,答案直接来自内存,直接刻录到光盘的过程中异步进行压缩。

控制器内部包含两组磁盘:一组磁盘用于刷新RAM,另一组磁盘用于SSD上的读取操作(每个系统最多368TB)。如此大的缓存可以预测性地读取大块数据,并且由于以接近相同的访问频率选择条带中的数据,因此这样的大块数据不仅减少了物理磁盘上的负载,而且在不久的将来有很大的需求机会。

结束语

因此,我们讨论了一个非常有趣的存储系统,该系统具有现代架构,并提供高容量,高可靠性,出色的性能和足够的成本。



资料来源
1 https://techfieldday.com/video/infinidat-solution-deep-dive/
2 https://support.infinidat.com/hc/zh-CN

All Articles