DBA亲,你们的RAID5阵列有保障吗?

简介:

很多人遇到过服务器RAID5挂掉,往往掉一个盘后,第二个盘也立刻挂掉。

    引用:RAID 5 也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为 n-1 。如果挂掉两个盘,数据就玩完了。
    理论上两个硬盘同时失效的概率是很低的,但为什么会这样呢?
                                                                                  
    引用:从数学角度说,每个磁盘的平均无故障时间  (MTBF)  大约为  50  万至  150  万小时 ( 也就是每  50 150  年发生一次硬盘损坏 ) 。实际往往不能达到这种理想的情况,在大多数散热和机械条件下,都会造成硬盘正常工作的时间大幅减少。考虑到每个磁盘的寿命不同,阵列中的任何磁盘都可能出现问题,从统计学角度说,阵列中  N  个磁盘发生故障的机率比单个磁盘发生故障的机率要大  N  倍。结合上述因素,如果阵列中的磁盘数量合理,且这些磁盘的平均无故障时间  (MTBF)  较短,那么在磁盘阵列的预期使用寿命过程中,就很有可能发生磁盘故障 ( 比方说每几个月或每隔几年就会发生一次故障 )
    两块磁盘同时损坏的几率有多大呢 (“ 同时 就是指一块磁盘尚未完全修复时另一块磁盘也坏掉了 )? 如果说  RAID 5  阵列的 MTBF 相当于 MTBF^2 ,那么这种几率为每隔 10^15 个小时发生一次 ( 也就是 1 万多年才出现一次 ) ,因此不管工作条件如何,发生这种情况的概率是极低的。从数学理论角度来说,是有这种概率,但在现实情况中我们并不用考虑这一问题。不过有时却是会发生两块磁盘同时损坏的情况,我们不能完全忽略这种可能性,实际两块磁盘同时损坏的原因与 MTBF 基本没有任何关系。
    对这种情况来说,这里首先要引入一个一般人不常接触到的概念: BER  硬盘误码率 , 英文是 BER(Bit Error Rate), 是描述硬盘性能的一个非常重要的参数 , 是衡量硬盘出错可靠性的一个参数。 这个参数代表你写入硬盘的数据,在读取时遇到  不可修复的读错误的概率。从统计角度来说也比较少见,一般来说是指读取多少位后会出现一次读取错误。
    随着硬盘容量增加,驱动器读取数据的误读率就会增加,而硬盘容量暴涨,误码率的比例一直保持相对增加。 一个 1TB 的驱动器是需要更多读取整个驱动器,这是在 RAID 重建期间发生错误的概率会比 300G  驱动器遇到错误的几率大。
    那这个错误的几率到底有多大呢?或者说,我们写入多少 GB 数据,才会遇到 1byte 的读取错误呢? 看这篇文章:
