RAID0、RAID5磁盘阵列数据存储原理 |
|---|
RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求,服务器。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能 RAID 1又称为Mirror或Mirroring,它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而,数据恢复之RAID数据恢复修复技术,Mirror的磁盘空间利用率低,存储成本高,ORACLE。 Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。 RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。 RAID0+1:正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式,也称为RAID 10。 RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。 由于RAID 0+1也通过数据的100%备份提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。 RAID 0+1的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。 RAID是通过磁盘阵列与数据条块化方法相结合, 以提高数据可用率的一种结构.IBM早于1970年就开始研究此项技术 .RAID 可分为RAID级别1到RAID级别6, 通常称为: RAID 0, RAID 1, RAID 2, RAID 3,RAID 4,RAID 5,RAID6.每一个RAID级别都有自己的强项和弱项. "奇偶校验"定义为用户数据的冗余信息, 当硬盘失效时, 可以重新产生数据. RAID 0: RAID 0 并不是真正的RAID结构, 没有数据冗余. RAID 0 连续地分割数据并并行地读/写于多个磁盘上. 因此具有很高的数据传输率. 但RAID 0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效, 将影响整个数据.因此RAID 0 不可应用于需要数据高可用性的关键应用. RAID 1: RAID 1通过数据镜像实现数据冗余, 在两对分离的磁盘上产生互为备份的数据. RAID 1可以提高读的性能,当原始数据繁忙时, 可直接从镜像拷贝中读取数据.RAID 1是磁盘阵列中费用最高的, 但提供了最高的数据可用率. 当一个磁盘失效, 系统可以自动地交换到镜像磁盘上, 而不需要重组失效的数据. RAID 2: 从概念上讲, RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节.然而RAID 2 使用称为"加重平均纠错码"的编码技术来提供错误检查及恢复. 这种编码技术需要多个磁盘存放检查及恢复信息, 使得RAID 2技术实施更复杂. 因此,在商业环境中很少使用. RAID 3: 不同于RAID 2, RAID 3使用单块磁盘存放奇偶校验信息. 如果一块磁盘失效, 奇偶盘及其他数据盘可以重新产生数据. 如果奇偶盘失效,则不影响数据使用.RAID 3对于大量的连续数据可提供很好的传输率, 但对于随机数据, 奇偶盘会成为写操作的瓶颈. RAID 4: 同RAID 2, RAID 3一样, RAID 4, RAID 5也同样将数据条块化并分布于不同的磁盘上, 但条块单位为块或记录. RAID 4使用一块磁盘作为奇偶校验盘, 每次写操作都需要访问奇偶盘, 成为写操作的瓶颈. 在商业应用中很少使用. RAID 5: RAID 5没有单独指定的奇偶盘, 而是交叉地存取数据及奇偶校验信息于所有磁盘上. 在RAID5 上, 读/写指针可同时对阵列设备进行操作, 提供了更高的数据流量. RAID 5更适合于小数据块,随机读写的数据.RAID 3与RAID 5相比, 重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘.而对于RAID 5来说, 大部分数据传输只对一块磁盘操作, 可进行并行操作.在RAID 5中有"写损失", 即每一次写操作,将产生四个实际的读/写操作, 其中两次读旧的数据及奇偶信息, 两次写新的数据及奇偶信息. RAID 6: RAID 6 与RAID 5相比,增加了第二个独立的奇偶校验信息块. 两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高. 即使两块磁盘同时失效,也不会影响数据的使用. 但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的"写损失". RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用. RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能 RAID 1又称为Mirror或Mirroring,它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而,Mirror的磁盘空间利用率低,存储成本高。 Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。 RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。 RAID0+1:正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式,也称为RAID 10。 RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。 由于RAID 0+1也通过数据的100%备份提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。 RAID 0+1的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。 RAID是通过磁盘阵列与数据条块化方法相结合, 以提高数据可用率的一种结构.IBM早于1970年就开始研究此项技术 .RAID 可分为RAID级别1到RAID级别6, 通常称为: RAID 0, RAID 1, RAID 2,数据恢复 固态硬盘安全警钟常鸣 , RAID 3,RAID 4,RAID 5,RAID6.每一个RAID级别都有自己的强项和弱项. "奇偶校验"定义为用户数据的冗余信息, 当硬盘失效时, 可以重新产生数据. RAID 0: RAID 0 并不是真正的RAID结构, 没有数据冗余. RAID 0 连续地分割数据并并行地读/写于多个磁盘上. 因此具有很高的数据传输率. 但RAID 0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效, 将影响整个数据.因此RAID 0 不可应用于需要数据高可用性的关键应用. RAID 1: RAID 1通过数据镜像实现数据冗余, 在两对分离的磁盘上产生互为备份的数据. RAID 1可以提高读的性能,当原始数据繁忙时, 可直接从镜像拷贝中读取数据.RAID 1是磁盘阵列中费用最高的, 但提供了最高的数据可用率. 当一个磁盘失效, 系统可以自动地交换到镜像磁盘上,NTFS文件系统概述, 而不需要重组失效的数据. RAID 2: 从概念上讲, RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节.然而RAID 2 使用称为"加重平均纠错码"的编码技术来提供错误检查及恢复. 这种编码技术需要多个磁盘存放检查及恢复信息, 使得RAID 2技术实施更复杂. 因此,在商业环境中很少使用. RAID 3: 不同于RAID 2, RAID 3使用单块磁盘存放奇偶校验信息. 如果一块磁盘失效, 奇偶盘及其他数据盘可以重新产生数据. 如果奇偶盘失效,则不影响数据使用.RAID 3对于大量的连续数据可提供很好的传输率, 但对于随机数据,全面解析RAID5RAID6的优势算法技术, 奇偶盘会成为写操作的瓶颈. RAID 4: 同RAID 2, RAID 3一样, RAID 4, RAID 5也同样将数据条块化并分布于不同的磁盘上, 但条块单位为块或记录. RAID 4使用一块磁盘作为奇偶校验盘, 每次写操作都需要访问奇偶盘, 成为写操作的瓶颈. 在商业应用中很少使用. RAID 5: RAID 5没有单独指定的奇偶盘, 而是交叉地存取数据及奇偶校验信息于所有磁盘上. 在RAID5 上, 读/写指针可同时对阵列设备进行操作, 提供了更高的数据流量. RAID 5更适合于小数据块,随机读写的数据.RAID 3与RAID 5相比, 重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘.而对于RAID 5来说, 大部分数据传输只对一块磁盘操作, 可进行并行操作.在RAID 5中有"写损失", 即每一次写操作,将产生四个实际的读/写操作, 其中两次读旧的数据及奇偶信息, 两次写新的数据及奇偶信息. RAID 6: RAID 6 与RAID 5相比,增加了第二个独立的奇偶校验信息块. 两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高. 即使两块磁盘同时失效,也不会影响数据的使用. 但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的"写损失". RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用. |
【IT专家网独家】在上篇文章《在Linux上玩转磁盘阵列》中笔者谈到,RAID-5磁盘阵列是现在使用最普遍的磁盘阵列方式。在RAID- 5这个磁盘阵列模式中,数据平均分布在每个硬盘中。所以即使某个硬盘损坏了,仍然可以凭借其他硬盘上的内容恢复损坏硬盘中的数据。不过,当有两个以上硬盘同时出现故障时,那么硬盘中的数据将无法修复。为了让磁盘阵列发挥其应用的作用,Linux系统管理员需要对磁盘阵列的容错性能力进行分析。通常情况下,根据企业对待数据损失的不同,每个一个季度或者半年进行测试一次。以保障磁盘阵列能够正常工作。
一、测试磁盘阵列是否在起作用。
有时候要测试磁盘阵列是否在起作用年,要对磁盘阵列进行“破坏性”测试。这里的破坏性测试笔者是打上了引号的,不是真的去损坏硬盘。为了测试RAID-5磁盘阵列是否有硬盘损坏的情况,需要先把服务器关掉。然后把其中一块硬盘的线拔掉,让系统找不到这块硬盘。如此的话系统就会认为这块硬盘损坏了。会尝试使用其他硬盘中的数据来恢复损害的硬盘中的内容。重新启动Linux系统后,由于只是去掉了一块硬盘,故系统仍然可以启动RAID-5 磁盘阵列。而且采用了磁盘阵列之后,数据会自动恢复。即少了一块硬盘之后,一切仍然可以正常运行。通过查看磁盘阵列的状态记录文件,可以查看相关的信息。
在Linux系统下,磁盘阵列状态文件保存在/proc/mdstat下。在这个状态文件中,可以看出当前磁盘阵列中启用了几块硬盘,会指明当前硬盘的序号。虽然说同时损坏两块以上硬盘就无法恢复数据,但是,这种情况毕竟还是少数。同时损坏2个硬盘的几率并不是很高。故磁盘阵列在安全性上还是有比较高的利用价值。
在Linux下部署磁盘阵列的时候,还有一个好处。就是即使有两块硬盘损害了,虽然不能够修复数据,但是仍然可以启动Linux操作系统。当两块以上硬盘损坏时,重新启动之后,系统会发出警告信息。此时管理员可以利用ROOT帐号进行登陆。然后更改配置文件/ETC/RAIDTAB的文件名字再重新启动,就可以顺利登陆到Linux系统中。不过可惜的是,此时硬盘上的数据将无法恢复。
二、通过配用硬盘提高磁盘阵列的安全性。
由于2个硬盘以上的损坏将无法恢复数据。所以Linux系统管理员就会考虑,能否在Linux系统中再挂载一个备用硬盘。平时的时候这块硬盘不会包含到磁盘阵列中。当磁盘阵列中某块硬盘出现损坏时,就利用这块备用硬盘替补。如此的话,即使管理员暂时没有发现损坏的硬盘,对企业的影响也不会很大。
大部分的磁盘阵列技术都支持采用备用硬盘。当某个硬盘工作不正常时,磁盘阵列会立刻启动备用硬盘。并通过一定的容错技术,将数据恢复到正常状态。但是并不是所有的磁盘阵列技术都支持这个备用硬盘。笔者在上篇文章中介绍过几个常用的磁盘阵列方式。其中就提到过Linear模式。由于这种模式并不会分散存储数据,而是一块硬盘存储空间满了以后再存储到另一块硬盘中,故并没有容错机制。此时备用硬盘也就不会起作用。不过在RAID-5 模式下,其是分散存储数据的,具有很高的容错性。所以此时若配置一块额外的备用硬盘,能够让磁盘阵列的安全性更上一层楼。另外这里需要注意的是,当操作系统启动的时候,备用硬盘也会随之启动。只是平时的数据不会存储到这一块硬盘中。而只有当某一个硬盘损坏时,才会这块备用硬盘中存入数据。
如果系统管理员需要在已有的磁盘阵列中加入备用硬盘的话,则需要修改磁盘阵列的配置文件/etc/raidtab。其实这个更改也很简单。通常情况下只需要向这个配置文件中加入两条语句即可。
第一条语句:nr-spare-disk 1。这条语句主要用来说明这个硬盘是备用硬盘。除非其他硬盘损坏了否则的话磁盘阵列不会往这个硬盘中存入数据。
第二条语句:device /dev/had。这一条语句用来指定备用硬盘的分区名称。我们知道,Linux系统跟微软操作系统下的磁盘阵列技术有一个很大的不同。在微软操作系统下,它是以硬盘为单位的。但是在Linux操作系统下,则是以分区为单位的。故在Linux操作系统中,即使只有一块硬盘也可以实现磁盘阵列技术,只是不能够实现相关的功能而以。所以,这里除了要指明硬盘外,还需要指明硬盘分区的名字。
另外还有一个注意事项。有些Linux管理员可能担心多个硬盘会同时损坏。所以他们会为磁盘阵列配置多个备用硬盘。此时如果硬盘有损坏的话,系统就会考虑需要首先采用哪块硬盘。此时可以利用spare-disk语句来指定首先采用哪块硬盘。如果编号设置为0,就表示这块备用硬盘是此磁盘阵列所使用的第一顺序备用硬盘。其他的配置跟磁盘阵列的常规配置相同,这里就不做重复介绍了。
编辑推荐:强力推荐Linux下的五大BT下载工具
不过注意当添加完备用硬盘之后,备用硬盘并不是马上生效的。修改完成磁盘阵列的配置文件之后,需要先利用Raidstop命令停用磁盘阵列;然后再利用Mkriad命令重新初始化磁盘阵列。在这个初始化的过程中,系统会在后台同步所有的硬盘数据。所以这个过程会随着硬盘数据的多少而变化。当硬盘中数据比较多时,这个过程可能会比较久。在这个过程中,千万不要重新启动Linux系统。设置好备用硬盘之后,如果磁盘阵列中有某一块硬盘出现了损坏,则系统会自动启动备用硬盘。并且会根据其他硬盘上的数据重建此备用硬盘上的数据。重建后的数据相当于是损坏硬盘数据的一个拷贝。通过这种方式,就可以提高磁盘阵列的容错性能。
