一文了解RAID技术基本概念

RAID是数据存储技术,旨在提高磁盘的IO吞吐以及提供更为可靠的数据安全。在实际工作中经常听到RAID相关名称,那么RAID技术的基本概念是什么、不同RAID级别有什么特性,本文将简单介绍,以了解。


1、RAID技术基本概念
1.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技术时,需要根据实际应用需求、成本预算以及系统的容错能力等因素进行综合考虑。

1.2 RAID不同技术级别

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

在这里插入图片描述

1.2.1 RAID 0(条带化)

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

在这里插入图片描述

  • 特性:通过将数据分散到多个硬盘上并行存取,提供最高的存储性能。
  • 优点:读写性能高,成本低。
  • 缺点:无容错能力,一旦硬盘损坏,数据全部丢失。
1.2.2 RAID 1(镜像)

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

在这里插入图片描述

  • 特性:数据在两个或多个硬盘上完全镜像,提供数据冗余。
  • 优点:读性能提升,数据安全性高,一块硬盘故障时不会丢失数据。
  • 缺点:空间利用率低,成本较高。
1.2.3 RAID 5(分布式奇偶校验)

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

在这里插入图片描述

  • 特性:数据条带化并分布在所有硬盘上,奇偶校验信息也分布存储。
  • 优点:读写性能良好,同时提供数据冗余和容错能力。
  • 缺点:在写操作时需要计算校验值,可能稍慢于RAID 0。
1.2.4 RAID 6(带有两种分布存储的奇偶校验)

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

在这里插入图片描述

  • 特性:与RAID 5类似,但提供两种校验方式,进一步增强容错能力。
  • 优点:数据安全性极高,能容忍两块硬盘同时故障。
  • 缺点:空间利用率较RAID 5更低,成本也更高。
1.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的优点,提供高性能和容错能力。
  • 缺点:成本较高,需要至少四个硬盘。
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是最佳选择。

在这里插入图片描述

1.3 RAID技术实现方式

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

1.3.1 外接RAID卡

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

在这里插入图片描述

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

1.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 0
mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1
#RAID 1
mdadm --create /dev/md1 --level=mirror --raid-devices=2 /dev/sd[d-e]1
#RAID 5
mdadm --create /dev/md2 --level=5 --raid-devices=3 /dev/sd[b-d]1
#RAID 6
mdadm --create /dev/md3 --level=6 --raid-devices=4 /dev/sd[b-e]1
#RAID 10
mdadm --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

参考资料:

  1. https://zhuanlan.zhihu.com/p/638851895
  2. https://blog.csdn.net/xijinno1/article/details/130544513
  3. https://www.techtutsonline.com/raid-configuration-in-linux/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/599781.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis从入门到精通(九)Redis实战(六)基于Redis队列实现异步秒杀下单

文章目录 前言4.5 分布式锁-Redisson4.5.4 Redission锁重试4.5.5 WatchDog机制4.5.5 MutiLock原理 4.6 秒杀优化4.6.1 优化方案4.6.2 完成秒杀优化 4.7 Redis消息队列4.7.1 基于List实现消息队列4.7.2 基于PubSub的消息队列4.7.3 基于Stream的消息队列4.7.4 基于Stream的消息队…

k8s1.28-helm安装kafka-Raft集群

参考文档 [Raft Kafka on k8s 部署实战操作 - 掘金 (juejin.cn)](https://juejin.cn/post/7349437605857411083?fromsearch-suggest)部署 Raft Kafka(Kafka 3.3.1 及以上版本引入的 KRaft 模式)在 Kubernetes (k8s) 上,可以简化 Kafka 集群…

配置vscode用于STM32编译,Debug,github上传拉取

配置环境参考: Docs 用cubemx配置工程文件,用VScode打开工程文件。 编译的时候会有如下报错: vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案:在你的makefile中加上SHELLcmd.exe就可以了 参考…

无参数绕过RCE

一.什么是无参数 顾名思义,就是只使用函数,且函数不能带有参数,这里有种种限制:比如我们选择的函数必须能接受其括号内函数的返回值;使用的函数规定必须参数为空或者为一个参数等 无参数题目特征 if(; preg_replace…

数据结构与算法python版本之线性结构之递归Recursion

递归是一种解决问题的方法,其精髓在于:将问题分解为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决;递归的问题分解方式非常独特,其算法方面的明显特征是:在算法…

小核引导RTOS---RISC-V C906

文章目录 参考日志编译框架目标fip 启动流程fip文件组成BL2程序 总结思考备注 参考 参考1. How does FSBL load the FreeRTOS on the small core and execute it?参考2. Duo now supports big and little cores?Come and play!Milk-V Duo, start!参考3. 使用uboo…

SQLite 4.9的虚拟表机制(十四)

返回:SQLite—系列文章目录 上一篇:SQLite 4.9的 OS 接口或“VFS”(十三) 下一篇:SQLite—系列文章目录 1. 引言 虚拟表是向打开的 SQLite 数据库连接注册的对象。从SQL语句的角度来看, 虚拟表对象与任何其他…

C++:红黑树封装实现map、set

一、map、set的底层结构 前面对map、set等树形结构的关联式容器进行了简单的介绍,了解到map、set都是由红黑树封装实现的。红黑树是一种由二叉搜索树进行平衡处理后的平衡树,其查找、插入、删除等操作的时间复杂度为O(logn),详情请参考数据结…

nature| 肠道中藏着癌症免疫治疗的关键

在疾病发生过程中,人体共生菌发生了系统性的变化,起到了正向或负向作用,因此可以把共生菌看作人体活动的一个重要外部器官。 癌细胞通过释放特定信号,给免疫系统“踩刹车”,抑制免疫系统的识别和杀伤。这类免疫系统的…

【管理咨询宝藏49】AA银行上市发展提升分析报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏49】AA银行上市发展提升分析报告 【格式】PPT版本,可编辑 【关键词】战略规划、商业分析、管理咨询 【强烈推荐】这是一套市面上非常…

python 05文件的读写

import os f open("data/test.txt","w") #如果文件不存在就创建文件 f.write("11,12\n21,22\n") #写入两行 第一行是11,12 第二行 21,22 f.close() #打开文件后要关闭写入f open("data/test.txt","r…

vscode 安装vim插件配置ctrl + c/v功能

搜索Vim插件 插件介绍部分有提示操作 首先安装该插件,然后按照下述步骤设置ctrl相关的快捷键,以便于脱离im快捷键而愉快的敲代码。 1.在“设置”搜索框内搜索vim.handleKeys,选择 Edit in settings.json 2. 设置ctrl-c,ctrl-v等快捷键置为fa…