何欢 何倩
[摘要] 磁盘阵列是由多个稳定性较高的磁盘,组合成一个大型的磁盘组,磁盘阵列具有扩充性及容错机制两大功能,不同的RAID级别数据容错及读写速度不一样,误操作和硬件故障同样会引起的阵列数据丢失,本文探讨了在磁盘阵列各种故障情况下修复方法。
[关键词] 磁盘阵列容错机制故障修复方法
1.引言
RAID是将N台硬盘通过RAID 卡(或是软件)组合成虚拟的单台大容量的硬盘使用,其功能是让N台硬盘同时读取,加快数据存取速度及提供容错性, RAID是最重要用途是数据存储和备份。
磁盘阵列是由多个稳定性较高的磁盘,组合成一个大型的磁盘组,在储存数据时,将数据切割成许多区段,分别存放在各个硬盘上,磁盘阵列还能利用同位检查,在阵列中任一个硬盘故障时,可重构数据,在数据重构时,将故障硬盘内的数据,经计算后重新置入新硬盘中,磁盘阵列在停机情况下可处理以下动作:
◇自动检测故障硬盘。
◇重建硬盘坏道的资料。
◇支持不须停机的硬盘热备空间(Hot Spare)。
◇支持不须停机的硬盘热备盘自动替换(Hot Swap)。
◇在线扩充硬盘容量。
2.磁盘阵列的工作原理
利用RAID技术不仅可以增大存储容量,提高数据传输速率,同时采取冗余信息的方式提供了容错机制,提高了数据存储的可靠性。
实现RAID可用两种方法,一种是硬件RAID,用专门的控制器RAID卡来完成;另一种是软RAID,用软件的方法来实现。磁盘阵列主要用到以下几种技术:
(1)条带化存储
RAID通过条带化存储和奇偶校验两个措施来实现其冗余和容错的目标。条带化存储可以以一次写入一个数据块的方式将文件写入多个磁盘。条带化存储技术将数据分开写入多个驱动器,从而提高数据传输速率并缩短磁盘处理总时间。
(2)奇偶校验
奇偶校验通过对所有数据进行冗余校验实现确保数据的有效性。利用奇偶校验,当RAID系统的一个磁盘发生故障时,其它磁盘能够重建该故障磁盘。
(3)磁盘镜像
镜像是将数据同时写入两个驱动器的技术,如果一个磁盘发生故障,镜像磁盘将接替它进行运行。
(4)奇偶校验
异或(XOR)是进行奇偶校验的一种方法,从每个磁盘中取出一位(0和1)并相加。如果和为偶数,则奇偶为被置为0;如果和为奇数,则奇偶位被置为1。根据RAID等级,奇偶校验即可保存到一个磁盘上,也可分配到所有磁盘上。
3.磁盘阵列级别
目前业界公认的有RAID0~RAID7等数个等级规范,它们的侧重点各有不同。每个RAID等级分别针对速度、保护或两者的结合而设计,RAID等级包括:
RAID 0 ——数据条带化存储阵列
RAID 1 ——镜像磁盘阵列
RAID 2 ——并行阵列,汉明码
RAID 3 ——带奇偶校验的并行阵列
RAID 4 ——带专用奇偶校验驱动器的磁盘阵列
RAID 5——磁盘阵列,所有驱动器均包括奇偶校验
RAID 6 ——带有两种分布存储的奇偶校验码的磁盘阵列
RAID 7 ——优化的高速数据传送磁盘阵列
RAID5集合了RAID2、RAID3和RAID4的优点,应用最广泛, RAID6是RAID5的扩展,进一步增强了数据的可靠性,但效率较低,RAID6和RAID7都因成本高昂而用得较少,本文简要介绍常用的磁盘阵列的技术:RAID0、RAID1、RAID5。
(1)RAID 0
RAID0是无数据冗余的存储空间条带化,具有成本低、读写性能极高、存储空间利用率高等特点,适用于音、视频信号存储、临时文件的转储等对速度要求极其严格的特殊应用。但由于没有数据冗余,其安全性大大降低,构成阵列的任何一块硬盘的损坏都将带来灾难性的数据损失。
(2)RAID 1
RAID1是两块硬盘数据完全镜像,安全性好,技术简单,管理方便,读写性能均好。因为它是一一对应的,所以它无法单块硬盘扩展,要扩展,必须同时对镜像的双方进行同容量的扩展。RAID1冗余方式为了安全起见,实际上只利用了一半的磁盘容量,数据空间浪费大。
(3)RAID 5
RAID5是目前应用最广泛的RAID技术。各块独立硬盘进行条带化分割,相同的条带区进行奇偶校验(异或运算),校验数据平均分布在每块硬盘上。以n块硬盘构建的RAID 5阵列可以有n-1块硬盘的容量,存储空间利用率非常高。任何一块硬盘上的数据丢失,均可以通过校验数据推算出来。
RAID5提供了冗余性(支持一块盘掉线后仍然正常运行),磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。由于奇偶校验块是平均分布在每个磁盘上的,因此存在着数据条带的顺序和校验块的位置方向的问题,不同的厂家或系统在设计RAID5时有不同的组织方式。RAID5的关键参数有:
◇盘序——每块硬盘的组织顺序,在拆卸前应做好标记。
◇块大小——分割数据块进行存储时的大小单位,可能为十几KB到上百KB。
◇组织方式——数据块和奇偶校验块存放的方式。
◇起始位置——第一个奇偶校验块的起始位置。
4.磁盘阵列的常见故障与修复方法
复杂的RAID 系统有着特定的容错机制保护磁盘数据,但由于误操作和硬件故障引起的数据丢失还是经常发生。虽然RAID提供了容错功能,如果用户没有认真地作备份,忽视了RAID潜在危险,当RAID故障时都是一场大的灾难。
磁盘阵列设备,在使用过程中,经常会遇到一些常见故障,很多情况下是超出了阵列的冗余能力,这也使得RAID在给我们带来海量存储空间的应用之外,也带来了很多难以估计的数据风险,这里将重点介绍RAID常见故障及相关处理方式。
以RAID5为例,常见有三种基本工作状态,即容错,临界和重建,这三种状态定义如下:
(1)容错
即容错阵列状态(正常工作),所有硬盘处于激活状态,阵列具备冗余性,此时任何一个硬盘的故障均不会影响数据可用性。
(2)临界
即无容错阵列状态(降级工作),阵列中某个硬盘单元已经失效,阵列中剩下的硬盘均处于激活状态,但已无法进行XOR奇偶数据写入。
(3)重建
即阵列重建/确认状态,一个空闲硬盘正被合并到阵列中。当重建完成后,阵列将回复到容错状态。
4.1 磁盘阵列一般异常处理
以RAID5为例,如果磁盘阵列中某块磁盘发生故障,系统会使其停止运转,此时系统的工作效率将会下降,如果感觉道系统反映速度明显下降了,就应当首先检查磁盘阵列的工作情况。
如果使用的RAID系统支持热插拔,则可直接将坏硬盘拆下,换上一个好硬盘即可,系统会自动更新数据。如果不支持热插拔,则需关机后更换硬盘,然后开机。
4.2 硬件阵列的故障原因及修复方法
(1)磁盘阵列卡出错
磁盘阵列出错的具体原因有阵列卡损坏、阵列卡电池电力耗尽、槽口控制芯片损坏、板载的控制程序出错。当发生阵列卡损坏时,随意更换新的阵列卡也易造成磁盘ID号紊乱。
(2)操作系统故障
当发生系统故障甚至是系统崩溃时,一些用系统自带功能(Ms windows,Unix,Linux,Sun solaris等)創建的磁盘阵列或者用第三方软件(Disk management,Veritas disk management等)组建的磁盘阵列会发生数据丢失。
(3)磁盘故障
由于管理不善和服务器相对稳定的特性对管理者造成麻痹,发生超出允许数量坏硬盘的事故发生,如Raid-5损坏两块硬盘,一旦RAID阵列出现故障,硬件服务商只能给客户重新初始化或者REBUILD,这样客户数据就会无法挽回。
(4)硬件磁盘阵列故障修复方法
磁盘阵列中最常见故障是“掉盘”,出现这类故障可以用以下基本方法解决:
检查硬盘驱动器是否损坏,比如有坏道,如果有坏盘则需更换好盘。
检查机壳或背板是否损坏。
检查 SCSI 电缆或是SATA线缆,如果长时间使用变软,可能会造成接触不良。
检查电源,如果电源供电异常,就更换电源。
如果使用的不是同型号同容量的硬盘或不是企业级的硬盘,则有可能工作不稳定或是读写有延迟造成掉盘,请更换为同型号和容量得企业级硬盘。
硬盘固件版本与RAID卡不匹配,造成阵列RAID信息不稳定,可通过升级硬盘固件方式解决。
温度高,散热不好,造成硬盘控制芯片不稳定,解决办法是加强散热,例如在硬盘上加装散热装置。
RAID卡本身的问题,卡坏了、卡的驱动或设置不正确、卡的BIOS没有刷新等,可通过换卡方式解决磁盘故障。
4.3 软件RAID的故障原因与修复方法
(1)主硬盘(即安装操作系统的物理硬盘)发生故障
主硬盘发生故障导致系统不能启动时,有两种处理方法。
第一种是将主硬盘拆下来,将镜像硬盘上的硬盘ID号改成主硬盘的硬盘ID号,然后将镜像硬盘安装到主硬盘所在的位置,重新加电启动操作系统。
第二中是将镜像磁盘从服务器硬盘托架上拆下来,安装到其他的服务器上,找到镜像硬盘下的Boot.ini文件,修改文件中的操作系统启动位置参数,保存,变镜像硬盘为主硬盘,加电实现系统的启动。系统启动后,应及时更换已坏的硬盘,按照上述方法重新做一次硬盘软镜像。
(2)镜像盘(第二个物理磁盘)发生故障
镜像硬盘发生故障时,系统可继续运行。但不能实现数据的冗余备份,應及时对已坏的镜像磁盘进行更换,按照上述方法重新做一次硬盘软镜像。
当实现软件RAID5的磁盘发生故障时,不影响系统的正常使用和数据的安全性。用户可以更换有故障的磁盘,重新插入新的磁盘,不需要用户做任何工作,系统可以通过计算机自动将发生故障磁盘上的数据全部恢复到新的磁盘上。
正确地判断出故障情况是非常重要的,它是RAID数据恢复的必要前提。可以通过观察、询问和经验判断的方法来分析故障的形成原因及过程,然后再选择正确的修复手段。由于磁盘阵列故障往往不是单一原因造成,常规的故障修复手段只能恢复阵列状态,而不能恢复阵列数据,即使让磁盘阵列恢复到正常使用状态,但这些操作往往会导致阵列底层数据的彻底损坏,所以必须根据具体情况制订相应的解决方案,切不可贸然实施阵列修复。
在修复过程中,首先要把硬盘组的盘序弄清楚,然后要设定好RAID 5的组织方式,比如反向动态校验,正向校验等,可以根据磁盘上数据块的大小和内容来分析判断,组织方式确定下来后,起始位置和数据块大小也可以确定,最后可根据磁盘顺序、数据块大小、起始位置来修复磁盘阵列。
5.结束语
本文简单介绍了磁盘阵列的构成原理和容错机制,并对实际运行中磁盘阵列出现故障的原因进行了详细的分析,并给出了具体故障处理方法,为读者提供了磁盘阵列出现故障时解决故障的思路。