所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级
OceanStor Dorado V3系列 V300R001 基础存储业务配置指南

本产品文档适用于OceanStor Dorado5000 V3, Dorado6000 V3和Dorado18000 V3。本文档从基本概念、配置和管理等方面分别介绍了基础存储业务的具体配置过程。

评分并提供意见反馈 :
华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
基础存储原理

基础存储原理

存储系统采用了RAID2.0+和动态RAID技术,实现了存储池中资源的动态分配和扩展,提升了存储池中数据的读写响应速度,缩短了硬盘故障后的重构时间。

基本概念

在了解基础存储原理前,您需要先了解一些基本概念。

  • 块虚拟化:一种新型RAID技术。该技术将硬盘划分成若干固定大小的块(CHUNK),然后将其组合成若干个CKG。当某一硬盘发生故障时,故障硬盘中CHUNK所在CKG的来源硬盘都参与重构,大大增加了参与重构的硬盘的数量,从而消除传统RAID组的重构性能瓶颈,提高数据重构速度。
  • CHUNK:将硬盘按照固定粒度切分为Block,并且给每个Block分配编号后形成CHUNK,简写为CK,是组成RAID的最小单位。
  • CHUNK Group:从不同硬盘中选取N+M个CK组成的逻辑集合,N为CKG中数据列的数目,N大小是动态的,根据当前参与的硬盘数决定。M为CKG中校验列的数目,M大小是固定的,不同数据类型M值不同,元数据CKG情况下M默认为3且不可更改;数据CKG情况下默认为2。CHUNK Group具有RAID属性,简写为CKG。
  • Zone:一堆CKG的组合,用于管理CKG。不同Zone具有不同的RAID属性、用途(数据、日志、根元数据)、写IO方式。
  • Grain:Grain是在CKG中按照固定大小进一步划分的更细粒度的块(默认8KB)。它是组成thin LUN的基本单位,Grain内的LBA(Logical Block Address)是连续的。
  • 动态RAID:一种新型的RAID算法。该技术允许在全SSD闪存配置下,能够动态调整RAID中数据块的数目,从而满足系统可靠性和容量要求。当出现某个CHUNK损坏,并且无法从RAID的成员盘以外选择新的CHUNK时,系统使用动态方式将原来N+M分条中的数据重构至新的(N-1)+M分条中。当有新的SSD盘插入时,系统重构RAID,动态的将原来(N-1)+M分条中的数据搬移至新的N+M分条中,提升硬盘利用率。
  • 硬盘域:硬盘域是由多块硬盘组合而成。
  • 存储池:存储池创建于硬盘域中,是存放存储空间资源的容器,所有应用服务器使用的存储空间都来自于存储池。
  • 热备空间:块虚拟化技术中用于重构故障块数据的空间。在某一CK故障时,系统将使用热备空间中的CK顶替故障的CK,并通知CKG中其他CK向该热备空间进行数据重构,以保证数据的安全性和读写性能不受影响。
  • 重构:重构是当某块硬盘发生故障时,将故障硬盘的数据恢复到热备空间的CK中,并将该热备空间的CK代替故障硬盘中的CK的过程。数据重构时,需要通过读取非故障数据和校验数据,并对读取的数据进行相应处理,将数据恢复到热备空间中,从而提升数据的安全性和可靠性。采用传统技术重构时,仅仅是故障硬盘所在的RAID中的所有硬盘参与重构。采用RAID2.0+技术重构时,故障硬盘所在引擎的硬盘都参与重构,可以极大的提升数据重构速度,缩短数据恢复时间。
  • 重复数据删除:一种数据缩减技术,通过删除存储系统中的冗余数据块,减少数据占用的物理存储容量。
  • 数据压缩:指在不丢失信息的前提下,通过对数据进行重新组织,缩减数据量以减少存储空间,提高存储系统的传输、处理和存储效率。

块虚拟化过程

块虚拟化过程如图2-1所示。

图2-1 块虚拟化过程

  1. 多块硬盘组成一个硬盘域。一个硬盘域里只能创建1个存储池。
  2. 存储系统将硬盘域中的存储介质划分为CHUNK。每个CHUNK大小是固定的,不能被修改。
  3. 创建硬盘域时,可设置存储系统的“热备策略”。当硬盘出现故障时,存储系统会使用热备空间进行重构,恢复系统的可靠性。
  4. 存储池由若干个CKG组成,是存放存储空间资源的容器,所有应用服务器使用的存储空间都来自于存储池。
  5. 每一个存储池的CHUNK按照用户设置存储池的“冗余级别”,根据冗余级别系统自动调整数据块和检验块的个数。
  6. 在用户创建LUN时,存储系统以Grain为单位映射到LUN,从而实现对存储的精细化管理。

