存储可靠性技术之 --RAID
云计算项目交付时,不可避免的需要考虑存储磁盘采用何种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的更多相关文章
- linux杂谈(十七):iscsi存储分离技术
1.iscsi简单介绍 iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道.透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机能够透过快速的局域网集线来 ...
- 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)
PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存 ...
- 大数据存储的进化史 --从 RAID 到 Hdfs
我们都知道现在大数据存储用的基本都是 Hdfs ,但在 Hadoop 诞生之前,我们都是如何存储大量数据的呢?这次我们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdfs. 我们先来 ...
- 超级内存NVDIMM:下一代数据中心存储关键技术
1.背景介绍 连接到互联网的设备数量不断增长,到2015年,将达到150亿之多.而数据中心的压力也随之增加,唯有采用新的技术才能进一步提升其效率和性能. 相比于HDD传统硬盘,固态硬盘大大增加了I/O ...
- 阿里云PolarDB及其共享存储PolarFS技术实现分析(下)
上篇介绍了PolarDB数据库及其后端共享存储PolarFS系统的基本架构和组成模块,是最基础的部分.本篇重点分析PolarFS的数据IO流程,元数据更新流程,以及PolarDB数据库节点如何适配Po ...
- 万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid
五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又 ...
- 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系
转自:http://www.infoq.com/cn/articles/trillion-log-and-data-storage-query-techniques?utm_source=infoq& ...
- RAID技术
RAID:其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵.容量巨大的硬盘.所以称为廉价磁盘冗余数组 RAID级别: RAID 0亦称为带区集.它是将多个 ...
- 高速掌握sinox2014激动人心的ZFS和RAID技术
Sinox2014引入激动人心的zfs系统以及其支持的RAID,让用户高速打造便宜的高可靠性文件server. ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统( ...
随机推荐
- ios framework 开发 之 实战 一,合并失败了
保证public 文件目录独立 在 XCode 7 中,这一条已经自动实现了 Build Settings>Public Headers Folder Path "$(PROJECT_ ...
- PHP分页类,支持自定义样式,中间5页
<?php //namespace Component; /** * 2016-3-27 * @author ankang */ class Page { private $ShowPage; ...
- 2. 托管对象数据模型的基本知识(Core Data 应用程序实践指南)
第一章的例子配置好了持久化存储区.持久化存储协调器.托管对象上下文.但是还没有对象图,本章要介绍托管对象模型的基础知识,并配置范例程序的对象图. 2.1. 托管对象模型是什么 托管对象模型是一种数据结 ...
- ES6 - 变量的解构赋值学习笔记
变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...
- thinkphp CURD 1
二.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User'); select $m-> ...
- ThinkPHP 3 MVC模式和URL访问
一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 V -View 编写html文件,页面呈现 C -Controlle ...
- iOS 之 alcatraz (插件管理器)
1. 安装 1.1. 打开命令行 curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/ins ...
- 【转载】doxygen+graphviz生成代码文档
一.工具 doxygen:http://www.stack.nl/~dimitri/doxygen/download.html graphviz:http://www.graphviz.org/ 二. ...
- 字符串的长度超过了为 maxJsonLength 属性设置的值
当出现类似标题的错误时,可以按照如下方法解决: 1. 检查是否传递的JSON字符串长度过长 2.增加JSON串的长度设置,设置如下: <system.web.extensions> ...
- 如何让Docker容器随宿主机的启动而自动启动
使用Docker容器部署服务时,不仅需要让服务随Docker容器的启动而启动,还需要让Docker容器随宿主机的启动而自动启动,为此Docker提供了Docker run的restart参数 #doc ...