http://lenciel.cn/docs/scsi-sata-reliability/

    对于不同类型的硬盘(以前企业级、服务器、数据中心级硬盘用 SCSI/ 光纤,商用、民用级别是 IDE ;现在对应的则是 SAS/SATA
    他们的 MRBF (平均无故障时间)是接近的,但是 BER 便宜的 SATA 硬盘要比昂贵的 SCSI 硬盘的误码率( BER )要高得多。
    也就是说,出现某个 sector 无法读取的情况, SATA 要比 SCSI 严重得多。 具体区别在固件上:遇到读取不过去,或者写入不过去的坏道时,家用硬盘会花费 1 分钟以上的时间去尝试纠正错误,纠正不了就直接用备用扇区代替,这个时间超过阵列控制器能容忍的限度,所以遇到这种情况直接掉盘;企业级的磁盘会把这项工作放在后台进行,不需要停顿 1 分钟左右的时间,从而不影响阵列运行。在 BER  硬盘误码率上没有任何区别。
 
    按照文中的计算,一个 1TB 的硬盘,通常你无法读取所有 sector 的概率达到了 56% ,因此你用便宜的大容量 SATA 盘,在出现硬盘故障的情况下重建 RAID 的希望是:无法实现。
    用 1TB SATA 硬盘做 RAID5 的话,当你遇到一个硬盘失效的情况,几乎剩下的两个以上硬盘( RAID5 最少组合是 3 个)铁定会遇到一个硬盘读取错误,从而重建失败。
    所以,以前小硬盘做 RAID5 ,基本很少遇到同时挂掉两个盘的情况;现在硬盘大了,出问题的概率也越来越大了。
    对于跑 RAID 的用户,对整个硬盘进行读取的事情经常发生。即使系统足够和谐,知道不对你报告那些出现在你从不读取的文件中的坏道,但是也只是略过了报告这一步:它还是会找到所有的坏道, 56% 就来了。 还有所谓的监控专用企业级 SATA ,其原理就是在固件上做手脚,让硬盘即使遇到写入的数据读取错误,也不管三七二十一直接跳过,不再重试读取(标准硬盘的读取方式是遇到某个扇区 CRC 错误自动重新再去读,直到读到正确的数据为止)。这对监控数据来说是理所当然的(大多数监控的硬盘都是在不停地写入,但是很少需要读取),除非遇到出现问题需要重现影像时。
 
    现有的 Raid5 阵列的磁盘中有未检测到的错误的话, Hot Spare 没办法解决。 Hot Spare 只能在某个磁盘下线的时候,及时的替换下线的盘进行 Raid 重建,如果其他磁盘有错误的话,重建还是会可能失败。
 
    解决方法还是要在阵列健康状态下,进行定期或者其他方式的错误检查。 一般的硬件阵列卡,也就是插在主板 PCI/PCIX/PCIE/ 或者主板集成的 RAID5 ,压根就没数据巡检( scrub )功能。企业级的数据存储,也只有到盘阵级别(比如 IBM DS3000/4000/5000 DELL MD3000....etc )才有这类功能,但是你也看不到检查的结果,最多能在日志里看到某个硬盘 CRC 失败,然后跳红灯掉出来,阵列柜告警通知你换硬盘。你别想知道这个硬盘到底是彻底挂了呢,还是有读取错误,还是有坏道。。。总之两眼一抹黑。ZFS 上的 RAIDZ 有数据巡检( scrub )功能
 
   总结遇到 RAID5 一次挂掉俩盘的概率
1、 使用越大容量的硬盘做 RAID5 ,遇到 BER  扇区的概率越大;比如用 100G 硬盘做 RAID5 就比用 1TB 的安全;
2、 使用越多盘数的硬盘做 RAID5 ,遇到 BER  扇区的概率越大;比如用 3 个盘做的 RAID5 ,比 6 个盘做的 RAID5 安全;
3、 使用越便宜的硬盘做 RAID5 ,遇到 BER  扇区的概率越大;比如用 SCSI/FC/SAS 盘比用 IDE/SATA RAID5 安全;
4、 RAID5 里面存放的数据越多,塞得越满,遇到 BER  扇区的概率越大;比如存了 100G 数据的比存了 1TB 数据的 RAID5 安全;( REBUID 时只读取存过数据的扇区,某些卡则不管三七二十一要读完整个盘)
 
   RAID1/RAID10 参与重建的只有一个盘 , raid5 所有盘都需要参与重建相比,故障概率降低; RAID1  某一组磁盘故障,也不需要强制上线的操作,因为数据仍然存在,不需要组 RAID 也能读取,哪怕是换到其他没有 raid 卡的机器上数据仍能读出;而 RAID5 如果不能强制第二个掉下的硬盘上线,你一点东西都读不到。
   对于DB来说:做raid 1+0 是最好不过啦!(备份时必不可少的; RAID 处理降级状态时,如重要数据容量不大,建议先做备份,当然这种备份应该是异机的,不可备份至当前已降级的 RAID 中。如果在 REBUILD 当中出现另外硬盘离线的情况导致 RAID OFFLINE ,切不可重建 RAID ,如确定后离线的硬盘,可通过强制上线恢复数据 ( 有些控制器没有选项,就没办法了 )

 






本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1006565,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
存储 安全 数据库
|
2月前
|
存储 Unix 数据挖掘
RAID5数据恢复—zfs文件系统下重组RAID5阵列的方法详解
RAID5数据恢复环境: 一台存储上有一组由12块SCSI硬盘(11块数据盘+1块热备盘)组建的RAID5磁盘阵列,FreeBSD操作系统+zfs文件系统。 RAID5故障:
|
4天前
|
存储 运维 算法
服务器数据恢复—raid6阵列硬盘重组raid5阵列如何恢复raid6阵列数据?
服务器存储数据恢复环境: 存储中有一组由12块硬盘组建的RAID6阵列,上层linux操作系统+EXT3文件系统,该存储划分3个LUN。 服务器存储故障&分析: 存储中RAID6阵列不可用。为了抢救数据,运维人员使用原始RAID中的部分硬盘重新组建RAID并进行了初始化。 初始化开始一段时间后,运维人员察觉到情况有异后强制终止初始化,这个时候初始化已经完成一半以上。数据部分已被不可逆的破坏。
|
2月前
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
3月前
|
存储 安全 算法
服务器数据恢复—Raid磁盘阵列的安全性分析及常见故障
出于尽可能避免数据灾难的设计初衷,RAID解决了3个问题:容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的:当部分数据异常时,可通过特定算法将数据还原出来。以RAID5为例:如果要记录两个数字,可以通过再多记录这两个数字的和来达到记录冗余性的目的。例如记录3和5,同时再记录这2个数字的和8。在不记得到底是几和5的情况下,只需要用8-5就可以算出这个丢失的数字了,其余情况依此类推。
|
4月前
|
存储 内存技术
【RAID磁盘阵列服务器数据恢复】华为OceanStor Dorado存储系统RAID-TP数据丢失数据恢复案例
客户报告其华为OceanStor Dorado存储系统的RAID-TP出现故障,导致数据丢失。RAID-TP是一种增强型RAID级别,包含数据磁盘、校验磁盘和转换磁盘,可在两个磁盘故障时仍保护数据。通过分析RAID结构与工作原理,我们制定了恢复方案:首先从校验磁盘读取信息并计算出丢失的数据块,接着将恢复的数据写入新磁盘。由于缺乏现成工具,需定制RAID重组程序以恢复数据。华为的动态RAID重构技术保证了重构过程中冗余级别的稳定。
61 1
|
7月前
|
存储 运维 Oracle
服务器数据恢复—MSA2000存储raid5阵列瘫痪导致lun不可用的数据恢复案例
服务器存储数据恢复环境: 某品牌MSA2000存储,该存储中有一组由8块SAS硬盘(其中有一块热备盘)组建的RAID5阵列,raid5阵列上层划分了6个lun,均分配给HP-Unix小型机使用,主要数据为oracle数据库和OA服务端。 服务器存储故障: 该MSA2000存储RAID5阵列中2块硬盘出现故障离线,阵列中只有一块热备盘,虽然热备盘成功激活,RAID5阵列瘫痪,上层LUN无法使用,存储不可用。
服务器数据恢复—MSA2000存储raid5阵列瘫痪导致lun不可用的数据恢复案例
|
7月前
|
存储 算法 数据挖掘
服务器数据恢复—拯救raid5阵列数据大行动,raid5数据恢复案例分享
**Raid5数据恢复算法原理:** 分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值相同则结果为0,若二者结果不同则结果为1。 例如0101 xor 0010根据上述运算规则来计算的话二者第一位都是0,两者相同,结果为0 ;第二、三、四位的数值不同则结果均为1,所以最终结果为0111。公式表示为:0101 xor 0010 = 0111,所以在 a xor b=c 中如果缺少其中之一,我们可以通过其他数据进行推算,这就是raid5数据恢复的基本原理。 了解了这个基本原理
|
存储 数据安全/隐私保护
RAID认识(二)RAID关键技术的应用
在上一篇博客中,我们简单的了解了RAID的发展历程,基本原理和关键技术。在关键技术中,我为大家讲解了三种关键技术:镜像,数据条带,数据校验。那么,这三种技术是如何被应用到RAID的不同模式中的呢?请继续往下看~
136 0
|
存储 算法 架构师
架构师不得不了解的硬件知识 - 磁盘阵列 RAID
什么是RAID? RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。
269 0
架构师不得不了解的硬件知识 - 磁盘阵列 RAID