Chinaunix首页 | 论坛 | 博客
  • 博客访问: 259149
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1162
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-22 12:50
文章分类

全部博文(36)

文章存档

2016年(2)

2015年(2)

2014年(32)

分类: LINUX

2014-04-27 10:12:37

   RAID为(Redundant Array of Inexpensive Disks),RAID技术将一个个单独的磁盘以不同的组合方式形成
一个逻辑硬盘,从而提高了磁盘读取的性能和数据的安全性。不同的组合方式用RAID级别来标识。
RAID技术经过不断的发展,现在已拥有了从  到 5等6种明确的RAID 级别。
另外,其他还有6、7、10(与的组合)、01(与的组合)、30(与RAID 0的组合)、
50(RAID 0与的组合)等。
不同RAID 级别代表着不同的存储性能、性和,下面将介绍如下RAID级别:0、1、2、3、4、5、6、01、10。

RAID0
RAID0也称为条带化(stripe),将数据分成一定的大小顺序的写道阵列的磁盘里,RAID0可以并行的执行读写操作,
可以充分利用总线的带宽,理论上讲,一个由N个磁盘组成的RAID0系统,它的读写性能将是单个磁盘读取性能的N倍。
且磁盘空间的存储效率最大(100%)RAID0有一个明显的缺点:不提供保护,一旦数据损坏,将无法恢复。
  成为镜像(mirror),它将数据完全一致的分别写到工作磁盘和镜像磁盘,因此它的磁盘空间利用率为50%,
在数据写入时时间会有影响,但是读的时候没有任何影响,RAID0提供了最佳的,一旦工作磁生故障,
系统自动从镜像磁盘读取数据,不会影响用户工作。

RAID5
RAID5与RAID3的机制相似,但是的信息被均匀的分散到的阵列的各个磁盘上,这样就不存在并发写操作时的校验盘性能瓶颈。
阵列的磁盘上既有数据,也有信息,和对应的校验信息会存储于不同的磁盘上,当一个数据盘损坏时,
系统可以根据同一带区的其他和对应的校验信息来重构损坏的数据。  提供两级,即阵列中的两个驱动器失败时,
阵列仍然能够继续工作。

一般而言,的实现代价最高,因为不仅要支持数据的恢复,又要支持校验的恢复,
这使RAID 6控制器比其他级R A I D更复杂和更昂贵。
1. RAID 6的校验数据
当对每个执行写操作时, RAID 6做两个独立的校验计算,因此,它能够支持两个磁盘的失败。为了实现这个思想,目前基本上有两个已经接受的方法:
? 使用多种算法,如X O R和某种其他的函数。
? 在不同的数据分条或者磁盘上,使用排列的数据。
2. RAID 6的一维 RAID 6的第一种方法是用两种不同的方法计算校验数据。实现这个思想最容易的方法  是和RAID0的结合,也称为RAID(0+1),先做镜像然后做条带化,既提高了系统的读写性能,有提供了保护,的磁盘空间利用率和RAID1是一样的,为50%。RAID10适用于既有大量的数据需要存储,有对性有严格要求的领域,比如金融,证券等。
RAID01
RAID01也是RAID0和RAID1的结合,但它是对条带化后的数据进行镜像。但与RAID10 不同,一个磁盘的丢失等同于整个镜像条带的丢失,所以一旦镜像盘失败,则成为一个RAID-0 系统(即只有条带化)。RAID01的实际应用非常少。
不同RAID级别对比
在各个raid级别中,使用最广泛的是,raid1,,
上面所介绍的是百度百科的解释,下面来谈谈我对磁盘阵列的理解,可是好处多多的:
(1)提高了存储容量;
(2)其次,多台磁盘驱动器可并行工作,提高了数据传输率;
(3)RAID技术确实提供了比通常的磁盘存储更高的性能指标、数据完整性和数据可用性;
(4)尤其是在当今面临的I/O总是滞后于CPU性能的瓶颈问题越来越突出的情况下,RAID解决方案能够有效地弥补这个缺口。

RAID 1的实现

说的理论再多没有实践也是不行的,今天我们要制作一个软件级别的RAID1类型的磁盘阵列。

(1)因为要体现磁盘之间工作的并发性,我们首先要制作出几个磁盘,注意最关键的是这几个磁盘的大小一定要一样,因为他们的业务逻辑是相同的,只有在大小相同的情况下才能让业务逻辑进行完整的迁移。

制作准备用于构建RAID的设备


我们先制作一个设备(200M大小),然后把该设备的系统ID更改为fd(代表着这个是磁盘阵列).

然后我们以相同的方法再制作两个磁盘阵列设备


退出保存后,使用partx命令进行一系列的操作

正式构建磁盘阵列

下面的这个命令十分的复杂,但是只要大家记住一下几个参数的意义,要正确的写出构建命令也不是特别困难的事情:

-C     创建磁盘阵列
-l       代表RAID级别是RAID1
-n      有n个设备正在执行业务逻辑
-x      有x个设备作为替补设备更换坏掉的设备
-a      是否自动创建(我们选择的是yes)

了解了上面几个命令后,接下来我们来看看至今最长的一个命令^_^:



然后我们监控磁盘阵列设备:


我们可以看到已经生成了设备md0,要是想要查看磁盘阵列设备md0的详细信息:


我们可以看到设备5、6是正在执行的,而设备7是空闲的,我们现在让设备6挂掉看看会发生什么事情:


显然/dev/vda6已经挂掉了,我们把它从md0设备中删除出去,如果还想再使用/dev/vda6的话,得把它重新添加进来,这是必须的:

不想使用的时候,我们把已经构建的md0关闭掉:

当我们再想使用的时候,可以把它重新打开:

和其他的普通设备一样,/dev/md0设备也是可以格式化后挂载到其他目录上的:


关闭后删除整个设备就不会影响下次/dev/vda{5,6,7}的使用了:


总结:
     软件的磁盘阵列的基本原理就是这样了,但是在一些比较大型的公司中,更愿意使用硬件级别的磁盘阵列,这样的架构会更加的稳定和快速,因为和业务的成本相比,硬件和软件的成本是值得使用者去投资的。
     关于软件磁盘阵列的使用应该还有更深层次的讨论,以后继续。






阅读(1876) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~