数据库磁盘级别数据恢复
| 服务器文件级别数据恢复
|
我们擅长的项目
我们所精通的RAID阵列类型
| 我们所擅长的RAID故障类型
|
RAID阵列概念
一、RAID技术规范简介
RAID(Redundant Arrays of IndependentDisks的简称,中文为廉价冗余磁盘阵列),冗余磁盘阵列技术初的研制目的是为了组合小的廉价磁盘来代替大的昂贵磁盘,以降低大批量数据存储的费用,也希望采用冗余信息的方式,使得磁盘失效时不会使对数据的访问受损失,从而开发出一定水平的数据保护技术,并且能适当的提升数据传输速度。
过去RAID一直是服务器才有缘享用,一直作为SCSI硬盘配套技术作应用。近来随着技术的发展和产品成本的不断下降,IDE硬盘性能有了很大提升,加之RAID芯片的普及,使得RAID也逐渐在个人电脑上得到应用。
那么为何叫做冗余磁盘阵列呢?冗余的汉语意思即多余,重复。而磁盘阵列说明不仅仅是一个磁盘,而是一组磁盘。这时你应该明白了,它是利用重复的磁盘来处理数据,使得数据的稳定性得到提高。
二、RAID的工作原理
RAID如何实现数据存储的高稳定性呢?我们不妨来看一下它的工作原理。RAID按照实现原理的不同分为不同的级别,不同的级别之间工作模式是有区别的。整个的RAID结构是一些磁盘结构,通过对磁盘进行组合达到提高效率,减少错误的目的,不要因为这么多名词而被吓坏了,它们的原理实际上十分简单。为了便于说明,下面示意图中的每个方块代表一个磁盘,竖的叫块或磁盘阵列,横称之为带区。
三、RAID规范
主要包含RAID 0~RAID7等数个规范,它们的侧重点各不相同,常见的规范有如下几种
RAID0:无差错控制的带区组
要实要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率好。它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上,这两个硬盘可以读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID0的速度是快的。RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
RAID 1:镜象结构
对于使用这种RAID1结构的设备来说,RAID控制器必须能够对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID1的数据安全性在所有的RAID级别上来说是好的。其磁盘的利用率却只有50%,是所有RAID级别中低的。
RAID5:分布式奇偶校验的独立磁盘结构
从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,提高了可靠性,允许单个磁盘出错。RAID5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。它对数据传输的并行性解决不好,控制器的设计也相当困难。RAID 3 与RAID 5相比,重要的区别在于RAID3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。RAID-5的话,优点是提供了冗余性(支持一块盘掉线后仍然正常运行),磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。但当掉盘之后,运行效率大幅下降。
RAID为什么会发生故障?
Raid提供了不同级别的容灾措施,但它并不是万无一失的,是安全的Raid-1也可能由于不可预见的原因导致数据彻底丢失。从我们接触的实际案例看,恰恰是阵列提供商所宣传的安全性,放松了用户的安全意识,终造成数据丢失。例如Raid-5允许一块成员盘掉线而不影响正常使用,实际案例中,90%以上的Raid-5故障均表现为两块以上成员盘掉线,且其中一块往往已掉线很久。这说明,当块故障盘亮灯报警后,用户并未及时发现并排除故障,当第二块硬盘离线,Raid失效后才开始补救,为时已晚。
那么Raid为什么会出现故障?Raid安全性的基础是成员盘的安全可靠,由于机械硬盘存储密度的大幅提升以及厂商对成本的压缩控制,现在硬盘的质量已大不如前,很多硬盘仅仅使用几个月甚至更短时间即出现物理故障,当过多的硬盘出现故障,Raid的安全性就成了空谈。为提高性能,阵列上常常采用性能更高的服务器硬盘,这种硬盘可提供10000-15000rpm的转速,性能。但它们在出现磁头损坏后,如不及时发现并断电,磁头很可能长时间与碟片接触,将碟片严重划伤,致使存储介质的磁粉脱落,造成无法挽回的损失。
RAID发生故障后如何避免数据丢失?
用户在阵列出现故障后,通常向供应商求助,但供应商仅能保证阵列重新正常运行,并不对用户数据安全负责。供应商通常采取的措施是将离线硬盘剔除,替换完好硬盘让阵列自行做同步操作,正常情况下,这种做法是安全的,但如果成员盘先后离线时间间隔较长,提前离线的硬盘可能在重启后恢复正常并参与同步,它并未存储其离线后的“新鲜”数据,当其参与同步操作时,就把整个阵列数据“污染”了,导致数据在同步完成后丢失或无法正常打开,明显的表现为:数据越新越大,损坏的概率越高,数据越旧越小,损坏概率越低。
数据恢复厂商与服务器供应商所提供的解决方案是不同的,数据恢复提倡先将数据完整恢复,再对阵列采取修复措施,甚至可以在替换故障硬盘后直接对阵列进行初始化,再将已经完整恢复的数据拷贝回去。对于大容量阵列来说,磁盘同步是个工作量巨大的操作,所有成员盘可能在连续几天的时间里不间断进行读写操作,一些存在质量问题的硬盘可能在这一过程中损坏。在我们的案例中,经常出现同步过程未结束,原来正常的硬盘又离线的情况,而这时再进行数据恢复,难度很高。