| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> RAIDS详细分析整理 -> 正文阅读 |
|
[系统运维]RAIDS详细分析整理 |
对RAID的简单了解 RAID (Redundant Array of Independent Disks) 独立磁盘冗余阵列,简称磁盘阵列。 RAID是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 RAID是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余技术。 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。 RAID常见的几种方案 RAID常见的几种方案可分为:RAID0, RAID1, RAID3, RAID5, RAID6, RAID10 对RAID原理的细致分析 SNIA对RAID的定义是:一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。 RAID的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。 在整个系统中,RAID被看作是由两个或更多磁盘组成的存储空间,通过并发的在多个磁盘上读写数据来提高存储系统的I/O性能。 大多数RAID等级具有完备的数据校验、纠正措施、从而提高系统的容错性,甚至是镜像方式,大大增强系统的可靠性。 RAID的关键技术 RAID的两个关键技术是:1.提高数据的可靠性。2.提高I/O的性能。 磁盘阵列中,数据分散在多个磁盘中,但对于计算机系统来说,就是一个单独的磁盘。 通过把相同数据同时写入到多块磁盘,或者将计算的校验数据写出到阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据的丢失。 有些RAID等级(RAID6)允许更多的磁盘同时发生故障(要知道,多数标准系列的RAID如果两块以上的磁盘发生故障会导致数据无法恢复)可以用新的磁盘替换故障磁盘,RAID会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,从而保证数据的一致性。 对于RAID,其数据分散保存在RAID中的多个不同磁盘上,并发数据读写要高于单个的硬盘读写,也为此可以获得更高的聚合I/O带宽 当然,磁盘阵列会减少全体磁盘的总可用的存储空间,牺牲空间换取更高的可靠性和性能。如上诉所说的RAID1存储空间利用率仅有50%,RAID5会损失其中一个磁盘的存储容量,空间利用率为(n-1)/n。 磁盘阵列的好处在于:磁盘阵列可以在部分磁盘损坏的情况下,仍能保持系统不中断的连续运行,在重建故障磁盘数据到新磁盘的过程中,系统可以正常运行,但是性能肯定有所降低。一些磁盘阵列在添加或删除磁盘的时候必须要停机,而有些则支持热交换,也就是不用停机的去替换磁盘驱动器,这种高磁盘阵列主要用于要求高的可能性的应用系统(系统不能停机或尽量减少停机的时间) 一般来讲,RAID不可作为一种数据备份的代替方案,他对非磁盘故障(人为破坏,意外删除)造成的数据丢失无能为力。毕竟对于RAID来说,数据是完好的,没有发生数据丢失的问题。所以数据备份、容灾等措施应于RAID相辅相成,在不同的层次进行数据的保护。 对RAID的优势分析 RAID思想从提出后,就广泛的被业界所接纳,存储工业界投入了大量的时间和财力进行研究和开发相关产品。而且随着处理器、内存、计算机接口等技术的发展,RAID不断的进行技术上的发展和革新,同样也在计算机存储领域得到了广泛的应用。从高端系统逐渐延申到普通的中低端系统。RAID的主要优势有:大容量、高性能、可靠性、可管理性。 大容量 这是RAID的一个显然优势,它扩大了磁盘的容量,由多个磁盘组成的RAID系统具有海量的存储空间。现在单个磁盘的容量可以达到1TB以上,这样的RAID的存储容量可以达到PB级,大多数的存储需求都可以满足。 一般来说,RAID可用容量要小于所有成员磁盘的总容量。不同等级的RAID算法需要一定的冗余开销,具体的容量开销与采用的存储算法有关。如果已知RAID算法和容量,是可以计算处RAID的可用容量。通常,RAID的利用率在50%~90%。 高性能 RAID的高性能受益于数据条带化技术(把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法)。 单个的磁盘的I/O性能受到接口、带宽等计算机技术的限制、这也成为了性能提高的瓶颈,通过数据条带化技术,将数据的I/O分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合I/O性能。 可靠性 从理论上讲,多个磁盘组成的RAID系统在可靠性方面比单个的磁盘要差. 因为假定单个磁盘故障会导致整个RAID不可用。 实际上对于后面的优化,RAID采用镜像和数据校验等冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证数据有副本(用U启给电脑操作系统做备份的时候,不就是这样么?)比起镜像的50%的冗余开销,数据校验要小很多,他利用校验冗余信息对数据进行校验和纠错。 RAID冗余技术大幅度提升数据可用性和可靠性,保证了若干磁盘出错时,不会导致数据的丢失,从而不会影响系统的运行。 可管理性 RAID是一种虚拟技术,它是将多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。 对于外部主机系统来说,RAID是一个单一的,快速可靠的大容量磁盘驱动器。这样用户可以在这个虚拟驱动器上来组织和存储应用系统数据。从用户应用角度看,可使存储系统简单易用,管理也很方便。 由于RAID内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。RAID可以动态的增删磁盘驱动器,可以自动的进行数据校验和数据重建,这些都可以大大的简化管理工作。 对RAID的关键技术分析 RAID主要有三个关键技术:镜像、数据条带、数据校验。 镜像 镜像是可以将数据复制到多个磁盘中,一方面可以提高可靠性,另一方面可以并发的从两个或多个副本读取数据来提高可读性。 显而易见,硬件的读写性能要稍微的低一些,确保数据正确的写道多个磁盘中,需要消耗更过的时间。镜像是一种冗余技术,为磁盘提供了保护功能,防止磁盘数据发生故障而造成数据的丢失。 对于RAID而言,采用镜像技术会同时在阵列之中产生两个完全相同的数据副本,并分布在两个不同的磁盘驱动器上,镜像提供了完全的数据冗余能力,当一个数据副本失效不可用的时候,外部系统依旧可以正常访问另一个副本,从而不会对系统运行和性能产生影响。 而且,镜像不需要额外的计算和校验,故修复非常快,直接复制就可以。镜像技术可以从多个副本进行并发读取数据,提供更高的读I/O性能,但是不能并行写数据,写多个副本会导致IO的性能降低。 镜像技术提供了非常高的数据安全性,其代价也是非常昂贵的,需要至少双倍的存储空间。高成本限制了镜像技术的广泛应用。主要应用于至关重要的数据保护,这种情况下数据丢失会造成巨大的损失。另外,镜像通过拆分能获得特定时间点上的数据快照。 数据条带 数据带条就是将数据分片保持在多个不同的磁盘,多个数据分片共同组成一个完整的数据副本,这与镜像的多个副本是不同的。 它通常用于性能考虑,数据条带具有更高的并发粒度。 当访问数据时,可以同时对位于不同磁盘上数据进行读写操作,从而获得非常可观的I/O性能提升。 磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的CPU匹配。 再者,单个磁盘驱动器性能存在物理极限,I/O性能非常有限。 RAID由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。 这样写入和读取数据就可以在多个磁盘上同时并行,并发产生非常高的聚合I/O,有效提高了整体的I/O性能,而且具有良好的线性扩展性。 这对大量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列中,需要时,还需要按顺序进行读取。而通过条带技术,可以获得数倍与顺序访问的性能提升。 数据条带技术的分块大小非常关键。条带颗粒可以是一个字节到几KB大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加快存储的随机性和快寻址时间。 实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存储随机性和并发处理能力之间进行平衡,以争取尽可能的整体性能。 数据条带是基于提高I/O性能而提出的,也就是他只关注性能,而对数据可靠性,可用性没有任何的改善,实际上,其中任何一个数据条带损坏都会导致整个数据无法使用,采用数据条带技术反而增加了数据发生丢失的情况。 数据校验 镜像具有更高的安全性、高读写性能,但是冗余开销太昂贵。 数据带条通过高并发性大幅度提升性能,但是对数据的安全性、可靠性没有做考虑。 为此,数据校验是一种冗余技术,他用校验数据来提供数据的安全,可以检测数据错误,并且能够在一定的能力范围内进行数据的重构。 相对镜像,数据校验技术减少了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。 相对数据条带,数据校验提高了数据的安全性 RAID的不同等级往往结合数据条带和数据校验技术进行结合使用。 采用数据校验时,RAID要写入数据同时进行校验计算,并将得到的校验数据存储在RAID成员磁盘中,校验数据可以集中保持在某个磁盘或分散存储在多个不同的磁盘中,甚至校验数据也可以分块。 不同的RAID等级实现各不相同,当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。 校验技术相对于镜像技术的优势在于节省大量的开销,但由于每次数据读写都需要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件RAID控制器,在数据重建恢复方面,检验技术比镜像技术复杂的多且慢的多。 补充:数据校验算法 关于数据校验算法常用的有:海明校验码和异或校验码 海明校验码:不仅能检测错误,还能给出错误位置并自动纠正。其主要思想是:将有效的信息按照某种规律分成若干组,对每一组作为奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点,并进行纠正,实质是一种多重奇偶校验。 异或校验码:是通过异或逻辑运算产生,将一个有效的信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算还能还原正确的有效信息。 RAID的组合等级 通过以上内容,我们知道了RAID等级各有优势和不足。自然地,我们想到把多个RAID等级进行作何起来,实现优劣互补,从而达到性能、数据安全指标达到更高。 目前在业界和学术研究中提到的组合等级有:RAID00、RAID01、RAID10、RAID100、RAID30、RAID50、RAID53、RAID60,但实际得到的较为广泛的应用只有RAID01和RAID10两个等级,当然,组合等级的实现成本一般都非常昂贵,只是少数特定场合应用。 RAID00 RAID00是由多个RAID0组成的高级RAID0,其余RAID0的区别在于,在RAID0条带化结构的基础上,再进行条带化处理。这种阵列可以提供更大的存储容量,更高的I/O性能和更好的I/O负载均衡。 RAID01 和 RAID10 RAID01兼容了RAID0和RAID1的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化,其是将数据同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。RAID10,相比于RAID01其是先做镜像,再做条带化技术,是对虚拟磁盘实现镜像,在相同的配置下,RAID01比RAID10具有更好的容错能力。 RAID100 RAID100,也可看成是RAID1 + 0 + 0, 可以看成RAID10 + 0, 也就是带有条带化技术的RAID10。RAID10的缺陷是,任意一个RAID1损坏一次磁盘不会发生数据的丢失,但是剩下的彩票存在单点故障的危险。故RAID突破了单个RAID控制器对物理磁盘数量的限制,可以获得更高的I/O负载均衡,I/O压力分散到更多的磁盘上,进一步提高了随机读性能,并有效的降低单点故障风险。因此,RAID100通常是大数据库的最佳选择。 RAID30(RAID53)、RAID50和RAID60 RAID的实现方式 对于RAID系统来说,其实现方式可分为三种:软件方式实现、硬件方式实现以及硬软混合方式实现。 软件方式实现(软RAID) 软RAID没有专用的控制芯片和I/O芯片,完全由操作系统和CPU来实现所有的RAID功能。现代操作系统基本上都提供了软RAID支持,通过在磁盘设备驱动程序上添加一个软件层,提供一个物理驱动器与逻辑驱动器之间的抽象层。 软RAID的配置管理和数据恢复都比较简单,但是RAID的所有任务的处理完全是由CPU来完成的,比如计算校验值,所以执行效率低下,这种方式需要消耗大量的运算资源,支持RAID模式较少,很难广泛应用。 软RAID是由操作系统实现的,因此系统所在的分区不能作为RAID的逻辑成员磁盘,软RIAD不能保护系统磁盘的。对于部分操作系统而言,RAID的配置信息保持在系统信息中,而不是单独的以文件袋额形成存储在磁盘上。当系统意外崩溃而需要重新安装的时候,RAID信息就会丢失,另外磁盘的容错技术并不等于完全支持在线更换、热插拔或者热交换,能够支持错误磁盘的热交换与操作系统实现相关,有的操作系统热交换。 硬件方式实现(硬RAID) 硬RAID拥有自己的RAID控制处理与I/O处理芯片,甚至还有阵列缓冲,对CPU的占用率和整体性能是三类实现中最优的,但是实现成本也是最高的。硬RAID通常支持热交换技术,在系统的运行下更换故障磁盘。 硬RAID包含RAID卡和主板上集成的RAID芯片、服务平台多采用RAID卡,RAID卡由RAID核心处理芯片、端口、缓存以及电池4部分实现。 软硬混合方式实现(硬RAID) 从上诉不难发现,软RAID性能低,不能保护系统分区,而硬RAID成本高,不同的RAID相互独立、不具互操作。因此,人们采用软件与硬件结合的方式来实现RAID,从而获得在性能和成本上的一个折中,即较高的性价比。 折中RAID虽然采用了处理控制芯片,但是为了节省成本,芯片往往处理能力较弱而大部分任务还是通过固件驱动,也就是软件由CPU完成的。 主流RAID等级技术对比 参考连接 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 5:54:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |