前言

RAID 技术是一种多磁盘技术,今天站在其他博主的肩膀上学习一下 RAID,主要将一些重点知识总结整理了一下,方便自己以后查阅。这里感谢一下相关博主,能让我站在肩膀上看世界。

参考链接:

https://www.cnblogs.com/oneasdf/p/9367152.html

https://www.jianshu.com/p/a244350bbf82

https://www.prepressure.com/library/technology/raid

RAID是什么?解决了什么问题?

RAID 独立磁盘冗余阵列( Redundant Array of Independent Disks )

RAID 技术作为高性能、高可靠的存储技术,已经得到了非常广泛的应用。 RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。 D. A. Patterson 等的论文中定义了 RAID1 ~ RAID5 原始 RAID 等级

从实现角度看, RAID 主要分为软 RAID、硬 RAID 以及软硬混合 RAID 三种。软 RAID 所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率自然最低。硬 RAID 配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,但成本很高。软硬混合 RAID 具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本 在软 RAID 和硬 RAID 之间。

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

RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性

RAID原理

RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )

镜像

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

镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。

镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像的广泛应用,主要应用于至关重要的数据保护,这种场合下数据丢失会造成巨大的损失。另外,镜像通过“ 拆分 ”能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。

数据条带

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

磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。

数据条带技术的分块大小选择非常关键。条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。
数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。

数据校验

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

采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。

海明校验码和异或校验是两种最为常用的数据校验算法。海明校验码是由理查德.海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。

总结

镜像具有高安全性、高读性能,但冗余开销太昂贵。数据条带通过并发性来大幅提高性能,然而对数据安全性、可靠性未作考虑。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。

不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。

RAID的主要优势

大容量

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

高性能

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

可靠性

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

可管理性

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

主要的RAID等级

RAID0

RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

RAID0 具有低成本、高读写性能、 100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。 因此, RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

RAID1

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50% 。 RAID1在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。所示。

RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

RAID 1提供了卓越的读速度和写速度,可以与单个驱动器相媲美。如果一个驱动器故障,数据不必重建,它们只需要复制到替换驱动器。

主要的缺点是,由于所有数据都要写入两次,所以有效存储容量仅为驱动器总容量的一半。

RAID5

前面两种方案分别偏向于磁盘速度和数据安全,而RAID5则是在读写性能、数据安全和成本之间的一个相互妥协方案。

RAID5技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。这样的好处是其中任何一设备损坏后不至于出现致命缺陷,图中的parity部分存放的就是数据的奇偶校验信息。

简单说就是RAID5方案实际上没有备份硬盘中的真实数据信息(数据只有一份),而是当硬盘设备出现问题后通过奇偶校验信息来尝试重建损坏的数据。

这种方案兼顾了了硬盘设备的读写速度、数据安全性与存储成本问题。

RAID5读数据事务非常快,而写数据事务有点慢(由于必须计算奇偶校验)。

如果一个驱动器故障,仍然可以访问所有数据,即使故障驱动器正在被替换,存储控制器在新驱动器上重建数据。

RAID10

虽然RAID5看起来在成本问题、磁盘读写以及数据安全性有了一个相互妥协的方案,但实际上很多企业,尤其是金融企业数据本身的价值远比磁盘价格高,因此成本并不是第一考虑要素,在这种场景下,一般是采用RAID10技术。

如果RAID 10配置中的某个磁盘出现问题,重建时间会非常快,因为所需要的只是将所有数据从幸存的镜像复制到新驱动器。

RAID10一半的存储容量用于镜像,因此与大型RAID 5或RAID 6阵列相比,这是一种昂贵的冗余方式。

总结

本文站在巨人的肩膀上看世界,整理和总结了RAID的作用和原理以及常见的RAID等级。

– by 俩只猴 2021.03.01

