云端技术介绍3 磁碟阵列

2020-06-16    收藏845
点击次数:279

之前在恶魔岛发表了两篇云端相关的文章, http://www.wretch.cc/blog/KisPlay/1310237 http://www.wretch.cc/blog/KisPlay/1268404

引起大家小小的讨论, 今天就来第三部曲吧! 希望各位多多给点批评与指教啊! 小弟会努力做笔记与给分的!

在谈完了云端技术的架构, 云端伺服器的介绍以后, 接着来聊聊磁碟阵列吧! 在云端运算的环境中, “使用者端”资料的完整性, 是最基本的服务. 如何还原遗失的资料、增加读取效能, 就有赖磁碟阵列(RAID, Redundant Arrays of Inexpensive Disks)的协助了. 概念是多颗硬碟透过RAID控制器(分硬体、软体方式)结合成虚拟单颗大容量的硬碟使用, 作业系统只会把RAID看成一个大硬碟; 实际上, 是将资料分散到每一个硬碟, 多台硬碟同时读取, 速度加快; 并且在大部分磁碟阵列模式下, 可以强化硬碟毁损时的资料还原能力. 接下来就介绍一下各种模式的磁碟阵列原理啰~

 

RAID 0:Striping/Span (切分/延展)

RAID0将资料储存在N (N≧2) 个以上的硬碟, 在写入时, 将资料分割成N个小区块, 在同一时间分别存到每一颗硬碟里, 因此可以提升写入速度.当需要读取时, 再分别由所有硬碟里同时将小区块抓出来, 所以也有较高的读取速度.藉由将资料平均分割到全部的硬碟上, 进行平行读写, 而达到提高读写的效能, 相对的也提高整体储存的容量. 但是缺点是完全没有更正错误的能力, 所以只要有一个硬碟故障, 就会造成所有的磁碟阵列, 毁于一旦无法挽回了.

云端技术介绍3  磁碟阵列 

图 1  RAID 0 示意图

RAID 1 : Mirroring (磁碟镜射)

必须由偶数个硬碟所组成, 将这些硬碟分成两组, 而资料同时写入第1组与第2组的所有硬碟, 所以这2组硬碟上的资料完全相同, 也就是其中一组的硬碟是专门用来作备份用途. 因此当其中一组的任一个硬碟故障时, 备份的另一组硬碟内的资料就可以发挥功能, 系统依然可以正常运作不受影响.RAID 1是所有磁碟阵列模式中, 拥有最佳的资料安全性. 但是, 唯一的缺点就是, 磁碟阵列的容量是全部硬碟容量的一半.

云端技术介绍3  磁碟阵列

 

图 2   RAID 1 示意图

RAID 2

是RAID 0的改良版, 以位元(bit)为单位.将资料利用错误更正码 (ECC, Error Correction Code) 中的汉明码(Hamming Code)进行编解码, 而达到更正错误的能力.例如原始资料(data):0111, 编码(encode)之后的码字(codeword): 0111110, 将码字传送过程当中发生一个位元(bit)的错误, 结果接收端接收到的码字: 0111111, 此时接收端会将此码字0111111跟资料库的所有码字比对(假设资料库全部只有4个码字, 分别是0000000, 0011100, 0111110, 1111111), 结果会发现与0111110最相似, 因为只有一个位元的差异, 所以接收端会判断原始资料是0111, 也就更正了一个位元的错误了.

RAID 2最少要三颗硬碟才能运作, 所以当只有一硬碟毁损时, 可以藉由另两颗硬碟的资料, 将毁损的那一颗硬碟中的资料还原回来.也因为在资料中加入了汉明码的内容, 所以资料整体的容量会比原始资料大一些.

云端技术介绍3  磁碟阵列 

图 3   RAID 2 示意图

RAID 3:Parallel with Parity (平行同位检查)

最少须三个硬碟, 利用其中一个硬碟专门来储存根据资料运算出来的检查码.当磁碟阵列中有一个硬碟发生故障时(当然不能是储存检查码的硬碟), 只要换上新硬碟后, 系统就能利用检查码碟的资料, 重新计算得到其旧有资料并写回建立.检查码资料运算的方式是将资料以Bytes为单位来计算, 然后依序将每Byte写入不同硬碟, 同时将每Byte的检查码写入储存检查码的硬碟.

云端技术介绍3  磁碟阵列 

图 4   RAID 3示意图

RAID 4

