云计算项目交付时,不可避免的需要考虑存储磁盘采用何种RAID。例如:我们的项目工程师可能会建议大家连接克隆虚拟机系统盘组RAID 10,完整复制虚拟机数据盘

  使用RAID5或者RAID6等,那么RAID到底是什么?我们为什么要采用RAID?如何选取合适的RAID 形式呢?

  1)RAID 概念

  RAID是Redundant Array of Independent Disk 的缩写,独立磁盘冗余阵列。它是一种数据保护技术,它通过把多块独立的硬盘(物理硬盘)按不同方式组合起来

  形成一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和提供数据冗余。

  2)RAID的优点

  ·提高传输速率

  RAID 通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量。在RAID 中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘

  驱动器,所以使用RAID 可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。

  ·提供容错功能

  普通磁盘驱动器无法提供容错功能,RAID 可提供容错功能,RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。在很多RAID模式中都有

  较为完备的相互校验/恢复的措施,甚至是直接相互的镜像备份,从而明显提高了RAID系统的容错度,提高了系统的稳定冗余性。

  二、RAID 分类

  目前业界公认的标准是 RAID0~RAID5。另外,其他还有6,7,10等。

  本文中只给出几种常用的RAID 级别的简要介绍:

  ·RAID0

  它将数据分成一定的大小,顺序地写到阵列的磁盘里。如下图所示:

  

  理论上讲,一个由N个磁盘组成的RAID0系统,它的读写性能将是单个磁盘读取性能的N倍,且磁盘空间的存储效率最大(100%)。由于总线带宽等多种因素的影响,

  实际的提升速率会低于理论值。但是,大量数据并行传输与串行传输比较,性能必然大幅提高。RAID0有一个明显的缺点:不提供数据冗余保护,一旦数据损坏,

  将无法恢复。RAID0至少需要2块硬盘才能实现。

  ·RAID1

  也称为镜像(mirror),它将数据完全一致的分别写到工作磁盘和镜像磁盘。

  

  RAID1系统的磁盘空间利用率为50%,对数据写入时间会产生影响,但是读的时候没有任何影响。RAID1提供了非常好的数据保护,一旦工作磁盘发生故障,系统自动从

  镜像磁盘读取数据,不会影响用户工作。而且RAID1支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。RAID1至少需要2块硬盘才能实现。---偶数块。

  ·RAID5

  采用分布式奇偶校验的独立磁盘结构。数据校验的信息被均匀的分散到阵列的各个磁盘上,阵列的磁盘上既有数据,也有数据校验信息,数据块和对应的校验信息会存储于不同的磁盘上。

  

  校验位即P位是通过同一带区的数据做异或求得的。当一个数据盘损坏时,RAID5系统可以根据同一带区的其他数据块和对应的校验信息来重构损坏的数据。RAID5至少需要3块硬盘才能实现。

  ·RAID6

  采用两种奇偶校验的磁盘结构。RAID6在RAID5的基础上,进一步加强了数据保护,实际上是一种扩展RAID5等级。

  RAID6的数据冗余性能相当好。但是由于增加了一个校验,所以写入的效率较RAID5还差。而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间。

  RAID6至少需要4块硬盘才能实现。

  ·RAID10

  是一个RAID0与RAID1的组合体。RAID10的结构非常简单,首先创建2个独立的RAID1,然后将这两个独立的RAID0组成一个RAID0,当往这个逻辑RAID中写入数据时,数据被有序的写入两个RAID1中。

  

  RAID10 以 RAID0 为执行阵列,以RAID1为数据保护阵列。具有与RAID1一样的容错能力,用于容错处理的系统开销与单独的镜像操作基本一样,由于使用RAID0作为执行等级,因此具有较高的I/O宽带。

  RAID10至少需要4块硬盘才能实现。

  使用场景

  ·RAID0使用场景

  RAID0不提供容错能力,但是它的读取性能很高。故RAID0应用对于读取性能要求较高但所存储的数据为非重要数据的场合。

  ·RAID1使用场景

  RAID1提供了非常好的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,且支持“热替换”,故RAID1应用于对数据保护极为重视的场合。

  ·RAID5及RAID6的使用场景

  RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID5可以为系统提供数据安全保障,但保障程度要比RAID1 低而磁盘空间利用率要比RAID1高。

  RAID6两个独立的奇偶系统使用不同的算法,数据的可靠性比RAID5 高,即使两块磁盘同时失效也不会影响数据的使用。

  故对于数据的保存所需级别要求并不是很高的情况下,我们只需要使用常规的RAID5即可。就现在而言,对于那些数据中心,信息中心等对数据安全级别要求比较高的企业,

  使用RAID6保护数据还是有必要的。

  ·RAID10使用场景

  RAID10适用于数据库存储服务器等需要高性能、高容错但对容量要求不大的场合。

  实际项目中,需要综合考虑客户对数据存储的安全要求,价格要求等各项因素选择合理的RAID形式。

存储可靠性技术之 --RAID的更多相关文章

  1. linux杂谈(十七):iscsi存储分离技术

    1.iscsi简单介绍 ​ ​iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道.透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机能够透过快速的局域网集线来 ...

  2. 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)

    PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存 ...

  3. 大数据存储的进化史 --从 RAID 到 Hdfs

    我们都知道现在大数据存储用的基本都是 Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdfs. 我们先来 ...

  4. 超级内存NVDIMM:下一代数据中心存储关键技术

    1.背景介绍 连接到互联网的设备数量不断增长,到2015年,将达到150亿之多.而数据中心的压力也随之增加,唯有采用新的技术才能进一步提升其效率和性能. 相比于HDD传统硬盘,固态硬盘大大增加了I/O ...

  5. 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)

    上篇介绍了PolarDB数据库及其后端共享存储PolarFS系统的基本架构和组成模块,是最基础的部分.本篇重点分析PolarFS的数据IO流程,元数据更新流程,以及PolarDB数据库节点如何适配Po ...

  6. 万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid

    五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又 ...

  7. 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系

    转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq& ...

  8. RAID技术

    RAID:其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵.容量巨大的硬盘.所以称为廉价磁盘冗余数组 RAID级别: RAID 0亦称为带区集.它是将多个 ...

  9. 高速掌握sinox2014激动人心的ZFS和RAID技术

    Sinox2014引入激动人心的zfs系统以及其支持的RAID,让用户高速打造便宜的高可靠性文件server. ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统( ...

随机推荐

  1. windows 7 忘記密碼,用“带命令行的安全模式”

    net user administrator /active:yes net user tester /add net localgroup administrators tester /add

  2. NodeMCU之旅(四):实现Web配置页面

    引言 利用Web页面做配置可以轻松适应用户的多种设备,如Android, IOS等.本文将介绍如何在NodeMCU中实现配置页面. 接线图请参考NodeMCU之旅(三):响应配置按钮. 配置页面后端 ...

  3. Core Data 应用程序实践指南(Core Data 应用程序实践指南)

    译者序 前言 勘误 1. 初次尝试Core Data应用程序 本书的基础,基本概念,能做什么,不能做什么.实现CoreDataHelper类,演示如何将Core Data同既有的应用程序相集成. 2. ...

  4. JS如何获取页面可见区域高度

    window.document.body.clientHeight就可以 window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeig ...

  5. Zepto.js-Ajax 请求

    Ajax 请求 执行Ajax请求.它可以是本地资源,或者通过支持HTTP access control的浏览器 或者通过 JSONP来实现跨域. 引入Ajax模块 <script src=&qu ...

  6. Java-io流入门到精通详细总结

    IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不 ...

  7. HDU-1862-EXCEL排序

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1862 这个题考的就是你对sort函数的掌握:会用sort函数对字符串,数字排序,只要懂得话题目很简单 ...

  8. 我用Cocos2d-x模拟《Love Live!学院偶像祭》的Live场景(四)

    [前言和思路整理] 千呼万唤Shǐ出来!最近莫名被基友忽悠着进舰坑了,加上要肝LL活动,又碰上公司项目紧张经常加班,这一章发得比以往时候来得更晚一些,抱歉啊. 上一章我们实现了BeatObjectMa ...

  9. MongoDB安装环境搭建

    Mongodb的默认端口号27017 _id是全局唯一值,不要去给这个列赋值,默认是唯一的,如果赋值,列入有两列的_id:2,则会报冲突不能插入 [root@HE4 ~]# tar xvf mongo ...

  10. 如何使用Ninja快速编译LLVM和Clang

    在使用Make工具编译LLVM是非常耗时的.往往需要三四个小时.但是使用goolge开源的ninja编译LLVM只需要10到20分钟. 本文以llvm3.3为例,演示在linux上编译和安装过程. 第 ...