文章详情页 您现在的位置是:网站首页>文章详情

磁盘冗余——RAID

图片丢失 Jeyrce.Lu 发表于:2020年6月16日 22:52 分类:【服务器 1871次阅读

RAID中文名称磁盘阵列(Redundant Arrys of Inexpensice Disks),是使用硬件或软件,将多个磁盘设备聚合为一个大型存储设备,让存储设备具备容错、冗余、读写效能提高的一种技术。RAID常用模式有以下几种。

RAID-0(等量模式,stripe)性能最佳

RAID-0.jpeg

此模式存储时,首先将数据切分成n个等量数据块(chunk,一般范围是4K-1M),这些数据块将会以此等量写入到n块相同容量的磁盘上面。由于每块磁盘等量均分所有数据块,理论上磁盘数量越多则读写性能越好。

但是此模式存在一个很大的风险,由于数据仅存一份,且每个数据库都是交错存储在不同磁盘上,并没有连续存储,如果有一块磁盘发生损毁,则所有数据都会发生损毁无法正常读取。

RAID-1(镜像模式,mirror)完全备份

RAID-1.jpeg

此模式也需要n块相同容量磁盘,如果磁盘容量不相同,则以容量小的磁盘为准。此模式的典型特征是所有数据都会保存两份到不同的磁盘上,当其中任意一块磁盘发生损毁,都可以通过另一块磁盘恢复出完整数据。

但是此种模式也存在缺点,由于数据是完全备份一份保存在另一块磁盘,因此磁盘容量只能被有效占用50%。且当使用软件RAID时,一份数据将会通过总线两次写入磁盘,写入效率将会打折扣。

RAID-1+0和RAID-0+1

既然RAID-0和RAID-1各有各的优缺点,那将两者结合起来是不是就能将两者优点结合呢?答案当然是肯定的,因此也就有了RAID-1+0和RAID-0+1方案。所谓RAID-1+0即将两颗磁盘首先组成RAID-1,然后再由两组RAID-1组成一个RAID-0的设定,这样一来磁盘能效和安全性都上去了。RAID-0+1也是同理。

RAID-1+0.jpeg

此方法为最为常用的方案,通常一台服务器可以有24个插槽,假设使用其中20块磁盘,2颗组成一份RAID-1,共组成10组,10组又组成RAID-0,磁盘读写性能高,每组RAID-1中任意一块磁盘损毁也可通过镜像来恢复完整数据。

RAID-5 均衡策略

尽管RAID-1+0已经具备了性能和安全上的保障,但是磁盘空间利用率依然只有50%,RAID-5则是一种更加均衡的策略,通过使用位置标记的方式来大幅提高磁盘空间的利用率,同时在一定程度上可确保数据的安全性。

RAID-5.png

RAID-5级别的磁盘阵列至少需要3颗以上磁盘组成,写入方式和RAID-0相似,依次写入数据块到不同磁盘中,但是不同的是除了写入数据块,每一次循环还会写入一个同位检查码(parity)到磁盘中,并且由于依然遵循等量数据块,每一个parity都会被写入到不同磁盘中。写parity的容量总数加起来恰好为一块磁盘容量,因此此模式磁盘利用率为 1-1/n,即总容量为总磁盘数 -1。

为了搞清楚为什么任意一块磁盘损毁后其数据都可以重构,我自己还举了个数据块的小例子来进行演示推算,我们知道所有数据在计算机中都是存储的无数个0和1,此处我们为了计算方便,但是也为了具有代表性,我们有5块磁盘那我们就随便使用5位不重复的二进制数来进行理论演示。

现假定A1=10000,A2=10011,A3=11001,A4=10111,同位检查码Ap则由这几个数据块连续亦或(顺序无影响)得到,即Ap=A1^A2^A3^A4=01101。

现在假设磁盘1损坏,即A1块消失,则我们可以使用同位块Ap和其他几个同行数据块连续亦或恢复A1,即 A1 = Ap ^ A2 ^ A4 ^ A3 = 10000 成功利用还原。