最少须三个硬碟, 其工作原理跟RAID 3相似, 主要差别是:检查码资料运算的方式是将资料切割成数个区块(1区块= N Byte, N >1).然后依序将每区块写入不同硬碟, 同时将每区块的检查码写入储存检查码的硬碟.

云端技术介绍3  磁碟阵列 

图 5   RAID 4示意图

RAID 5:Striping with Rotating Parity

最少须三个硬碟, 其工作原理与RAID 4相似, 主要差别是其检查码资料没有固定储存在同一颗硬碟, 而是轮流储存在每个硬碟上.目前RAID 5普遍应用于业界, 因为它可以为系统提供安全保障(虽然保障程度比RAID 1低, 但是硬碟容量利用率要比RAID 1高), 存储成本又相对较低廉.而RAID 2~4在业界很少见, 因为RAID 5集合了它们的优点, 因此RAID 2~4一般只用于学术研究领域, 而在实际应用上则以RAID5或RAID6为主.

云端技术介绍3  磁碟阵列 

图 6   RAID 5 示意图

RAID 6

最少须四个硬碟, RAID 6是在RAID 5的基础上发展而成, 由一些大企业提出来的标準, 全名「Independent Data disks with two independent distributed parity schemes, 带有两个独立分散式检查码的独立资料磁碟」.主要差异是将检查码写入到两个硬碟裏面, 这样就可以增强错误更正的能力.不过, 缺点是成本较高.

云端技术介绍3  磁碟阵列 

图 7   RAID 6示意图

RAID 7

RAID 7与RAID 0~RAID 6不同, 除了它并非一个开放式的商用标準之外, 连架构也存在很大的差异.主要是因为RAID 7的架构中, 不仅具备了资料还原能力, 同时更内建了属于自己的处理器、快取记忆体, 来提高资料读取效能.

RAID 0+1 (RAID 01)

结合了RAID 0与1两种模式, 这个磁碟阵列模式须具备4个以上的双数硬碟.先由2个以上硬碟遵守RAID 0规範, 设定成一组;再由每组间遵循RAID 1的规範, 使RAID 0+1拥有错误更正能力及资料读写速度.

云端技术介绍3  磁碟阵列 

图 8   RAID 0+1示意图

RAID 1+0 (RAID 10)

结合了RAID 1与0两种模式, 是将所有硬碟分为两组, 视为RAID 0的最低组合, 然后将这两组各自视为RAID 1运作, 使RAID 1+0拥有错误更正能力及资料读写速度.RAID 10的优缺点与RAID 01类似, 不过, 就可靠性来说, RAID 10较01略佳, 除非底层两组RAID 1发生其中1组的2颗硬碟同时损毁, 才会完全失效.如果只是两组RAID 1各损坏1颗硬碟, RAID 10还能维持正常运作.

云端技术介绍3  磁碟阵列 

图 9   RAID 1+0示意图

RAID 5+0 (RAID 50)

RAID 50是以RAID 5为基础, 然而RAID 5至少需要3颗硬碟, 因此要以多组RAID 5组成RAID 50的模式, 至少需要6颗硬碟.所以RAID 50最少需要6颗硬碟, 先把6颗硬碟分为2组, 每组3颗构成RAID 5, 如此就得到两组RAID 5, 然后再把两组RAID 5构成RAID 0.

云端技术介绍3  磁碟阵列 

图 10   RAID 5+0示意图

JBOD (Just Bunch of Disks)

这不算RAID, 因为它的功能就只是「将多颗磁碟凑在一起」, 让作业系统当作是一颗超大硬碟来用.假设是4颗500GB的大硬碟, 在JBOD模式下就成了一颗2TB﹙1TB=1000GB﹚的超高容量硬碟.这种模式除了硬碟容量提升之外, 速度还是跟单一硬碟相同, 也完全没有安全性可言.

云端技术介绍3  磁碟阵列 

图 11   JBOD示意图

以上就是目前磁碟阵列模式的大致说明, 有些磁碟阵列模式是由储存设备厂商自行开发的私有技术, 用来解决现存磁碟阵列模式的缺点、增加资料保存安全性、提高资料还原能力、降低建置成本…当然这些技术并非国际标準, 所以只能说是厂商之间产品差异化的一个特徵, 例如: RAID 5E, RAID 5E, RAID 1E, RAID DP, RAID ADG….

在商用磁碟阵列的应用当中, 几乎都是使用硬体方式的磁碟阵列(Hardware RAID), 原因在于不会增加储存设备系统运算的负担, 一切的资料运算与还原都是由RAID控制器来完成了~

相关文章  RELEVANT ARTICLES