软RAID(software-based RAID)是基于软件的RAID。它可能是最普遍的被使用的RAID阵列,这是由于现在的很多服务器操作系统都集成了RAID功能。比如 Microsoft Windows NT, Windows 2000, Windows 2003, Novell Netware 和 Linux。
软件RAID集成于操作系统,有比较低的始投资,但是它的CPU占用率非常高,并且只有非常有限的阵列操作功能。由于软件RAID是在操作系统下实现RAID,软RAID不能保护系统盘。亦即系统分区不能参与实现RAID。有些操作系统,RAID的配置信息存在系统信息中,而不是存在硬盘上;当系统崩溃,需重新安装时,RAID的信息也会丢失。尤其是软件RAID 5是CPU的增强方式,会导致30%-40%I/O功能的降低, 所以不建议使用软件RAID在增强的处理器服务器中。
硬RAID(这里只讨论基于总线的RAID)是由内建RAID功能的主机总线适配器(Host bus adapter)控制,直接连接到服务器的系统总线上的。
总线RAID具有较软RAID更多的功能但是又不会显著的增加总拥有成本。这样可以极大节省服务器系统CPU和操作系统的资源。从而使网络服务器的性能获得很大的提高。
支持很多先进功能如:热插拔,热备盘,SAF-TE,阵列管理,等等。
并且其价格价格相对较低。它的缺点是要占用PCI总线带宽,所以PCI I/O 可能变成阵列速度的瓶颈
HostRAID 是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品。它是基于硬和软RAID之间的一种产品。它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。它可以支持RAID 0和RAID 1。
软件RAID集成于操作系统,有比较低的始投资,但是它的CPU占用率非常高,并且只有非常有限的阵列操作功能。由于软件RAID是在操作系统下实现RAID,软RAID不能保护系统盘。亦即系统分区不能参与实现RAID。有些操作系统,RAID的配置信息存在系统信息中,而不是存在硬盘上;当系统崩溃,需重新安装时,RAID的信息也会丢失。尤其是软件RAID 5是CPU的增强方式,会导致30%-40%I/O功能的降低, 所以不建议使用软件RAID在增强的处理器服务器中。
硬RAID(这里只讨论基于总线的RAID)是由内建RAID功能的主机总线适配器(Host bus adapter)控制,直接连接到服务器的系统总线上的。
总线RAID具有较软RAID更多的功能但是又不会显著的增加总拥有成本。这样可以极大节省服务器系统CPU和操作系统的资源。从而使网络服务器的性能获得很大的提高。
支持很多先进功能如:热插拔,热备盘,SAF-TE,阵列管理,等等。
并且其价格价格相对较低。它的缺点是要占用PCI总线带宽,所以PCI I/O 可能变成阵列速度的瓶颈
HostRAID 是一种把初级的RAID功能附加给SCSI或者SATA卡而产生的产品。它是基于硬和软RAID之间的一种产品。它把软件RAID功能集成到了产品的固件上,从而提高了产品的功能和容错能力。它可以支持RAID 0和RAID 1。
一.Raid定义
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。
二、RAID的几种工作模式
1、RAID0
即Data Stripping数据分条技术。RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。
(1)、RAID 0最简单方式
就是把x块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起,形成一个独立的逻辑驱动器,容量是单独硬盘的x倍,在电脑数据写时被依次写入到各磁盘中,当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中,它的好处是可以增加磁盘的容量。速度与其中任何一块磁盘的速度相同,如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,可靠性是单独使用一块硬盘的1/n。
(2)、RAID 0的另一方式
是用n块硬盘选择合理的带区大小创建带区集,最好是为每一块硬盘都配备一个专门的磁盘控制器,在电脑数据读写时同时向n块磁盘读写数据,速度提升n倍。提高系统的性能。
2、RAID 1
RAID 1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID 1有以下特点:
(1)、RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。
(2)、磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。
(3)、只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。
(4)、出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。
(5)、更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。
(6)、RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
3、RAID0+1
把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。
4、RAID2
电脑在写入数据时在一个磁盘上保存数据的各个位,同时把一个数据不同的位运算得到的海明校验码保存另一组磁盘上,由于海明码可以在数据发生错误的情况下将错误校正,以保证输出的正确。但海明码使用数据冗余技术,使得输出数据的速率取决于驱动器组中速度最慢的磁盘。RAID2控制器的设计简单。
5、RAID3:带奇偶校验码的并行传送
RAID 3使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。当一个完好的RAID 3系统中读取数据,只需要在数据存储盘中找到相应的数据块进行读取操作即可。但当向RAID 3写入数据时,必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中,这样无形虽增加系统开销。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立,如果所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据,这使系统减慢。当更换了损坏的磁盘后,系统必须一个数据块一个数据块的重建坏盘中的数据,整个系统的性能会受到严重的影响。RAID 3最大不足是校验盘很容易成为整个系统的瓶颈,对于经常大量写入操作的应用会导致整个RAID系统性能的下降。RAID 3适合用于数据库和WEB服务器等。
6、 RAID4
RAID4即带奇偶校验码的独立磁盘结构,RAID4和RAID3很象,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘,RAID4的特点和RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
7、 RAID5
RAID 5把校验块分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。RAID 5提高了系统可靠性,但对数据传输的并行性解决不好,而且控制器的设计也相当困难。
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。
二、RAID的几种工作模式
1、RAID0
即Data Stripping数据分条技术。RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。
(1)、RAID 0最简单方式
就是把x块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起,形成一个独立的逻辑驱动器,容量是单独硬盘的x倍,在电脑数据写时被依次写入到各磁盘中,当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中,它的好处是可以增加磁盘的容量。速度与其中任何一块磁盘的速度相同,如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,可靠性是单独使用一块硬盘的1/n。
(2)、RAID 0的另一方式
是用n块硬盘选择合理的带区大小创建带区集,最好是为每一块硬盘都配备一个专门的磁盘控制器,在电脑数据读写时同时向n块磁盘读写数据,速度提升n倍。提高系统的性能。
2、RAID 1
RAID 1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID 1有以下特点:
(1)、RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。
(2)、磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。
(3)、只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。
(4)、出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。
(5)、更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。
(6)、RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
3、RAID0+1
把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。
4、RAID2
电脑在写入数据时在一个磁盘上保存数据的各个位,同时把一个数据不同的位运算得到的海明校验码保存另一组磁盘上,由于海明码可以在数据发生错误的情况下将错误校正,以保证输出的正确。但海明码使用数据冗余技术,使得输出数据的速率取决于驱动器组中速度最慢的磁盘。RAID2控制器的设计简单。
5、RAID3:带奇偶校验码的并行传送
RAID 3使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。当一个完好的RAID 3系统中读取数据,只需要在数据存储盘中找到相应的数据块进行读取操作即可。但当向RAID 3写入数据时,必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中,这样无形虽增加系统开销。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立,如果所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据,这使系统减慢。当更换了损坏的磁盘后,系统必须一个数据块一个数据块的重建坏盘中的数据,整个系统的性能会受到严重的影响。RAID 3最大不足是校验盘很容易成为整个系统的瓶颈,对于经常大量写入操作的应用会导致整个RAID系统性能的下降。RAID 3适合用于数据库和WEB服务器等。
6、 RAID4
RAID4即带奇偶校验码的独立磁盘结构,RAID4和RAID3很象,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘,RAID4的特点和RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
7、 RAID5
RAID 5把校验块分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。RAID 5提高了系统可靠性,但对数据传输的并行性解决不好,而且控制器的设计也相当困难。
虽然复杂的raid 系统有着特定的结构保护你的数据,但由于误操作和硬件故障引起的数据丢失还是频繁地发 生。大多数raid用户看重的就是 raid的容错功能, 然而很多误导宣传也使用户误以为raid是不容易出故障或出 现故障时raid本身有处理容错的应变机制,所以没有认真地作备份, 因而忽视了raid潜在危险,所以每当raid故障时都是一场大的灾难。
raid系统在出现故障是如果处理得当,在大多数情况下数据都是可以恢复的。在这里向大家介绍一种raid的数据恢复方法。为此我先介绍两个非常好用的工具软件,它们是 runtime software公司的getdataback 和raid reconstructor, 其中 getdataback 用于恢复数据,raid reconstructor 用于恢复 raid 5的磁盘阵列。
下面我就向大家介绍一种恢复 raid 5 磁盘阵列的数据的方法。我们以一个只有3 块硬盘的 raid 5阵列为例。下面是raid reconstructor 的用户界面:<?XML:NAMESPACE PREFIX = O />
runtime 的 raid reconstructor 帮助我们从损坏的
raid 5 阵列中恢复数据. 即使我们不知道 raid 参数,比如磁盘次序, 块大小和旋转方向, raid reconstructor 能自动分析和确定正确的值,然后使我们能够重新构造一个raid 镜像文件或物理驱动器的拷贝。一旦我们建立了一个镜像文件, 就可以使用 runtime 的getdataback或其它数据恢复软件进行处理. 如果我们把这个镜像建立在一个物理驱动器上, 我们既可以用数据恢复软件处理它,也有可能直接从它上面启动系统。
因为 raid 5 冗余性, 如果原阵列里的磁盘数为n ,raid reconstructor 通过n-1 个磁盘也能重新计算出原来的数据。
使用raid reconstructor的三个简单的步骤:
规定 raid 阵列的组合
输入原始 raid 5 阵列的硬盘数.然后我们输入raid的每个物理硬盘或硬盘镜像文件。如果你使用物理硬盘名,这些硬盘必须是可以访问的。我们可以使用镜像文件代替物理硬盘(这个镜像文件可以runtime的 getdataback 或diskexplorer建立。
注意:如果在物理驱动器上有坏扇区, 建立磁盘的镜像文件将是我们的首选方法。
如果我们不知道raid 参数, 保留这个值, 不改变块长度和奇偶校验的旋转方向。
例如 raid 5阵列由3块硬盘组成, 挂在我们的计算机上作为独立的物理硬盘hd130:, hd131:, hd132:
注意:如果在物理驱动器上有坏扇区, 建立磁盘的镜像文件将是我们的首选方法。
如果我们不知道raid 参数, 保留这个值, 不改变块长度和奇偶校验的旋转方向。
例如 raid 5阵列由3块硬盘组成, 挂在我们的计算机上作为独立的物理硬盘hd130:, hd131:, hd132:
又例如: raid 5阵列由3个镜像文件组成, 它预先建立在我们的逻辑驱动器 e 上: drive1.img, drive2.img,
drive3.img.
drive3.img.
我们也可以混合选择物理硬盘和镜像文件.
单击 "open drives" 选择的每个硬盘或镜像的容量会显示在右边,同时raid 的总容量将显示在下面:
注意: 我们输入的硬盘个数可以小于阵列的长度. 在这个例子中 #drives 仍然是 3 ,但可以保留一个空的驱动器
分析 raid 结构,确定正确的磁盘次序、块大小和旋转方向.
如果我们知道正确的参数, 则把它们直接填写在输入框里就可以了, 并可以跳过分析. 否则单击 "analyze".
这时屏幕上会弹出一个窗口,让我们选择一些测试组合。我们可以参考raid 控制器的设置手动改变某些选项。大多数值已经用缺省方式选择了。如果需要,我们可以输入多个定制的块长度. 但块的长度必须 2 的幂数如: (16, 32, 64,...). "number of sectors to probe" 确定动态测试多少扇区,缺省是100000, 但如果需要的话你可以根据块的大小增加这个值,例如, 500000 或 1000000.
单击
"next". 根据硬盘个数、检查条件组合数和测试的扇区数,测试分析时间可能从几秒钟到数小时。当分析完成后将生成下面的列表:
最有可能的参数组合列在该表的前端,通常我们都选择推荐的第一项.在上述例子里我们看见每种可能的排列都有3 行显示数据, 它们代表的意思如下:
硬盘次序 (drive order)
可能的情况是 (1-2-3), (1-3-2), (2-1-3), (2-3-1), (3-1-2) 或 (3-2-1), 共有 6 种可能的组合.
块长度 (block size)选择了 4 种可能的组合16, 32, 64 或 128.奇偶校验块的旋转方向(parity rotations to probe):有向前(forward)、向后(backward) 2种情况。所以在列表上一共列出了48 (6*4*2) 种可能的组合。如果结果数据有意义, 每个组合都将被检测. 每个检测都有一个平均值,这个值叫 "entropy"(平均值). 着个值越小表示越接近正确的 raid 参数值。
可能的情况是 (1-2-3), (1-3-2), (2-1-3), (2-3-1), (3-1-2) 或 (3-2-1), 共有 6 种可能的组合.
块长度 (block size)选择了 4 种可能的组合16, 32, 64 或 128.奇偶校验块的旋转方向(parity rotations to probe):有向前(forward)、向后(backward) 2种情况。所以在列表上一共列出了48 (6*4*2) 种可能的组合。如果结果数据有意义, 每个组合都将被检测. 每个检测都有一个平均值,这个值叫 "entropy"(平均值). 着个值越小表示越接近正确的 raid 参数值。
"os:" 的值在 0—5 之间, 1到4 代表的意义如下:
os:1) 扇区 63 有一个 boot 记录标记 (xaa55).
os:2) 扇区 63 是一个合法的 ntfs、 fat32 或 fat16 boot 扇区.
os:3) ntfs: 第一个 mft 项被成功装入, fat: 找到fat1.
os:4) ntfs: 前16 个mft项被成功装入, fat: 发现fat2 , 并且 fat2 的第一个扇区和 fat1 的一个扇区相同.选择上面描述的项(最有可能的是第一项)并单击 完成“finish”. 这样就把我们选择的参数拷贝到主屏幕。
os:1) 扇区 63 有一个 boot 记录标记 (xaa55).
os:2) 扇区 63 是一个合法的 ntfs、 fat32 或 fat16 boot 扇区.
os:3) ntfs: 第一个 mft 项被成功装入, fat: 找到fat1.
os:4) ntfs: 前16 个mft项被成功装入, fat: 发现fat2 , 并且 fat2 的第一个扇区和 fat1 的一个扇区相同.选择上面描述的项(最有可能的是第一项)并单击 完成“finish”. 这样就把我们选择的参数拷贝到主屏幕。
拷贝 raid
现在我们就准备把raid 拷贝到另一个镜像文件或另一个驱动器上,当然目标设备必须有足够的空间来容纳这个raid。
在目的 "target" 框中输入要拷贝得文件名和路径. 它可以是物理驱动器名(如"hd132:"), 也可以是镜像文件名(如e:\raid.img").在缺省的情况下普通镜像文件的扩展名是".img",压缩镜像文件的扩展名是".imc". 如果我们在 "multi file" 选择框中打勾, 则镜像文件就会被分割成若干个文件, 每个650 mb. 这对某些系统(例如 windows 98/95)来说是必要的, 因为它们不支持超大文件。
其它选项:
奇偶校验检查(verify by parity): 拷贝时用奇偶校验块对raid的每个带区块进行完整性检查。增加额外扇区(append extra sectors):当物理驱动器的容量大于镜像文件的长度时, 有可能要选择此项, 这时会把物理驱动器的所有柱面填充满。这是要模拟整个驱动器,便于以后某些数据恢复软件能够对它进行处理(如getdataback).
单击 拷贝 "copy". 现在开始重构raid:
单击 拷贝 "copy". 现在开始重构raid:
我们把这个raid镜像拷贝到另一个硬盘或阵列上,就能直接通过操作系统存取这个设备上的文件,这样
RAID数据恢复就成功了。