03-数据中心存储技术-上

    技术2022-07-10  138

    数据中心存储技术-上

    1.数据的价值

    RTO:Recovery Time Objective,恢复时间点目标

    从宕机发生以后到系统恢复所需的时间

    RPO:Recovery Point Objective,恢复点目标

    当灾难或紧急事件发生后,数据可以恢复到过去的一个时间点,单位是时间

    这意味着灾难发生以后企业丢失的数据量(注意:这里的数据量用时间为单位表示)

    例如:公司每隔四小时备份一次,那么RPO就是4个小时,最少可以恢复到4个小时以前的数据

    RPO为4个小时不一定意味着企业将失去4个小时数据,如果中午12点刚做完备份,下午2点设备宕机

    3点通过备份恢复到了12点的数据,那么此时丢失3个小时数据

    COD:Cost Of Downtime,停机成本

    业务中断期间,每小时所损失的成本

     

    2.存储介质

    在我们生活中经常见到的存储介质有:磁带,光盘,硬盘

    到现在这个时代,磁带和光盘都用的不多了,这里不做过多赘述,主要介绍一下硬盘

    机械硬盘:由盘片、读写磁头、磁头臂等部件组成。读写数据时通过磁头将数据写/读到硬盘中,

    磁头臂摆动,控制读/写的位置(扇区)。读写性能取决于盘体的转速和接口寻址、传输数据的速度。

     

    机械硬盘共有以下几种:

    SATA盘:全称是Serial Advanced Technology Attachment,又叫做串口硬盘(串行ATA),

    采用串行传输方式进行读写。最高转速7200转/分钟

    SAS盘:全称是Serial Attached SCSI,即串行SCSI,也是采用串行方式读写。但最高转速能达到

    1w5转/分钟,串行SCSI接口比串行ATA接口传输要快。所以SAS盘要比SATA盘快很多

    NL-SAS:NL-SAS是采用了SAS的磁盘接口和SATA的盘体的综合体。盘体转速只有7200转,因此性能比SAS硬盘差。但由于使用了SAS接口,所以相比于SATA盘在寻址和速度上有了提升。

    固态硬盘:SSD,使用闪存颗粒进行读写,相比于机械硬盘使用物理盘片、磁头读写,SSD的性能要秒杀所有机械硬盘。但是SSD的价格也高于所有机械硬盘

    存储设备:一般企业使用存储都会购买企业级存储设备,如下图。整体就是一个大盒子,由两部分构成

    控制框:盒子最前头是控制框,里面都是处理器控制器,用于接收处理主机发来的指令,对数据进行操作

    一般一个控制框中会有两个控制器,A控 B控,避免单点故障。

    硬盘框:硬盘框中可以插一个个的硬盘,根据硬盘框大小可以放置不同数量的硬盘

    硬盘框放满了硬盘后还可以再加硬盘框,放置硬盘。但是不可以无限制的叠加硬盘框

    硬盘框的数据取决于控制框的处理能力,一般每个设备上都会标明最多支持多少个硬盘框

    3.RAID技术

    1.介绍:磁盘阵列,又叫做RAID。主要原理是将多块硬盘逻辑化成一个存储空间。

    作用:将一块硬盘的串行读写变成多块硬盘并行读写,提高读写性能,并适当的起到冗余备份,保护数据的功能。

    2.实现方式:硬件RAID,软件RIAD

    硬件RAID是由专门的RAID卡来实现RAID功能,性能较好

    软件RAID是依赖CPU实现RAID功能,软件RAID会增加CPU负担,性能比硬件RAID较差

    3.RAID的数据组织形式

    RAID会把硬盘中的数据组织重新划分,划分为条带和分条,以条带和分条的形式进行读写数据

    条带(strip):硬盘中单个或者多个连续的扇区构成一个条带,他是一块硬盘上进一次数据读写的最小单元。 它是组成分条的元素。每个硬盘的条带大小必须一致。D6,D0,D3就是三个条带

    分条(stipe):同一硬盘阵列中的多个硬盘驱动器上的相同“位置”(或者说是相同编号)的条带组成一个分条。

    后续读写数据时,以一个分条为单位,进行并行读写。

    分条宽度:指在一个分条中数据成员盘的个数。图中每个分条占据了3个成员盘,即宽带为3。

    分条深度:指一个条带的容量大小。

    4.RAID数据保护方式

    方法一:在另一块冗余的硬盘中保存相同的数据(数据副本)

    方法二:奇偶校验算法(XOR)

    奇偶校验算法——相同为假,相异为真:

    0⊕0= 0; 0⊕1= 1; 1⊕0= 1; 1⊕1= 0;

    5.常见RAID级别

       1. RAID 0:

    一个RAID 0至少包括2块硬盘,RAID 0写入数据时将数据分为多个数据块,数据块被并行写入到一个条带的多个硬盘中,读取数据时,同时读取多块硬盘的多个数据块。

    由于数据传输总线的速率远远大于硬盘读写速率,因为可以认为这多个硬盘在同时读写,大大提高硬盘读写性能,读取性能取决于硬盘数量。

    但是RAID 0没有冗余备份机制,不可以故障任何一块盘。

    一个RAID 0的硬盘组中的硬盘必须相同,具有相同的大小,转速等。

     

       2. RAID 1:

    RAID 1 ,也称为镜像RAID,至少需要2块硬盘,且硬盘数量一般必须是偶数。

    RAID 1 在写入数据时会设置镜像,在两块盘中镜像写入两份一模一样的数据,一块作为数据,一块作为副本

    当源硬盘故障时,可以去镜像硬盘读写数据,保证了业务的连续性,安全性较高,可以故障50%的盘,但性能不会增加。

    由于有镜像机制,所以最后硬盘空间利用率是50%

    lRAID 1的两个硬盘必须具有相同的大小。如果两个硬盘的容量大小不同,可用容量是最小的硬盘的容量。

     

       3. RAID 3:

    RAID 3在读写数据时采用了并行读写和冗余校验机制,既提高了性能,又增加了冗余

    RAID 3需要有N块数据盘,用于数据读写,1块校验盘,用于校验

    写入数据时,将数据分为N个数据块按照分条的方式并行写入N个数据盘,并将N个数据进行奇偶校验,得到校验数据,放入校验盘

    读取数据时,以分条的形式并行读取,所以每一块数据盘被重复利用,提高了读写性能

    RAID 3的读写性能取决于数据盘的数据,即N的数量。

    由于需要做奇偶校验,N最少为2,所以RAID 3最少需要3块盘

    RAID 3最多可以故障一块盘,硬盘故障时,可以根据校验盘恢复数据

    例如原来两块盘,数据是1和0,校验值为1,数据为1的盘损害后,剩下数据为0的盘和数据为1的校验盘

    根据校验算法可以反推回 0⊕1=1

    注意:当写入的数据较少时,无法分成N个数据块,只需要写入较少硬盘时。按照RAID3的工作原理,仍然需要将对应条带上的所有数据计算奇偶校验值,遭成了额外的读写操作,相比于单块盘读写,没有提升性能。这种情况被称为RAID 3的"写惩罚"

     

       4. RAID 5:

    由于RAID 3专门使用一款硬盘作为校验盘,在写入数据时,需要多次重写校验盘的校验信息,导致校验码负担较大,出现性能瓶颈

    RAID 5 是RAID 3的改进版,读写机制和恢复机制基本相同,主要区别是采用分布式校验架构,每一块硬盘既是数据盘,又是校验盘。以条带为单位进行写入和校验。例如P2是D4和D5的校验值,而P1又是D2和D3的校验值

    RAID 5 的最少需要3块盘,最多可以故障一块盘,性能也是取决于数据盘的数量

     

       5. RAID 6:

    RAID 6具有两种校验算法

    至少需要N+2块硬盘(4块),N块数据盘(N>=2),2块校验盘(分布式),一般用于数据可靠性,可用性极高的场景

    常用的RAID 6有:RAID6 P+Q,RAID 6 DP

    最多可以坏两块盘

     

    RAID 6 P+Q

    RAID 6 P+Q 采用两种校验算法,得到两个校验值 P、Q,校验值分布在一个条带的两个分条中,所以最少需要两块校验盘

    P校验与RAID 5 一致,根据用户数据块进行异或运算得出

    Q校验是对用户各个数据块先进行GF(伽罗瓦域)变换,再互相进行异或运算得出,公式如下

    P = D0 ⊕ D1 ⊕ D2…

    Q = (α ⊕ D0) ⊕ (β ⊕ D1) ⊕ (γ ⊕ D2)…

    如果一个分条中的一个条带失效,只需有P校验值即可恢复失效硬盘上的数据,异或运算在P校验值和其它数据硬盘间执行。

    如果同一个分条有2个条带同时故障,不同的场景有不同的处理方法。

    如果Q校验值在失效的一个条带上,那么数据条带只损坏一个,数据可以根据P值恢复到数据盘上,然后重新计算校验信息

    如果Q在不在失效的条带上,两个的公式都需要使用才能恢复两个失效硬盘上的数据。

    恢复算法类似于求解二元一次方程,例如分条0中D0和D1失效,恢复算法如下:

    设D0为a,D1为b

    P1 = a ⊕ b ⊕ D2

    Q1 = (α ⊕ a) ⊕ (β ⊕ b) ⊕ (γ ⊕ D2)

    由于除了a和b,其他都是已知值(包括α、β、γ),根据公式可以求出x和y值

    细节部分类比如下二元一次方程(注意:仅是类比,实际算法比较复杂)

    ​ 10 = a + b + 3 ​ 28 = 2a + 3b + 4*3 ​ (2a + 3b + 4*3) - 2*(a + b + 3)= 28 - (2*10) ​ b + 6 = 8 ​ b = 2 ​ 10 = a + 2 + 3 ​ a = 5

     

    RAID 6 DP

    RAID 6 DP采用的是一种校验算法,但是是两种方式,且采用专用校验盘,并非分布式架构

    在RAID 5 的横向异或校验基础上,增加一个斜向异或校验

    首先根据数据盘的数据进行横向校验,得出校验值P,放到横向校验盘,然后根据数据盘+横向校验盘的数据进行斜向校验,得出校验值DP,放到斜向校验盘中

    注意:4块数据盘+1块横向校验盘的情况下,是拿3块数据盘+1块横向校验盘的数据,也就是4份数据,进行斜向校验。如图所示,D1⊕D6⊕D11⊕P3 = DP1,其他盘数如何斜向校验目前未知。)

    在损坏两块盘的情况下,首先根据斜向校验值,恢复出其中一块盘的数据,然后再根据横向校验值,恢复另一块盘的数据。

    例如盘1和盘2故障,即分条0中D0和D1失效,首先根据斜向校验,D6、D11、P3、DP1,恢复出D1,然后根据D1、D2、D3、P0恢复出D0

     

       6. RAID10:RAID 1 + RAID 0

     

    对于用户来说,RAID 0 性能极高,但是没有冗余机制,无法保证数据安全,而RAID 1虽然可靠性极高,但是性能较差,于是有了RAID 10,在RAID 1的基础上,做RAID 0。最少需要4块盘

    每两块硬盘做一个RAID 1, 内部采用镜像机制,存放一份源数据,一份副本。多个RAID 1 组之间做RAID 0,并行读写,提高读写性能

    理论上来说,RAID 10 可以忍受一般的硬盘故障,但从最坏的情况来看,如果同一个RAID 1组中的两个硬盘故障时,也会导致数据丢失。所以RAID 10 通常用来保护单一的硬盘失效。

     

       7. RAID 50:RAID 5 + RAID 0

    RAID 50 是RAID 5和RAID 0的组合,每三块硬盘做一个RAID 5,成为一个子组。多个子组之间做RAID 0

    RAID 50 可以接受每个RAID 5组损坏一块硬盘,但是如果两块同一个RAID 5 组的硬盘故障,将导致数据丢失

    RAID 50最少需要6块盘,因为RAID 5最少需要3块,RAID 0最少需要2个组

     

    6. 不同RIAD类型对比

    RAID级别RAID 0RAID 1RAID 3RAID 5RAID 6RAID 10RAID 50容错性无有有有有有有冗余类型无复制奇偶校验奇偶校验奇偶校验复制奇偶检验热备盘选项无有有有有有有读性能高低高高高一般高随机写性能高低最低低低一般低连续写性能高低低低低一般低最小硬盘数2块2块3块3块4块4块6块可用容量N * 单块硬盘容量(1/2) * 单块硬盘容量(N -1) * 单块硬盘容量(N -1) * 单块硬盘容量(N -2) * 单块硬盘容量(N /2) * 单块硬盘容量(N -2) * 单块硬盘容量

     

    RAID 级别应用场景RAID 0迅速读写,安全性要求不高,如图形工作站等RAID 1随机数据写入,安全性要求高,如服务器、数据库存储领域RAID 5连续数据传输,安全性要求高,如视频编辑、大型数据库等RAID 6随机数据传输,安全性要求高,如邮件服务器,文件服务器等RAID 10数据量大,安全性要求高,如银行、金融等领域RAID 50随机数据传输,安全性要求高,并发能力要求高,如邮件服务器,www服务器等

     

    4.RAID其他机制

       1. 热备盘

    在服务器中,可以设置一些硬盘作为热备盘,当RAID组中某个硬盘失效时,可以使用热备盘顶替故障盘使用

    热备盘中是没有数据的,热备盘顶替故障盘后依然需要重构(数据恢复),把故障硬盘的数据恢复到热备盘中

    热备盘分为全局热备盘和局部热备盘,区别是使用范围

    不同RAID组共用一个热备盘,则此热备盘为全局热备盘,全局使用

    仅某一特定RAID组使用的热备盘是局部热备盘,局部使用,其他RAID组无法使用

     

       2. 预拷贝

    系统通过SMART工具监控发现RAID组中某成员盘即将故障时,将即将故障成员盘中的数据提前拷贝到热备盘中,有效降低数据丢失风险。

    当一个硬盘报告它的健康状况不是很好时,意味着它暂时没有失效,但我们可以假设它后面可能会失效。

    此时设备开始将数据从即将失效的硬盘复制到(一个)热备硬盘上。当硬盘稍后实际失效时,大部分数据都已存在于热备用硬盘上,可以使重建花费更少的时间!这就是预拷贝

     

       3. 重构

    当RAID组中某个硬盘故障时,根据RAID算法和其它正常的成员盘,重新计算生成故障数据(用户数据和校验数据),并将这些数据写到热备盘或者替换的新硬盘。这个行为称为重构。

    数据重构时不会影响正常硬盘的读写,不会中断业务。

     

       4. RAID状态机

    RAID组创建成功后,到达正常工作状态

    如果成员盘掉线或故障,此状态称为降级

    如果故障盘数超过冗余盘数,则RAID组直接失效

    在RAID组降级情况下,即故障盘数没有超过冗余盘数,管理员更换硬盘(或系统中有热备盘),可以执行重构(数据恢复)回到正常状态

     

    5.RAID和LUN的关系

    RAID可以将多个独立的硬盘虚拟成一个大的硬盘,这个大的硬盘我们称为物理卷

    在物理卷的基础上我们可以按照指定容量创建一个或多个逻辑单元,这些逻辑单元就称作LUN

    说白了就是在物理卷中划出一份空间,供主机使用,这个空间就是LUN

    独立硬盘(一个一个的硬盘,不做RAID,与上方图片没有关系)创建LUN和做了RAID创建LUN的区别在于

    做了RAID后创建的LUN,空间上还是以条带为单元,即横向空间,并不是每个硬盘划一份空间

    这样横向划分可以保证RAID技术的高读写性能以及数据保护能力。

     

    6.创建RIAD组与LUN的过程

     

    首先将多块硬盘虚拟化成一块硬盘

    然后这一块硬盘按照指定容量横向划分成多个LUN,供多个主机使用

    例如:

    有4个物理硬盘,其中每一个是300G容量。当我们把它们放在一个RAID组中,代表了4×300GB=1.2TB的硬盘容量。假设我们将硬盘组设置成RAID 5进行数据保护,实际可用空间将是3×300=900GB。我们“浪费”了一个硬盘的容量 ,因为在4个硬盘中需要有相当于1个硬盘的空间储存校验信息。

    从管理员的角度来看,现在可以创建1个空间为900 GB的LUN,或多个较小的LUN,使用900 GB容量的一部分。

    每个LUN的数据保护都将是RAID 5级别。

    Processed: 0.017, SQL: 9