同理可以验证A2、A3、A4数据块损毁,或者同位标记块损毁,都可以通过其他4块同列数据块连续亦或恢复(亦或在其他地方也叫作奇偶校验)。可自行验证A2 = Ap ^ A3 ^ A4 ^ A1,A3 = Ap ^ A4 ^ A1 ^ A2,A4 = Ap ^ A1 ^ A2 ^ A3。

我们此处是以一行数据的数据块为例,那么举一反三每块磁盘上的所有数据块都可以通过这种方式恢复,即一块磁盘损毁,其上所有数据块都可以通过其他几块磁盘来进行恢复。基于此原理,我们对每一行的数据块进行按位异或,得到的结果和其他数据块位数相同,因此同位码块大小和其他数据块大小完全一致,因此同位块容量总和恰好等于一整块磁盘的容量。

RAID-6

RAID-5的磁盘利用空间相比于RAID-1得到了很大提升,但是仅仅只能允许同一时段有一块磁盘损毁,超过一块依然会让数据损毁无法使用,因此说RAID-5的数据保护功能是有限的。基于RAID-5的原理呢,我们就可以升级到RAID-6级别,提升数据保护能力,允许同一时段损坏2块盘,但是同时磁盘空间利用率下降为 1 - 2/n, 即每一行数据产生两个parity块。

RAID-6.jpeg

RAID-6和RAID-5主要区别在于增加了一个斜向校验块Aq,设计和恢复思路和RAID-5基本相同,参考文章

Spare Disk 预备磁盘

为什么需要预备磁盘呢,假设做了一个RAID-1或者RAID-5,现在有一块磁盘损毁了,那么你需要将这块坏盘拔下来,换上一块新盘然后启动磁盘阵列,磁盘开始重建数据等待重建完成就算完了。如果这个过程中你的服务器不支持热插拔,那么就需要将服务器停机然后做这一些列的事情。那么下载做了预备盘,预备盘平时并不在RAID中,在RAID中的磁盘发生损坏时,预备盘会自动被拉入到RAID中,自动开始数据重建,这样就可以达到在不支持热插拔的服务器上不停机换盘维护。

RAID优缺点总结(个人总结,可能有误)

(1)RAID可以在物理存储设备上达到存储聚合、提升读写性能、数据安全保护的效果,但是无法应对病毒、攻击等软件类型的破坏。

(2)尽管做了RAID,可以让单个文件系统达到很大的存储容量(想想看24块3T盘),但是单机容量总归是有限的,因此分布式存储的发展势在必行。

(3)不同RAID模式的读写性能和空间利用率是相互矛盾的,所谓鱼和熊掌你只能选一样,因此需要根据场景来构建符合自身的RAID。

difference-between-RAID-mod.png

补充:软件RAID和硬件RAID

以上讲述的是RAID集中基本模式和原理,但是真正实现RAID则可以分为硬件和软件两种。

硬件RAID指的是通过RAID卡来自动进行RAID管理,RAID卡会单独处理读写任务,自动分发到各个磁盘的各个数据块,一般的RAID都支持热插拔,可以在不停机的情况下完成RAID中坏盘更换和数据重建;缺点是RAID卡价格昂贵,并且需要操作系统支持RAID驱动方可使用。

软件RAID则是通过在操作系统层面提供一套软件服务(mdadm),用来进行数据块的分发、标记、计算,优点是便宜;缺点是需要消耗操作系统的IO总线来进行数据分发、重建,因此会影响整个存储设备的读写性能。

更多RAID级别和特点参考:https://www.cnblogs.com/blakflash000/p/9024410.html

版权声明 本文属于本站  原创作品,文章版权归本站及作者所有,请尊重作者的创作成果,转载、引用自觉附上本文永久地址: http://blog.lujianxin.com/x/art/n6yy6y6bbix3

文章评论区

作者名片

图片丢失
  • 作者昵称:Jeyrce.Lu
  • 原创文章:61篇
  • 转载文章:3篇
  • 加入本站:2046天

站点信息

  • 运行天数:2047天
  • 累计访问:164169人次
  • 今日访问:0人次
  • 原创文章:69篇
  • 转载文章:4篇
  • 微信公众号:第一时间获取更新信息