------------------------------------重要说明------------------------------------
以下部分内容来网络,部分自华为存储官方教材
具体教材内容请移步华为存储官网进行教材下载
网络引用内容无法找到原创,如有侵权请通知
------------------------------------重要说明------------------------------------
InfoProtector功能包含四个方面:文件数据的保护, 元数据的保护, 数据恢复以及数据分域。
① 文件数据保护(Erasure Code/分布式RAID)
Erasure code冗余技术又称为分布式RAID技术, 是RAID的超集, 能够支持比传统RAID算法更高的可靠性和更灵活的冗余策略。 Erasure Code对文件进行原始分片( M份) , 将对象分割成固定长度的数据块, 每M个连续数据块通过Erasure Code算法计算出N个校验块( N
OceanStor 9000系统可以对目录/文件配置不同的数据保护方式。 不同的数据保护方式,是通过不同的数据条带化方式实现的。 使用Erasure Code方式时, 写入OceanStor9000系统的数据,会先按4G大小切分Chunk, Chunck再按照128KB为一个分片, 切分为多个源数据分片, 然后对每N个源数据分片,计算得到M个冗余数据分片,最终每N+M个分片组成一个条带, 写入到系统中。 当系统出现故障, 丢失了其中的某些分片时, 只要一个条带中丢失的分片数目不超过M, 仍可进行正常的数据读写。 通过数据恢复算法, 丢失的分片可从剩余分片中计算得到。 在这种方式下, 空间的利用率约为N/(M+N), 数据的可靠性由M值的大小决定, M越大可靠性越高。 使用镜像方式时, 写入OceanStor 9000的数据也将按照128KB进行切片, 不同的是, 系统对每个源数据分片, 都会按照复制的方式存储为多份, 只要其中任意一份不损坏, 就可进行正常地读写。 执行数据恢复时, 丢失的镜像数据直接从完好的数据中复制即可。 同样, 系统可以配置不同的镜像数目, 以得到不同的空间利用率和数据可靠性。 另外, OceanStor9000的分布式文件系统的元数据, 采用的就是镜像的存储方式, 并且对于配置了N+M保护方式的文件来说, 其元数据的镜像数自动设定为M+2份, 这使得OceanStor 9000分布式存储系统的元数据的可靠性高于其数据。
Strip大小可按文件目录手工设置为512KB、 256KB、 128KB、 32KB或16KB。 当一个 Chunk中最后一片数据小于 Strip大小时, 该片数据实际占用空间允许为4KB/8KB/16KB/32KB/64KB/128KB/256KB/512KB。 当一个Stripe中原始数据Strip数目为X( X
a. Strip值调优
b. 分布式RAID存储方式(N+M)
+1:适用于对可靠性要求较低的场景。 指一个数据分条( Stripe) 中有N+1个条带( Strip) , 可允许任意1个存储节点故障而不影响数据完整性。
+2:适用于大多数场景。 指一个数据分条中有N+2个条带, 可允许任意2个存储节点故障而不影响数据完整性。 此模式所需最少存储节点数量为6, 否则将降低冗余度。
+3:适用于对可靠性要求更高的场景。 指一个数据分条中有N+3个条带, 可允许任意3个存储节点故障而不影响数据完整性。 此模式所需最少存储节点数量为7,否则将降低冗余度。
+4:适用于对可靠性要求最高的场景。 指一个数据分条中有N+4个条带, 可允许任意4个存储节点故障而不影响数据完整性。 此模式所需最少存储节点数量为10, 否则将降低冗余度。
+2:1:仅当存储节点数目低于20个时考虑。 指一个数据分条中有N+2个条带, 可允许任意1个存储节点故障而不影响数据完整性。
+3:1:仅当存储节点数目低于20个时考虑。 指一个数据分条中有N+3个条带, 可允许任意1个存储节点故障而不影响数据完整性。
c. 分布式RAID存储方式(N+M:B)
N+M:B的保护方式, 可以支持M个硬盘故障或者B个节点故障, 这在节点数量较少时非常有用。
对于用户来说, 只需要对空目录指定相应的+M( 或者+M:B) 即可, OceanStor9000系统会根据系统当前的节点数量, 自动选取最合适的N, N取值范围2-16,M取值范围1-4。
d. 数据写流程
用户上传的对象数据被切分成若干固定长度的数据块。
每M个数据块通过Erasure Code算法计算出N个冗余校验块( N
数据块组中的数据块和校验块随机保存到不同存储节点的不同硬盘上。
e. 数据读流程
系统读取保存于不同硬盘上的数据块。
系统将读取出来的所有数据块合并成完整的对象数据返回给用户。
f. 数据块损坏时的数据读取和恢复
系统读取保存在不同硬盘上的M个数据块。
发现有数据块损坏, 读取校验块。
根据读取出来的数据块和校验块, 通过Erasure Code算法恢复损坏的数据块,然后将完整的M个数据块返回给系统。
系统将读取出来的所有数据块合并成完整的对象数据返回给用户。
系统将恢复出来的数据块存入其他正常工作的硬盘上。
如果单个数据块组中损坏的数据块和校验块总和大于N, 系统会以更细粒度的数据块重新读取数据( 例如: 64kB, 正常情况下, 系统都是以1MB的数据块粒度读取数据) ,尝试恢复每个已损坏数据块中可读取的数据。 通过这种数据部分修复的方式, 系统可以最大程度地减少损坏的数据块和校验块数量。
注意: 如果大于N个数据块和校验块损坏且系统通过部分修复方式无法使损坏的数据块和校验块数量小于或等于N, 丢失的数据将无法恢复。
② 元数据保护-元数据镜像
元数据和数据一样都是使用节点间冗余方式, 通过镜像实现, 每一份都是一个独立完
整的拷贝。 当一个目录的保护级别为N+M时, 此目录中文件的元数据将以镜像方式存储M+2份。
③ 数据恢复
当硬盘故障或节点故障时, OceanStor 9000可将故障硬盘或节点上的数据恢复到其他工作正常的硬盘上, 从而实现数据找回。 数据在被找回之前, OceanStor9000可通过内部算法确保用户正常使用数据, 但数据保护级别与读写性能将会降低。
OceanStor 9000内部按照负载均衡策略和不同的数据保护级别, 创建存储资源的逻辑分组, 每一块硬盘同时属于多个逻辑分组。 逻辑分组是一个数据保护和数据恢复的独立单元, 每一个逻辑分组分配一个数据保护级别( 例如4+2) 。
当因硬盘故障而进行数据恢复时, 这块硬盘所属的多个逻辑分组将同时进行数据恢复操作, 因此恢复速度远快于传统RAID。
当因节点故障而进行数据恢复时, 这个节点中所有硬盘所属的逻辑分组将同时进行数据恢复操作, 数据恢复速度最高可达1TB/h。
以图中节点3硬盘2为例, 同时属于4个逻辑分组( 四个不同色块) , 当这个盘故障时,会选出4个目标盘出来进行恢复, 数据会分别在4个目标盘上被恢复出来。 由于每个目标盘的恢复是独立的, 目标盘之间的恢复可以并发, 所以恢复速度较高(阵列中类似的故障下目标盘只有一个)。 在实际系统中, 一个盘所属的的逻辑分组数将超过12个, 可达到每小时1TB的恢复能力。
④ 物理分域
物理分域是一种隔离故障的有效手段。 启用物理分域后, 单个域内的硬盘或节点故障,将不会导致其他域的数据可靠性降级或失效, 也不会因执行数据恢复任务而影响其他域的读写性能。
OceanStor 9000实现物理分域的方法是引入节点池与分级的概念。 管理员可将3个或以上数目的存储节点定义为一个节点池, 将一个或多个节点池定义为一个分级, 然后通过创建文件池策略将符合一定条件的目录或文件存储到指定节点池或分级。 一个存储节点只能属于一个节点池, 一个节点池也只能属于一个分级。
图中展示了存储节点、 节点池与分级的关系示意。 此图中, 各目录与存储位置关系如下:
目录A:存储在分级1内的节点池1中。
目录B:存储在分级1中。
目录C:存储在分级y内的节点池x中。