企业空间 采购商城 存储论坛

什么是RAID?

学习存储一定要了解RAID技术,这是必修的存储基础知识,RAID是支撑应用存储发展的重要技术。

RAID是什么?RAID英文全称Redundant Array of Independent Disk,翻译过来就是“独立磁盘冗余系统”。RAID是一种可提高性能或提供容错功能的磁盘子系统。

SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。

RAID其实是一种存储虚拟化技术,它将多个单独的物理磁盘驱动器以不同的方式组合形成一个逻辑磁盘驱动器,从而达到提升存储容量、读写性能和数据安全性的目的。

RAID 架构示意图

RAID发展历史

最早提起类似RAID理念的是GEAC公司的Gus German和Ted Grunau,称为MF-100。

RAID概念在1987年由美国加州伯克利分校的David Patterson、Garth A. Gibson、和Randy Katz三人正式提出,1988年6月,他们发表了论文“A Case for Redundant Arrays of Inexpensive Disks (RAID)”,文中提出了五种级别的RAID:RAID1~RAID5。

注意: 最初的RAID概念中,I是指Inexpensive(廉价的),后来业界将Inexpensive换成了Independent(独立的)。提出RAID的初衷之一是希望用多块廉价(Inexpensive)的磁盘组成一个磁盘组来替代大型机上昂贵的大容量磁盘,并实现性能的超越,即用RAID代替SLED(Single Large Expensive Disk)。那时候有的大型机上的单个磁盘容量可达7500MB,而PC磁盘容量只有1B或2MB,不过大型机上磁盘成本也高达$10~20/MB,而PC磁盘为$1~3/MB。

RAID 1: 在20世纪70年代已经建立,例如Tandem NonStop Systems,在1983年左右,DEC开始将子系统镜像RA8X磁盘驱动器(现在称为RAID 1)作为其HSC50子系统的一部分。

RAID 4: 1977年IBM的Norman Ken Ouchi提交了一项专利“SYSTEM FOR RECOVERING DATA STORED IN FAILED MEMORY UNIT”,其中涉及了磁盘镜像(RAID 1)、专用奇偶校验码(RAID 3和RAID4),这是后来的RAID 4的前身。也有人认为是RAID 5的前身。

RAID 5: 1986年,IBM的Clark提交了一项专利,后来被命名为RAID 5。

RAID 2: 1988年,Thinking Machines的 DataVault在一系列磁盘驱动器中使用了纠错码方式(现在称为RAID 2)

RAID专利拥有者是IBM的Norman Ken Ouchi,他在1977年发明并提交了专利“SYSTEM FOR RECOVERING DATA STORED IN FAILED MEMORY UNIT”,即“恢复存储在故障存储器单元中的数据的系统”,专利号US4092732。

有许多资料说第一个RAID是1978年发明的,是不对的,从该专利对应的专利申请号US19770801961可以看到应该是1977年就提交了,1978年5月30日是专利局的公布日期。

RAID优势特点

(1)高性能

提高性能是RAID问世的最根本的推动因素。RAID的高性能主要受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有限,容易成为系统性能的瓶颈。通过数据条带化,RAID将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。

(2)可用性和可靠性

可用性和可靠性是 RAID 的另一个重要特征。从理论上讲,由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差,因为数量越多,单点故障概率增大(这里有个隐含假定:单个磁盘故障将导致整个 RAID 不可用)。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失,不影响系统的连续运行。有的RAID产品还可以在断电情况下提供热插拔、在线更换硬盘功能。

(3)大容量

这是RAID 的一个明显优势,它扩大了磁盘系统的容量,由多个磁盘组成的RAID系统可以具有海量存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,大多数的存储需求都可以满足。一般来说, RAID可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。

(4)可管理性

实际上, RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。

RAID级别

RAID级别命名方式如,RAID 0、RAID 1/RAID 5、RAID 10等。RAID每一个级别代表一种RAID组合实现方法和技术,级别之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑成本、性能、可靠性等多因素来选择合适的 RAID 级别。

RAID术语者David Patterson等三人的论文中,他们意识到到不同类型的系统将不可避免地具有不同的性能和冗余要求,对RAID方式进行了不同级别划分,在性能和数据冗余之间提供了各种妥协。从RAID1 ~ RAID5,这是最原始的五个RAID等级。 1988 年以来又扩展了 RAID0 和 RAID6 。近年来,存储厂商不断推出诸如 RAID7 、 RAID10/01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等级,但这些并无统一的标准。目前业界公认的标准是 RAID0 ~ RAID5 ,除 RAID2 外的四个等级被定为工业标准,而在实际应用领域中使用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。镜像将相同的数据复制到多个驱动器上。条带化将每个驱动器的存储空间划分为从扇区(512 字节)到几兆字节的单位。所有磁盘的条带按顺序交错和寻址。

RAID级别及工作原理

RAID基本原理

架构上,通过RAID控制器就将多块磁盘组合,在操作系统层我们看到的是一个或多个逻辑磁盘。

技术上,RAID主要采用磁盘镜像技术条带化技术奇偶校验技术实现高性能、可靠性、容错能力和扩展性。

镜像(Mirroring),将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低,确保数据正确地写到多个磁盘需要更多的时间消耗。

数据条带(Data Stripping),将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升。

数据校验(Data Parity),利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。

不同等级的 RAID 采用其中一个或多个技术,得到的是不同的容量、I/O性能、可靠性、可用性。在决定选择哪种RAID级别之前,需要深入理解系统需求,根据自身情况进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。

RAID代替不了备份容灾

RAID容错及校验机制实现的是高可用性和可靠性,并不能保证数据的安全。

磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换 ( Hot Swapping ),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说, RAID 不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、误操作等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于 RAID 系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾备等数据保护措施是非常必要的,与 RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。

重建RAID必须注意的问题

如何在没有数据丢失的情况下重建RAID阵列?

当数据存储管理员遇到这种情况时应该采取什么行动?以下是一些防止RAID重建后数据丢失的提示:

切勿在混乱的磁盘上创建新文件:作为预防措施,请特别注意不要创建任何新文件或运行任何重要的应用程序,直到数据被恢复。新文件可能会覆盖损坏磁盘上的可用数据。

在重建之前映像RAID结构:在重建之前对RAID进行映像将保护数据,即使重建不是确保映像程序提供取证或扇区/块级磁盘映像。

在单独的卷上创建备份:进行备份可确保备份中的基本文件良好,并且覆盖活动卷上的数据不会导致不可恢复的损坏。

使用多个还原进行测试备份:在不同位置还原备份,最好是在不同的物理位置。或者,在启动重建之前,分别对每个驱动器进行映像以进行有用的恢复

仅在执行备份后运行CHKDSK或FSCK工具:在运行修复实用程序之前,请执行安全备份并通过正确的还原进行验证。这些修复工具假定备份可用,因此可能会覆盖文件指针以使文件系统保持一致。

不要添加,移动或删除文件:从受影响的RAID添加,删除或移动数据可能会使数据恢复变得复杂。而是根据需要复制文件。

参考资料

1.https://en.wikipedia.org/wiki/RAID
2.A Case for Redundant Arrays of Inexpensive Disks (RAID)
3.SYSTEM FOR RECOVERING DATA STORED IN FAILED MEMORY UNIT
4.Raid技术白皮书(强烈推荐)
5.计算机存储发展史