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月前
|
存储
服务器数据恢复—EMC存储RAID5阵列崩溃的数据恢复案例
服务器数据恢复环境: 一台EMC某型号存储设备,该存储中有一组由12块(包括2块热备盘)STAT硬盘组建的raid5阵列。 服务器故障: 该存储在运行过程中突然崩溃,raid瘫痪。数据恢复工程师到达现场对故障存储设备进行初检,发现raid中有两块硬盘掉线但只有一块热备盘成功激活,所以导致阵列瘫痪,上层lun无法使用。
|
27天前
|
存储 运维 算法
服务器数据恢复—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就可以算出这个丢失的数字了,其余情况依此类推。
|
5月前
|
算法
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
Raid5算法也被称为“异或运算”。异或是一个数学运算符,它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。异或的运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法。二进制下用1表示真,0表示假。异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。 异或略称为XOR、EOR、EX-OR,程序中有三种演算子:XOR、xor、⊕。使用方法如下z = x ⊕ y z
Raid5数据恢复—Raid5算法简介&raid5磁盘阵列数据恢复案例
|
5月前
|
存储 运维 数据挖掘
服务器数据恢复—EMC存储raid5阵列故障导致存储瘫痪的数据恢复案例
服务器存储数据恢复环境: 北京某企业一台EMC FCAX-4存储上搭建一组由12块成员盘的raid5磁盘阵列,其中包括2块热备盘。 服务器存储故障: raid5阵列中两块硬盘离线,热备盘只有一块成功激活,raid瘫痪,上层LUN无法使用,存储崩溃。
|
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数据恢复的基本原理。 了解了这个基本原理
|
存储 数据挖掘
服务器数据恢复—EMC存储raid5阵列瘫痪的数据恢复案例
服务器存储数据恢复环境: EMC某型号存储,8块组建一组raid5磁盘阵列。上层操作系统采用zfs文件系统。 服务器存储故障&分析: raid5阵列中有2块硬盘未知原因离线,raid5阵列崩溃,上层应用无法正常使用。
服务器数据恢复—EMC存储raid5阵列瘫痪的数据恢复案例

热门文章

最新文章