一文看懂RAID技术

科技   2024-12-08 07:35   海南  
【摘要】RAID是数据存储技术,旨在提高磁盘的IO吞吐以及提供更为可靠的数据安全。在实际工作中经常听到RAID相关名称,那么RAID技术的基本概念是什么、不同RAID级别有什么特性,本文将进行详细解读。

【作者】大唐小少,某股份制商业银行数据中心DBA,十多年核心业务系统数据库运维经验,参与完成分布式核心系统项目投产上线,目前主要负责核心系统分布式数据库运维体系建设。对国产数据库、分布式和容器化相关技术领域感兴趣。

1.RAID基本概念介绍

RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列)是一种数据存储技术,旨在通过组合多个物理硬盘驱动器来提供更高的数据传输速率、更大的存储容量以及数据冗余和容错功能。RAID的发展历史可以追溯到1987年,当时加州大学伯克利分校的计算机科学家D. A. Patterson教授等首次在研究论文中提出了RAID的概念。随后,这一概念在学术界和产业界引起了广泛关注。

RAID的设计初衷是提供高端的存储功能和冗余的数据安全,在整个系统中,RAID被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的I/O性能。RAID中主要有三种关键技术:镜像(Mirroring)、数据条带化(Data Stripping)和数据校验(Data parity)。

  • 镜像(Mirroring):镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于RAID而言,采用镜像技术将会同时在阵列中产生两个完全相同的数据副本,并分布在两个不同的磁盘驱动器组上。当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。镜像技术提供了非常高的数据安全性,但其代价也是非常昂贵的,至少需要双倍的存储空间。

  • 数据条带化(Data Stripping):RAID由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合I/O,有效提高了整体I/O性能,而且具有良好的线性扩展性。数据条带化虽然可以提升IO性能,但是不能保证数据可靠性和可用性。

  • 数据校验(Data parity):数据校验也是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。采用数据校验时,RAID要在写入数据同时进行校验计算,并将得到的校验数据存储在RAID成员磁盘中。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件RAID控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

RAID技术通过不同的级别和配置方式来实现不同的性能提升和数据保护。不同的RAID级别在数据可靠性、读写性能、成本等方面有着不同的权衡。因此,在选择RAID技术时,需要根据实际应用需求、成本预算以及系统的容错能力等因素进行综合考虑。

2.RAID不同技术级别

RAID主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把RAID分为不同的等级,以满足不同数据应用的需求。目前业界公认的标准是RAID0~RAID6,在实际应用领域中使用最多的RAID等级是RAID0、RAID1、RAID5、RAID6和RAID10。

2.1 RAID 0(条带化)

RAID 0是一种简单的、无数据校验的数据条带化技术,RAID 0将磁盘条带化后组成大容量的存储空间,并将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。RAID 0可以充分利用总线带宽,提升并发IO吞吐,并且不需要数据校验,因此在所有RAID等级中性能是最高的。

  • 特性:通过将数据分散到多个硬盘上并行存取,提供最高的存储性能。

  • 优点:读写性能高,成本低。

  • 缺点:无容错能力,一旦硬盘损坏,数据全部丢失。

2.2 RAID 1(镜像)

RAID1利用镜像技术,将数据完全一致地分别写到工作磁盘和镜像磁盘,因此它的磁盘空间利用率为50%。RAID1对写入性能会有影响,但是读没有影响。RAID1提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响可用性。

  • 特性:数据在两个或多个硬盘上完全镜像,提供数据冗余。

  • 优点:读性能提升,数据安全性高,一块硬盘故障时不会丢失数据。

  • 缺点:空间利用率低,成本较高。

2.3 RAID 5(分布式奇偶校验)

在RAID 5中,数据被分成多个块,并按照固定大小的条带(Stripe)分布在不同的硬盘驱动器上。每个条带包含数据块和奇偶校验块。数据块存储实际的用户数据,而奇偶校验块则用于计算奇偶校验信息。奇偶校验信息是通过对其他硬盘驱动器上相同位置的数据块进行异或(XOR)运算得到的。每个条带中的奇偶校验块包含对应数据块的奇偶校验信息。与RAID 3和RAID 4不同之处是,RAID5中数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。

  • 特性:数据条带化并分布在所有硬盘上,奇偶校验信息也分布存储。

  • 优点:读写性能良好,同时提供数据冗余和容错能力。

  • 缺点:在写操作时需要计算校验值,可能稍慢于RAID 0。

2.4 RAID 6(带有两种分布存储的奇偶校验)

RAID 6中引入双重校验的概念,可以保证当磁盘阵列中同时出现两个磁盘失效时,磁盘阵列仍能够继续工作,不会发生数据丢失。RAID 6思想最常见的实现方式是采用两个独立的校验算法,假设称为P和Q,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,可以通过求解两元方程来重建两个磁盘上的数据。虽然RAID 6的安全等级提高了,但是它的成本要高于RAID 5许多,写性能也较差,并有设计和实施非常复杂,实际很少使用到。

  • 特性:与RAID 5类似,但提供两种校验方式,进一步增强容错能力。

  • 优点:数据安全性极高,能容忍两块硬盘同时故障。

  • 缺点:空间利用率较RAID 5更低,成本也更高。

