未解决
此帖子已超过 5 年
2 Intern
•
4K 消息
0
1606
EMC XtremIO全闪存阵列——工作原理
EMC XtremIO全闪存阵列——工作原理
转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
介绍
EMC XtremIO是一款全闪存横向扩展企业存储阵列,不仅提供了高水平的性能和可扩展性,也为SAN存储带来了全新水平的易用性。作为过去一年的全闪存阵列全球销量第一的产品,XtremIO到底有什么特别之处?本文将介绍XtremIO的独特工作原理。
更多信息
工作原理:
数据进入系统后,XtremIO存储阵列会在数据块中对其进行自动减少处理(消除重复数据并压缩)。重复数据消除(在整个系统中)是全局性的,始终开启,并且实时执行(从不作为后处理操作)。消除重复数据后,数据会进行内联压缩,然后才会写入SSD。
XtremIO采用全局内存缓存,可感知已消除的重复数据,以及基于内容的分布,本身即可使数据平均分布在整个阵列中。所有卷都可以通过全部X-Brick和全部存储阵列主机端口进行访问。
系统采用了高可用性的后端InfiniBand网络(由EMC提供),可提供高速度、超低延迟和群集中所有存储控制器之间的远程直接内存访问(RDMA)。通过利用RDMA, XtremIO系统本质上成为了一个跨越所有存储控制器的单一、共享内存空间。
单个X-Brick的有效逻辑容量会有所不同,这取决于所存储的数据集。
· 对于在很多虚拟克隆环境(如虚拟桌面集成VDI)中很常见的高度重复信息,有效可用容量会远远高于可用物理闪存容量。此类环境下重复数据消除比率的范围通常在5:1到10:1。
· 对于在很多数据库和应用程序数据中很常见的可压缩数据,压缩率的范围在2:1到3:1。
· 虚拟服务器基础架构(VSI)等能同时从重复数据消除和数据压缩中获益的系统通常能实现6:1比率。
映射表:
每个存储控制器都维护着一个表格,该表格管理着每个数据块在SSD中的位置。该表格包含两个部分:
· 该表格的第一部分将主机LBA映射到它的内容指纹。
· 该表格的第二部分将内容指纹映射到它的SSD位置。
使用该表格的第二部分,为XtremIO提供了独特的功能,使其能将数据均匀地分布在阵列中,并将每个数据块放在SSD中最合适的位置上。它还允许系统跳过无响应的驱动器,或当阵列将满、没有空的条带可供写入时,选择在哪里写入新的数据块。
写入I/O流的工作原理:
在典型的写入操作中,传入的数据流到达任何一个“Active-Active”双活式存储控制器,然后被分解为数据块。对于每个数据块,阵列都会利用唯一的标识符来采集数据的指纹。
阵列用这个指纹来维护一份表格(如下表所示),以此确定传入的写入是否已存在于阵列之中。该指纹也用于确定数据的存储位置。LBA到内容指纹的映射记录在存储控制器内存里的元数据中。
注意:
在上表中,数据块的颜色与其内容对应。唯一的内容以不同的颜色来表示,重复的内容以同一种颜色来表示(红色)。
系统会检查指纹和相应的数据块之前是否已有存储。如果指纹是新的,系统将:
· 压缩数据。
· 在阵列上选择将要放置数据块的位置(基于指纹,而不是LBA)。
· 创建“指纹到物理位置”的映射。
· 为指纹增加1的参考计数。
· 执行写入。
假如出现“重复”写入的情况,系统会将新的LBA记录到指纹映射上,并增加该特定指纹的参考计数。由于数据已经存在于阵列中,因此无需更改指纹到物理位置的映射,也无需向SSD写入任何内容。所有元数据更改均发生在内存中。因此,已消除重复数据的写入,比第一次唯一数据块的写入要快。这是XtremIO内联式数据减少的独特优势之一,重复数据消除实际上提升了写入性能。
对SSD数据块的实际写入是异步执行的。在应用程序写入时,系统会将数据块放入内存中的写入缓冲区(通过RDMA复制到不同的存储控制器对其进行保护),并立即向主机返回确认消息。当缓冲区中收集了足够的数据块,系统会将它们写入到SSD上的XDP(XtremIO数据保护)条带上。这个过程以最有效的方式进行,在《XtremIO Data Protection (XDP)》白皮书中有详细的解释。
当写入I/O被发到阵列中时:
1. 系统会分析传入的数据,并将其分割为数据块,如下图所示。
2. 对于每个数据块,阵列都会为数据分配一个唯一的指纹,如图所示。
阵列用这个指纹来维护一份表格,以此确定之后的写入是否已存在于阵列之中,如上文映射表所示。
· 如果一个数据块在系统中不存在,处理存储控制器会记录下将数据块写入其他存储控制器的意图,使用指纹来确定数据的位置。
· 如果一个数据块已经存在于系统中,则不会写入,如图所示。
3. 该阵列会增加每个数据块的参考计数。
4. 采用一致的分布式映射,每个数据块被路由到负责相关指纹地址空间的存储控制器。
一致的分布式映射以内容指纹为基础。计算指纹的数学进程的结果是使指纹值均匀分布,指纹映射均匀分布在群集中的所有存储控制器中,如图所示。
注意:
群集中的数据转移是通过低延迟、高速度的InfiniBand网络使用RDMA来执行的。
5. 系统向主机发回确认消息。
6. 由于指纹功能是均匀分布的,群集中的每个存储控制器都会收到均等数量的数据块。当其他数据块到达时,它们将填充条带,如图所示。
7.系统会压缩数据块以进一步减少每个数据块的大小。
8.一旦存储控制器有了足够的数据块来填充阵列中可用空间最多的条带(或可用的完整条带),存储控制器就会将数据块从缓存中转移到SSD,如图所示。
读取I/O流的工作原理:
在数据块的读取操作中,系统将在LBA到指纹的映射中查找逻辑地址。一旦发现指纹,系统就会查找指纹到物理的映射,然后从特定物理位置检索数据块。由于数据在群集和SSD中是均匀写入的,因此读取负载也是均匀分担的。
XtremIO在每个存储控制器中都有基于内存的读取缓存。
· 在传统阵列中,读取缓存按照逻辑地址进行组织。位于更容易被读取的地址上的数据块,被放置在读取缓存中。
· 在XtremIO阵列中,读取缓存按照内容指纹进行组织。内容(以其指纹ID来表示)更容易被读取的数据块,被放置在缓存中。
这使得XtremIO的读取缓存可以感知重复数据消除,也就是说,它相对较小的读取缓存,显得比同尺寸传统缓存要大很多。如果请求的数据块大小超过相应数据块,则XtremIO将在群集中执行并行数据块读取,并将它们集合到更大的数据块中,再将它们返回应用程序。压缩的数据块会在交付前解压缩。
当读取I/O被发到阵列中:
1. 系统会分析传入请求,以确定每个数据块的LBA,并创建一个缓冲区来保存数据。
2. 下列进程将并行发生:
· 对于每个数据块,阵列将找到存储的指纹。指纹可确定数据块在X-Brick中的位置。对于较大的I/O(如256K),会有多个X-Brick参与每个数据块的检索。
· 系统在InfiniBand上通过RDMA将请求的读取数据传输到处理存储控制器中。
3. 系统将完整填充的数据缓冲区发送回主机。
参考
EMC技术白皮书
Introduction to EMC XtremIO Storage Array (ver. 3.0)
应用于
EMC XtremIO