Linux之RAID技术学习整理相关推荐

  1. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  2. 查看Linux服务器raid信息笔记整理!

    原因: 有些情况下服务器系统不是自己装的,raid也不是自己配置的,或者当你接收一个岗位,远程登录系统后可能就不知道系统是否有做raid,raid级别?因此在这里博主总结一下Linux下查看软.硬ra ...

  3. Linux:raid技术及软raid管理命令mdadm详解

    RAID技术及软raid管理mdadm详解 RAID是什么,常见的RAID有哪些? 软RAID实现,mdadm创建RAID实操 RAID是什么,常见的RAID有哪些? RAID: 磁盘阵列(Redun ...

  4. linux内存管理机制--学习整理汇总 dma-buf(3)

    内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点.Linux的虚拟内存管理是基于mmap来实现的.vm_area_struct ...

  5. 【整理】Python全栈技术学习路线

    [整理]Python全栈技术学习路线 [阶段一]Python基础+Linux [阶段二]多任务编程+服务器+前端基础 [阶段三]数据库+mini Web框架 [阶段四]Dhango框架+美多商城项目 ...

  6. 《Linux就该这么学》—非常适合linux技术学习的入门好书

    <Linux就该这么学>是一本注重于实用性的Linux系统技术自学书籍,自基础篇公布后网站每天日常阅读量已经超过10000多人,25万多名忠实粉丝读者,是目前国内人气增速最快的IT书籍.您 ...

  7. Raid技术在Linux下的使用

    Raid技术在Linux下的使用 一.RAID介绍 1.RAID理解 2.RAID优点 3.RAID分类 二.RAID0 1.RAID0介绍 2.RAID0图示 3.RAID0特点 三.RAID1 1 ...

  8. linux 文件inode,linux文件系统-inode学习整理

    linux文件系统-inode学习整理 介绍 linux文件系统可讲的模块有很多,包括文件系统整体架构.文件系统分类.虚拟文件系统以及文件系统存储结构等等,本文主要介绍的是文件系统的存储结构,也就是本 ...

  9. 网易视频云技术分享:linux软raid的bitmap分析

    网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀场.在线 ...

最新文章

  1. 深度学习论文阅读路线图
  2. 自定义Xcode 文件头部的注释
  3. .Net Cancellable Task - APM异步超时机制扩展
  4. 8086加法指令ADD
  5. 视频质量,分辨率以及码率之间的关系
  6. [教程]配置青鸟云Web服务器
  7. 打开window常用程序快捷命令
  8. macf1-f12按键失灵_枕头2-1-0失灵
  9. 利用Nginx正向代理加速代码编译外网依赖下载速度
  10. 【PyTorch深度学习项目实战100例】—— Python+OpenCV+MediaPipe手势识别系统 | 第2例
  11. Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign
  12. Fiddler抓包工具保姆级使用教程(超详细)
  13. 【强化学习】确定性策略强化学习-DPGDDPG算法推导及分析
  14. mysql 游标当前行,MySQL游标的使用笔记大全
  15. 专家名人谈编程的作用
  16. scrapy-中国气象局·天气预报
  17. 八大排序 —— 详细图文讲解
  18. 华为云计算HCIA题目1
  19. Android wpa_supplicant源码分析---nl80211内核通信Generic Netlink
  20. 定时器Timer(二)—— 定时器Timer的使用

热门文章

  1. 主流JSON引擎性能比较(GSON,FASTJSON,JACKSON,JSONSMART)
  2. 电脑有机械硬盘和固态硬盘,如何切换系统启动盘?
  3. 基于jsp+ssm的办公用品领用管理系统
  4. EN 13969防水用柔性薄板.沥青防潮薄板—CE认证
  5. npm, cnpm的安装与卸载
  6. 卑微的人依然可以有美丽的梦想—一段让无数人感动的视频
  7. 数组初始化的三种方式
  8. SVM绘制二维示意图贺三维示意图
  9. 通过微信分享链接,后面被加上from=singlemessageisappinstalled=1导致网页打不开
  10. 8.12-8.13网站构建实战日记