2.5 RAID10或RAID01(镜像与条带化结合)

RAID 10在技术实现上结合了RAID 1的镜像(Mirroring)和RAID 0的条带化(Striping)两种技术,从而提供了数据的高可靠性和高性能。

1.首先RAID 10创建了两个独立的RAID 1阵列。在RAID 1中,数据被写入到两个硬盘上,形成镜像。这意味着每个磁盘上都存储了完全相同的数据。这种冗余设计使得如果一个硬盘发生故障,数据仍然可以从另一个硬盘上读取,从而保证了数据的高可靠性。

2.接着这两个独立的RAID 1阵列再组成一个RAID 0阵列。在RAID 0中,数据被分割成多个块,并分散存储在不同的硬盘上。这种条带化技术可以并行地读写多个硬盘,从而提高了数据的访问速度。

RAID 10的整体结构可以看作是先将数据镜像到两个硬盘上,然后再将这些镜像数据进行条带化存储。但是RAID 10至少需要四个硬盘来实现,因为至少需要两组镜像,因此RAID 10在硬件成本上相对较高,但其在性能和可靠性上的优势使得它适用于对性能要求较高的场景,如数据库服务器、重要业务系统等。

  • 特性:先对硬盘进行镜像,再对镜像结果进行条带化。

  • 优点:结合RAID 0和RAID 1的优点,提供高性能和容错能力。

  • 缺点:成本较高,需要至少四个硬盘。

2.6 RAID不同技术对比

RAID等级的选择主要考虑数据安全性、 I/O性能和硬件成本。在实际应用中主流RAID等级包括RAID 0、RAID 1、RAID 3、RAID 5、RAID 6和RAID 10,它们之间的技术对比情况如下。其中RAID 0性能最佳,但是没有保证数据的可用性;综合考虑安全和性能下,RAID 1是最佳选择;在安全、性能和成本综合考虑,RAID 5或RAID 6更为适合;对于一些核心业务系统,RAID 10是最佳选择。


3.RAID技术实现方式

要实现RAID技术,可以通过硬件RAID卡方式如独立RAID卡或零通道RAID卡,也可以通过操作系统软RAID方式实现。相对而言硬件RAID卡在性能和稳定性上更具优势。

3.1 外接RAID卡

RAID卡集成CPU和Cache Memory,通过集成或借用主板上的SCSI控制器来管理硬盘。根据是否集成SCSI控制器又分为独立RAID卡和零通道RAID卡

外接RAID卡通过其硬件RAID控制器,接收主机发送的数据,按照预设的规则进行数据的分割、条带化,并根据所选的RAID级别,将数据分散存储到多个磁盘驱动器上。同时,对于某些RAID级别,它还会生成并存储冗余数据,如镜像数据或奇偶校验信息,以确保数据的完整性和可靠性。

3.2 操作系统软RAID

软RAID没有专用的控制芯片和I/O芯片,完全由操作系统和CPU来实现RAID功能。软RAID在配置管理和数据恢复都比较简单,但是RAID所有任务的处理完全由CPU来完成,如计算校验值,这种方式需要消耗大量的运算资源,相比硬件RAID卡性能上会受到影响。在Linux系统中实现软RAID操作方法如下:

1)使用fdisk检查和创建分区

#fdisk -l列出系统磁盘及分区信息#使用fdisk为每个磁盘创建分区fdisk /dev/sdx

2)使用mdadm命令创建RAID设备

#RAID 0mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1#RAID 1mdadm --create /dev/md1 --level=mirror --raid-devices=2 /dev/sd[d-e]1#RAID 5mdadm --create /dev/md2 --level=5 --raid-devices=3 /dev/sd[b-d]1#RAID 6mdadm --create /dev/md3 --level=6 --raid-devices=4 /dev/sd[b-e]1#RAID 10mdadm --create /dev/md4 --level=10 --raid-devices=4 /dev/sd[b-e]1

3)创建文件系统

[root@centos ~]# mkfs.ext4 /dev/md1[root@centos ~]# mkdir /raid1[root@centos ~]# mount /dev/md1 /raid1

原题:一文了解RAID技术基本概念

欢迎点击文末阅读原文到社区原文下留言交流

觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到


 资料/文章推荐:


欢迎关注社区以下  “存储”技术主题 ,将会不断更新优质资料、文章。地址:https://www.talkwithtrend.com/Channel/179

下载 twt 社区客户端 APP


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

twt企业IT社区
talkwithtrend.com社区(即twt社区)官方公众号,持续发布优秀社区原创内容。内容深度服务企业内各方向的架构师、运维主管、开发和运维工程师等IT专业岗位人群,让您时刻和国内企业IT同行保持信息同步。
 最新文章