gtxyzz

常用RAID类型优劣比较

gtxyzz linux 2023-01-25 474浏览 0

一、常用RAID类型优劣比较
RAID0
要实现RAID0,必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好,则可以并发地进行读写。RAID0不需要计算校验码,实现容易;其缺点是它没有数据容错能力,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确,也导致整个系统崩溃。不应该将它用于对数据安全性与稳定性要求高的场合。如果用户进行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上, 这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。
RAID1
对于使用这种RAID1结构的设备来说,RAID控制器必须能够同时对两个盘进行读操作和对两个互为镜象的盘进行写操作。通过下面的结构图您也可以看到至少要有两个磁盘驱动器。镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力,比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的数据安全性与可靠性时,如提供数据处理服务的系统,那么使用RAID1比较合适,且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,这种硬盘模式的安全性是非常高,但造成的后果是硬盘容量利用率很低,只有50%,是所有RAID级别中最低的。
通常,我们把出现硬盘故障的RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。更换新盘之后,原有好盘中的数据必须被复制到新盘中,这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响,但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。
另外,RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也可能相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。
RAID10
单独使用RAID 1存在数据写,无法被有效负载均衡到各个RAID1磁盘组;单独使用RAID 0,则无法保证数据的安全性与系统的可靠性。为了保证数据的安全性与系统的可靠性,同时又实现数据复杂均衡到各个磁盘组上,为此我们可以先在磁盘组上创建镜像磁盘组,然后再在多个镜像磁盘组上建立带区集,这种磁盘组模式被称为RAID 0+1,也简称为RAID10。
RAID5
RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘 上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据,但是当奇偶校验盘与数据存储盘同时损坏的坏则会造成数据丢失与系统不可用。
RAID 6 是加强版的RAID5,与RAID 5相比,增加了第二个独立的奇偶校验信息块。 两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高。即使两块磁盘同时失效,也不会影响数据的使用,但需要分配给奇偶校验信息更大的磁盘空间,且相对于RAID 5有更大的“写损失”。由于RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用。
RAID写损失的原因,数据与奇偶信息存储在同磁盘上,即RAID5每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
二、RAID类型推荐
我们生产环境下使用最多的RAID模式,就是四种磁盘组模式:RAID0、RAID1、RAID10和RAID5,四种RAID模式都各自有其自身的优势与劣势地方,为此需要我们根据企业对系统的稳定性、数据的安全性、业务量与读写性能要求,以及金钱投入四个方面去抉择。再次汇总下各种模式的优劣地方:
RAID0:可以实现数据的并发读写,以及负载均衡性,磁盘利用率高;劣势则是无法保证数据的安全性与系统的稳定性,只要有一块盘损坏,则整个系统崩溃。
RAID1:可以实现数据的安全性与系统的可靠性,一个镜像组内,损坏一块硬盘,系统可以正常进行,还可以在线带电进行硬盘的更换操作;劣势则是磁盘利用率为50%,无法实现数据的复杂均衡,磁盘的写I/O能力也将低为50%。
RAID10:接受了RAID0的优势部分,实现数据的负载均衡,避免了其劣势部分;同时接受了RAID1的优势部分,保证数据的安全性与系统的可靠性,硬盘更换的在线带电操作,但是其劣势部分则无法避免,空间和I/O能力损失,及高成本是此模式的最大缺点。此模式非常适合大量数据需要存取,同时又对数据安全性和系统稳定性要求严格的领域。
RAID5:是前三种模式的综合,比较适合适合于小数据块,随机读写的数据,磁盘空间利用率大,且能接受其性能相对较差等缺点的应用。

        对于生产环境的Web应用服务器,一般是集群模式,可能单台应用服务器只配置了默认的一块本地硬盘,为此就没有必要考虑RAID。数据搜索存储服务器,大部分时间的服务主要是读,而更新删除几乎没有,写也多为追加方式,但是数据存储空间需求量比较大,同时一份数据都会多台服务器上各自保存一份,则可能会考虑采用RAID5或RAID0模式。数据安全性、系统稳定性、负载均衡和性能要求高的生产环境,多半为数据库服务器,则采用RIAD10模式非常适合。
最后,再谈下数据库服务器采用什么模式比较合适:
        数据库服务器的操作系统,其数据安全性与系统地稳定性要求高,且盘损坏情况下,数据恢复不影响或称几乎不会影响到数据服务的提供,为此要求单独安装在一个RAID1镜像磁盘组。
        数据库的数据可以根据应用的业务量和特点、空间要求、性能要求、磁盘I/O能力等决定,使用RAID10还是RAID5。若使用传统的磁盘,且业务量又是写压力大,则建议首选RAID10;若使用固态硬盘(英文缩写:SSD),由于其价格比较昂贵,且I/O能力有质的提高,但是磁盘空间要求又比较大,则可以考虑使用RAID5。
        不支持把归档日志或事务日志,单独存放到RAID0磁盘组的做法,因为数据库的归档日志或事务日志任何一个存放的磁盘组损坏,都会导致整个数据库系统不可用。若是想通过两种日志与数据存放到步同磁盘,而达到实现数据压力分散而提高读写性能的方式可以考虑,但是推荐利用RAID卡的控制器去实现负载均衡的方式达到提高读写性能。

继续浏览有关 LINUX技术 的文章
发表评论