映射表

每个控制器都维护着映射表格,用以存储用户信息到数据存放位置的映射关系。该表格包含以下几部分:

  • 第一部分将卷信息(LUN ID+Version)映射到他的指纹索引(开启重删时)或Grain地址(关闭重删时)。
  • 第二部分将指纹索引映射到Grain地址(关闭重删时无此部分)。
  • 第三部分将CHUNK地址映射到SSD物理位置。

映射表示例如图2-2所示:

图2-2 映射表示例

写I/O工作原理(开启重删压缩时,系统默认开启)

在主机对存储进行写I/O操作时,写入存储的数据流被分解为多个数据块。对于每个数据块,存储都会利用唯一的标识符来采集数据的指纹。

存储使用这个指纹来维护一份表格以确定数据是否已存在存储中和确定数据的存放位置。卷信息,指纹,Grain的映射记录在元数据中。

当新数据写入时,存储会检查指纹和此数据块之前是否已有存储。

  • 如果指纹是新的,系统将执行如下操作:
    1. 压缩数据(开启重删压缩时)。
    2. 在存储上基于指纹选择将要放置数据块的位置(Grain位置)。
    3. 记录指纹到Grain的映射信息。
    4. 指纹增加1的引用计数。
    5. 根据Grain位置信息将数据写入到SSD物理位置。
  • 如果指纹是旧的,系统进行逐字节比较后,判定是重复数据并将执行如下操作:系统将数据的卷信息记录到指纹映射中,并增加该特定指纹的引用计数。

写I/O流程如图2-3所示。

图2-3 写I/O流程

  1. 主机向存储写入数据。
  2. 存储分析写入的数据,并将其分割为固定的大小的数据块。
  3. 对于每个数据块,存储记录对应的卷信息,并为其分配指纹信息。
  4. 存储根据指纹信息判定是否为重复数据。
    • 如果为重复数据:删除重复数据。
    • 新数据:记录指纹到存储Grain的映射信息。
  5. 增加数据块对应的指纹引用计数。
  6. 将数据块写入Grain中。
  7. 存储向主机返回写成功信息。
  8. 存储将数据写入SSD物理位置。

读I/O工作原理

在主机对存储进行读I/O操作时,系统根据读I/O操作查找读取数据的逻辑地址。一旦发现指纹,存储就查找到指纹到Grain的映射关系,根据Grain到物理的位置检索数据块。

重构

重构采用动态RAID的方式进行重构:重构粒度为CK,根据当前CKG映射信息,排除掉当前CKG已占用的盘ID后,还能够在其他盘上分配到新CK,直接对失效CK进行重构,RAID为N+M不变;如果分配不到其他盘新的CK,那么重构把CKG交由回收进行回收写入,新写入的CKG因为不包含失效盘,所以列数会变成N+M-1,或者是经过重组后变成更少的列数,M不变。

存储系统的重构处理如图2-4图2-5所示。此处以N=10,M=2为例讲述重构过程,其他情况类似。

图2-4 分配到CK的重构处理方式

图2-5 分配不到CK的重构处理方式

从上图可以看出,动态RAID缩列重构的主要思路就是降低RAID的数据盘数目。当某个CK损坏时,从现有的成员盘中选择CK组成新的CKG,从而将损坏数据重构出来写入新的CKG中。由于新的CKG没有盘发生损坏,所以数据冗余没有降低(例如原来是10+2的分条,新分配的分条变成9+2)。

全局垃圾回收

存储池中所有数据和元数据都采用ROW(Redirect On Write)方式写入分条,数据写入新存储位置,同时标记老的存储位置的数据为垃圾数据,在系统运行过程中不断对数据覆盖写和修改元数据,存储空间必然会存在大量的碎片,必须要及时垃圾回收,释放出空闲的空间来满足业务数据写入。

在回收CHUNK时,CHUNK内的垃圾量是随机的,在CKG内不同CHUNK的垃圾量分布不均衡,可能有的CHUNK垃圾量多,有的CHUNK垃圾量少。因此在垃圾回收时,根据CHUNK垃圾量高低,采取不同的回收策略。

存储系统的全局垃圾回收如图2-6所示。

图2-6 全局垃圾回收示意

翻译
下载文档
更新时间:2018-11-01

文档编号:EDOC1000141850

浏览量:24586

下载量:341

平均得分:
本文档适用于这些产品

相关版本

相关文档

Share
上一页 下一页