磁盘阵列(RAID)技术介绍

RAID 历史

1988 年美国加州大学伯克利分校的 D.A.Patterson 教授等首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念,即廉价冗余磁盘阵列( Redundant Array of Inexpensive Disks)。由于当时大容量磁盘比较昂贵,RAID 的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量、性能、可靠性。随着磁盘成本和价格的不断降低,” 廉价” 已经变得毫无意义。因此,RAID 咨询委员会(RAID Advisory Board,RAB)决定用 “独立” 替代 “廉价”,于是 RAID 变成了独立磁盘冗余阵列(Redundant Array of Independent Disks)。但这仅仅是名称的变化,实质内容并没有改变。

RAID 等级

  • RAID 这种设计思想很快被业界接纳,RAID 技术作为高性能、高可靠的存储技术,得到了非常广泛的应用。RAID 主要利用镜像、数据条带和数据校验三种技术来获取高性能、可靠性、容错能力和扩展性,根据对这三种技术的使用策略和组合架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。

  • D.A.Patterson 教授等的论文中定义了 RAID0 ~ RAID6 原始 RAID 等级。随后存储厂商又不断推出 RAID7、RAID10、RAID01、RAID50、RAID53、RAID100 等 RAID 等级,但这些并无统一的标准。目前业界与学术界公认的标准是 RAID0 ~ RAID6,而在实际应用领域中使用最多的 RAID 等级是 RAID0、RAID1、RAID3、RAID5、RAID6 和 RAID10

  • RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方式。

RAID 等级的读法

RAID0、RAID1、RAID10、RAID100 等通常按数字逐位读出,例如 RAID10 读作 "RAID 一零",而不是 "RAID 十"。

RAID 分类

从实现角度来看,RAID 主要分为软 RAID、硬 RAID 以及混合 RAID 三种。

软 RAID

所有功能都是由操作系统和 CPU 来完成,没有独立的 RAID 控制处理芯片和 I/O 处理芯片,性能是最低的,但成本也是最低。

硬 RAID

配备了专门的 RAID 控制处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源。性能是最高的,但成本也是最高。

混合 RAID

具备 RAID 控制处理芯片,但没有专门的 I/O 处理芯片,需要 CPU 和驱动程序来处理 I/O。性能和成本介于软 RAID 和硬 RAID 之间。

RAID 关键技术

镜像技术

  • 镜像技术是一种冗余技术,为磁盘提供数据备份功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,镜像技术最典型地的用法就是,同时在磁盘阵列中产生两个完全相同的数据副本,并且分布在两个不同的磁盘上。

  • 镜像技术提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。

  • 镜像技术支持从多个副本并发读取以提升读性能;写入时会同时写入所有副本(支持并行写),但由于需要等待全部磁盘写入完成,写性能通常不会提升,反而可能略有下降,最终写入速度取决于写入最慢的那块磁盘。

  • 镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下的数据丢失可能会造成非常巨大的损失。

数据条带化技术

  • 数据条带化技术是一种自动将 I/O 操作负载均衡到多个物理磁盘上的技术。更具体地说就是,将一块连续的数据分成很多小部分并把它们分别存储到不同磁盘上。这就能使多个进程可以并发访问数据的多个不同部分,从而获得最大程度上的 I/O 并行能力,极大地提升性能。

数据校验技术

  • 数据校验技术是指 RAID 在写入数据的同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。

  • 数据校验技术相对于镜像技术的优势在于节省大量存储开销,但由于每次数据读写都要进行大量的校验运算,对计算机的 CPU 运算速度要求很高,且必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

RAID 常见等级详解

JBOD

  • JBOD(Just a Bunch of Disks,磁盘簇),表示一个没有控制软件提供协调控制的磁盘集合,这是 RAID 区别与 JBOD 的主要因素。JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。
  • JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘的存储空间用完后,再依次往后面的磁盘存储数据。JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。
  • JBOD 本质上只是简单提供一种扩展存储空间的机制,JBOD 可用存储容量等于所有成员磁盘的存储空间之和。
  • JBOD 通常是指磁盘柜,而不论其是否提供 RAID 功能。不过,JBOD 并非官方术语,官方称为 Spanning

