zoukankan      html  css  js  c++  java
  • 网络存储——数据保护:RAID

    注:本文参考buaa路新喜老师的网络存储课ppt与《信息存储管理》一书

    数据保护:RAID

    RAID级别

    RAID级别根据分条、数据镜像以及奇偶校验技术的不同而定义。

    分条

    条带

    :有时候表述中出现的“条带”和“分条”等价

    将磁盘上一块由若干地址连续的磁盘块构成的、大小固定的区域定义为条带。

    位于RAID集所有磁盘上相同位置的条带构成了分条。

    条带尺寸(分条深度)

    描述构成条带的磁盘块数目。

    如果数据访问总从条带的起始位置开始,那么条带尺寸等于单个磁盘单次所能读写的最大数据量,此后的读写将切换至下一块磁盘。

    分条尺寸

    =条带尺寸*RAID集中硬盘数量

    条带宽度

    =一个分条包含的数据条带的数目=硬盘个数

    作用

    可将数据分为几块,分块并发写入(读)各个磁盘,提升读写操作性能。

    参考:什么是条带化?

    条带(strip)是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法。 许多情况下,这是通过硬件控制器来完成的。

    1.物理磁盘本身对文件的IO操作有一定的限制,每秒IO的处理效率成为 IOPS

    2.基于这种情况,如果顺序存储文件,当客户端并发量很大时,会造成磁盘冲突,所以,产生了条带化的处理方式。

    3.条带化是指将数据分为相同大小的数据块,这些条带分布在不同的物理磁盘上,当访问此文件时,会同时并发请求多个物理磁盘,从而减轻了单个物理磁盘的压力(IO),同时,并发访问多次盘文件提高了访问效率。

    4.I/O 性能的优化与其他资源(如CPU和内存)的优化有着很大的区别 ,I/O 优化最有效的手段是将 I/O 最大限度的进行平衡。

    条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力,从而获得非常好的性能。

    1.由于条带化在IO性能上有很大的优势,因此,我们的存储也采用了条带化的方式。

    2.而其性能最终的决定因素是和。

    条带深度:指的是条带的大小,也叫条带大小。

    1.RAID的数据块大小一般在2KB到512KB之间(或者更大),其数值是2 的次方,即2KB,4KB,8KB,16KB这样。

    条带大小对性能的影响比条带宽度难以量化的多。

    • 减小条带大小: 由于条带大小减小了,则文件被分成了更多个,更小的数据块。这些数据块会被分散到更多的硬盘上存储,因此提高了传输的性能,但是由于要多次寻找不同的数据块,磁盘定位的性能就下降了。
    • 增加条带大小: 与减小条带大小相反,会降低传输性能,提高定位性能。

    我们会发现根据不同的应用类型,不同的性能需求,不同驱动器的不同特点(如SSD硬盘),不存在一个普遍适用的"最佳条带大小"。所以这也是存储厂家,文件系统编写者允许我们自己定义条带大小的原因。

    条带宽度:是指同时可以并发读或写的条带数量。

    1.条带宽度=RAID中的物理硬盘数量

    2.增加条带宽度,可以增加阵列的读写性能。道理很明显,增加更多的硬盘,也就增加了可以同时并发读或写的条带数量。

    数据镜像

    同一数据存储在两块不同硬盘,产生两个副本。

    一个损坏另一个可以提供服务。当用新磁盘替换损坏磁盘后,数据会从幸存磁盘完整拷贝过去。这个过程对于主机是完全透明的。

    作用

    1. 数据冗余;
    2. 磁盘故障恢复(但不适用于备份,因为备份要保存不同时间点的数据状态,而磁盘镜像只会不断更新最新的);
    3. 提升读操作性能

    场景

    所需的磁盘容量为实际存储数据总量的两倍,因此只有在极端无法承受数据损坏的应用中才会考虑如此高昂的代价。此外,可以提高访问的性能,因为两块磁盘可以同时响应一个读请求。但每个写访问将导致两次写操作,其写访问性能会下降。

    奇偶校验

    在分条中增加一个硬盘(分条宽度+1)来存储校验值。

    实际上,校验值计算采用异或操作。校验值计算也是RAID控制器的功能之一。

    作用

    提供数据保护又不像镜像需要大量开销

    局限

    由于校验信息由数据产生,一旦数据改变需要重新计算校验值,耗时的校验值计算将影响RAID控制器的性能

    RAID 0

    分条

    空间利用100%

    读取:分别从各硬盘并发读取,然后组合

    写入:将数据拆分,并发写入到各个硬盘

    优点:并发读写,适合对IO带宽需求很大的程序,但无法提供高可用性(数据保护功能以及应对磁盘故障的高可用性)。

    RAID 1

    数据镜像

    至少两块硬盘构成

    优点:RAID 1的数据恢复代价是所有RAID级别中最小的,可利用镜像磁盘进行恢复并同时继续对外提供服务。适用于对高可用性有需求的应用。

    嵌套RAID -1+0

    分条+数据镜像

    需要偶数数量磁盘,且至少4块磁盘

    优点:适用于写密集、随机访问、数据量小的IO负载(高事务率的在线事务处理、大型消息服务、需要高IO吞吐率,随机访问和高可用性的数据库应用)

    RAID1+0和RAID0+1不同,二者磁盘损坏时的数据重构过程不同

    RAID 3

    分条+奇偶校验

    数据以整个条带为单位读写,不存在只更新同一条带中某些存储带的部分写操作

    优点:为传输大量数据提供了很高的带宽,常用于视频流服务等涉及大量顺序数据访问的场景。

    RAID 5

    分条+奇偶校验

    数据磁盘支持独立访问;奇偶校验值分布存储在所有磁盘,克服了校验值写性能瓶颈的缺陷

    场景:消息系统、数据挖掘、中等性能的媒体服务器,以及数据库管理员优化数据访问所用的关系数据库管理系统

    RAID 6

    引入第二个校验元素,应对两块磁盘同时失效的情况。

    至少需要4块磁盘

    写代价比RAID5大,因此RAID5的写性能比RAID6好;RAID6有两个校验位,重建更费时

    比较

    适用场景

    RAID对磁盘性能的影响

    IOPS

    I/O吞吐率,每秒读写次数的总和

    写代价

    对基于镜像和校验的RAID系统,每个操作会对磁盘产生额外IO开销,称之为写代价。

    对于RAID1

    写代价为2

    写操作要在两块磁盘同时进行。

    每次更新表现为2次IO操作(2次写)

    对于RIAD5

    写代价为4

    写操作会产生4个实际IO操作,对校验值进行读取、计算、回写。

    每次更新表现为4次IO操作(2次读,2次写)

    对于RIAD6

    写代价为6

    维护两个校验值,完成6次IO操作(3次读3次写)。

    热备盘

    待补充...

    例题

    1.1

    1.2

    磁盘有极限的IOPS

    那我们假定一个case,业务的iops是10000,读cache命中率是30%,读iops为60%,写iops为40%,磁盘个数为120,那么分别计算在raid5与raid10的情况下,每个磁盘的iops为多少。

    raid5:

    单块盘的iops = (10000 *(1-0.3) 0.6 + 4 * (100000.4))/120

    = (4200 + 16000)/120

    = 168

    这里的10000(1-0.3)0.6表示是读的iops,比例是0.6,除掉cache命中,实际只有4200个iops

    而4 * (10000*0.4) 表示写的iops,因为每一个写,在raid5中,实际发生了4个io,所以写的iops为16000个

    为了考虑raid5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算为:

    单块盘的iops = (10000 (1-0.3) 0.6 + 2 * (10000 0.4)(1-0.3) + 2 * (10000*0.4))/120

    = (4200 + 5600 + 8000)/120

    = 148

    计算出来单个盘的iops为148个,基本达到磁盘极限

    raid10

    单块盘的iops = (10000(1-0.3)0.6 + 2 * (10000*0.4))/120

    = (4200 + 8000)/120

    = 102

    可以看到,因为raid10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的iops只有102个,还远远低于磁盘的极限iops。

    在一个实际的case中,一个恢复压力很大的standby(这里主要是写,而且是小io的写),采用了raid5的方案,发现性能很差,通过分析,每个磁盘的iops在高峰时期,快达到200了,导致响应速度巨慢无比。后来改造成raid10,就避免了这个性能问题,每个磁盘的iops降到100左右。

  • 相关阅读:
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    LG P4768 [NOI2018] 归程
    LG P3250 [HNOI2016]网络
    BZOJ4644 经典傻逼题
    LG P4373 [USACO18OPEN]Train Tracking P
    CF1375H Set Merging
    LG P6541 [WC2018]即时战略
    CF1097G Vladislav and a Great Legend
    python学习笔记-基本概念
    python学习笔记十-文件操作
  • 原文地址:https://www.cnblogs.com/Ivan-Luo/p/11658098.html
Copyright © 2011-2022 走看看