热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RAID技术穷途末路了吗?

自从1988年伯克利大学发明RAID(磁盘阵列)技术以来,RAID一直是存储领域的核心,肩负着保护数据的重任。但是随着磁盘容量的不断增大,

自从1988年伯克利大学发明RAID(磁盘阵列)技术以来,RAID一直是存储领域的核心,肩负着保护数据的重任。但是随着磁盘容量的不断增大,RAID技术遇到了前所未有的新问题。最大的问题在于在数据重构时间过长,延长了系统degraded时间,增加了多个磁盘故障的概率,降低了数据可靠性。并且在RAID数据重构过程中,RAID自身的Rebuild IO对应用IO造成了影响,直接导致应用IOperformance大为降低。更为严重的是,应用IORebuild IO构成了互为影响的关系,大量的应用IO也会导致Rebuild时间进一步延长。

 

目前,在存储系统中,4TB盘即将大面积应用。4TB盘的应用必须要考虑RAID自身存在的问题。在此,我做了一个小小的实验,对一个存储厂商的RAID Rebuild时间进行了评估,在没有应用IO的前提下,对于500GB的盘,需要将近2个小时的Rebuild时间,而对于4TB的盘,Rebuild时间增加到了14小时以上。

 

215300953.jpg

磁盘容量和重构时间之间的关系

 

目前我们常用的RAID算法是RAID-6,即可以最多容忍2块磁盘失效,如果超过两块磁盘失效,那么将会导致整个RAID系统Crash。所以,在14小时之内,如果又存在两块磁盘发生读写错误,那么整个RAID系统将会失效,这是未来RAID需要解决的最大问题。

面对上述问题,业内提出了一些解决方案,基本思路有如下几种:

1,延续RAID5RAID6的技术思路。Rebuild时间可以尽最大努力进行优化,例如采用Copy的方式替代传统Rebuild方法(中科院计算所专利)。另外,如果可以让RAID容忍更多磁盘失效,例如,容忍3快磁盘失效,那么再长的重构时间也不是什么太大的问题。因此,业内很多人开始研究开发可以容忍三块磁盘失效的算法,典型算法是Reed-solumen算法。我们把这种思路的RAID称之为RAID-7RAID-7最大的问题在于需要更强的计算资源,RAID-7计算复杂度比RAID-6高了很多,因此,RAID-7的研发需要硬件厂商一起参与研究、开发。

 

2,De-clustered RAID思想。Declustered RAID的一个思想前提在于:在绝大多数情况下,故障磁盘模型是Partial Failure(局部损坏)而不是整体损坏。为此,Declustered RAID将一个磁盘划分成多个区域,并且基于这些区域构建RAID。如果读写错误发生在一个区域中,那么RAID只需要重构该区域,而不需要重构整个磁盘。这种思想可以降低Rebuild时间,并且可以将Spare空间分散到多个区域的不同磁盘上,可以避免Rebuild过程中Spare盘成为IO瓶颈点。Declustered RAID对大容量磁盘故障模型进行了研究,对现有RAID进行了优化,但是,个人认为灵活度不够,不能有效地分离应用IORebuild IO

 

3,在底层虚拟化(Low Level Virtualization)的基础上构建RAID。由于磁盘容量不断增大,那么我们有必要在RAID的下层增加一个管理物理磁盘的虚拟化层,通过该虚拟化层来管理物理磁盘,并且为RAID提供虚拟磁盘。当遇到读写错误的时候,虚拟化层可以Remap RAID的请求,从而使得很多错误信息对RAID透明,减少RAID数据重构次数。由于有了这个虚拟化层,可以很容易的实现Data Awareness的数据重构方式,进一步降低RAID重构时间。由于虚拟化层可以对底层物理资源进行管理,因此,可以对磁盘健康状态进行监测,从而对存储资源进行合理分配,达到数据可靠存储的目的。最为重要的是,虚拟化层可以对应用IORebuild IO进行分离,在很多情况下,Rebuild IO不会对应用IO造成性能影响。当然,底层虚拟化也会存在一些问题,最为关键的是存储资源如何分配?尽最大可能不浪费存储空间。目前,我正在对该领域进行研究探索。

 

4,在很多集群文件系统中,基本已经放弃了传统RAID技术,并且将数据冗余保护的功能放在了文件系统层面。例如Hadoop文件系统直接在文件系统层面将数据冗余存储三份。

 

RAID技术一直是数据存储的关键,面对磁盘容量不断增加的今天,我们有必要思考RAID技术的未来,今天4TB磁盘即将大面积应用,明天10TB硬盘还会远吗?

 



推荐阅读
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
author-avatar
把默认珀尔_430_394
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有