RAID0

  • RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID,因为它并不提供任何形式的冗余策略。RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。

  • 一个由 N 块磁盘组成的 RAID0,它的理论读写性能是单个磁盘性能的 N 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

  • 由于 RAID0 可以并发执行 I/O 操作,总线带宽得到充分利用,并且不需要进行数据校验,因此 RAID0 的性能在所有 RAID 等级中是最高的

  • RAID0 具有低成本、高读写性能、100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦磁盘损坏,将无法恢复数据。

  • RAID0 的适用场景:

    • 对数据的顺序读写速度要求不高,对数据的安全性和可靠性要求不高,但对系统性能要求很高的场景,比如:
    • 视频剪辑 / 渲染缓存(临时素材处理,追求高读写速度)
    • 游戏加载盘(加快加载速度,对数据丢失不敏感)
    • 缓存服务器(如临时缓存、CDN 缓存数据)
    • 大数据 / 科学计算临时数据盘(中间结果可丢失)
  • RAID0 与 JBOD 相同点:

    • 存储容量:都是成员磁盘容量总和
    • 磁盘利用率都是 100%,即都没有做任何的数据冗余备份
  • RAID0 与 JBOD 不同点:

    • JBOD:数据是顺序存放的,一个磁盘存满后才会开始存放到下一个磁盘
    • RAID0:通过数据条带技术将数据分布到多个磁盘,实现并行读写,在理想情况下其读写性能可接近单盘的 N 倍(N 为磁盘数量),但实际性能会受到硬件和访问模式等因素影响

RAID1

  • RAID1 是一种镜像技术,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50%。

  • RAID1 支持从多个副本并发读取以提升读性能,写入时会同时写入所有副本(支持并行写),但由于需要等待全部磁盘写入完成,写性能通常不会提升,反而可能略有下降

  • RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统将自动切换到镜像磁盘,不会影响使用。

  • RAID1 是为了增强数据安全性使两块磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID1 拥有完全容错的能力,但实现成本高。

  • RAID1 的适用场景:

    • 对顺序读写性能要求较高,或对数据安全性要求较高的场景,比如:
    • 数据库服务器(如订单、用户数据,要求高可靠性)
    • 金融交易系统(不允许丢失数据)
    • 企业文件服务器 / NAS(重要文件存储)
    • 操作系统盘(保证系统不因磁盘损坏而宕机)

RAID10

  • RAID10 是一个 RAID1 与 RAID0 的组合体,所以它继承了 RAID1 的高安全性和 RAID0 的高性能。

  • RAID10 是先进行数据镜像(RAID1),再在多个镜像组之间进行数据条带化(RAID0),即先保证数据冗余,再提升读写性能。

RAID10 与 RAID01 的核心区别

  • RAID10:先冗余(镜像),再提速(条带化)
  • RAID01:先提速(条带化),再冗余(镜像),可靠性不如 RAID10

RAID01

  • RAID01 是一个 RAID0 与 RAID1 的组合体,所以它继承了 RAID0 的高性能和 RAID1 的高安全性。

  • RAID01 是先进行数据条带化(RAID0),再对条带后的数据整体做镜像(RAID1),即先提升读写性能,再保证数据冗余。

  • RAID01 的可靠性低于 RAID10,一旦某个条带组中的一块磁盘损坏,整个条带组都会失效,从而使磁盘阵列退化为单一镜像组,容错能力较弱。

RAID10 与 RAID01 的选择建议

RAID10 的容错率(可靠性)要比 RAID01 高,所以生产环境中一般是不使用 RAID01,而是使用 RAID10。

参考资料