您的位置:首页 > 大数据 > 人工智能

RAID简介及RAID0的创建

2013-03-13 17:53 399 查看
RAIDRedundant Array of Independent Disks,简称为RAID,即独立磁盘冗余阵列,旧称廉价磁盘冗余阵列(RAID, Redundant Array of Inexpensive Disks),简称为磁盘阵列。其基本思想就是把多个相对便宜的磁盘组合起来,成为一个磁盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的磁盘。由于级别或者说是版本的不同,RAID比单个磁盘具有以下一个或多个方面的好处:增强数据集成度、增强容错功能、增加处理量或容量。而对于计算机来说,它看到的仅仅是一个单独的磁盘。
简单来说就是,RAID把多个磁盘组合为一个逻辑扇区,操作系统把该阵列当成一个磁盘来处理。RAID常被用在服务器计算机上,并且常使用完全相同的磁盘作为组合。按级别或版本的不同,可将RAID分为以下几种:RAID-0、RAID-1、RAID-2、RAID-3、RAID-4、RAID-5、RAID-01、RAID-10、RAID-50。级别仅代表磁盘组织方式不同,没有上下之分;在组织RAID时,即要考虑速度问题,又要考虑可用性问题。

基本RAID分类
JBOD




严格意义上来说,Jbod并不算是RAID的等级。Jbod只是将多个磁盘空间合并为一个大的逻辑磁盘,没有任何容错功能,其读写性能没有任何提升。其组织方式,如上图所示。对操作系统来说,看到的仅仅是一个由许多小磁盘组合而成的大的逻辑的磁盘。数据的存放机制是从第一个磁盘开始依序往后存放的。由于没有容错能力,所以任意单个磁盘的损坏,都会造成整个数据的损坏,无法恢复损坏数据。

RAID-0




RAID-0亦称为条带,它是将多个磁盘并列起来,组合成为一个大磁盘,不具有冗余功能,因此也就没有容错能力,并行I/O,速度最快。其组织方式如上如所示。在存放数据时,其将数据按磁盘个数进行分段,然后同时将这些数据写入这些磁盘,所以在所有级别中,RAID-0的速度是最快的,因此其读写能力显著提升。理论上,假如有n个磁盘,如果单个磁盘的利用率为S,则该阵列的空间利用率为nS。要想实现该阵列的组织方式,至少需要2块磁盘。

RAID-1




RAID-1就是镜像。即将所有磁盘平分为两组,两组互为镜像,其原理为在主磁盘上存放数据的同时也在镜像磁盘中写同样的数据,即一组的数据完全是另一组的拷贝。其组织方式如上如所示。在一些多线程操作系统中该组织方式能有很好的读取速度,但写入速度有所下降。在该磁盘组织方式下,除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高。当主磁盘损坏时,镜像磁盘代替主磁盘的工作维持运行。因为有镜像磁盘做数据备份,所以在所有的磁盘组织方式中,RAID-1的数据安全性是最好的。要想实现该阵列,至少需要2块磁盘。但无论有多少磁盘,在该阵列中,其空间利用率仅为1/2。

RAID-2




RAID-2是RAID-0的改良版,其组织方式如上如所示。以汉明码的方式将数据进行编码后分为独立的比特,并将数据分别写入磁盘中。因在数据中加入了错误修正码,所以数据整体的容量比原来数据大一些。RAID-2至少需要3块磁盘方能运行。

RAID-3




RAID-3采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分区后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。其组织方式如上图所示。

RAID-4




RAID-4与RAID-3相似,其组织方式如上图所示。不同的是RAID-4在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。

RAID-5




在所有的磁盘组织方式中,RAID-5是一种兼顾存储性能、数据安全和存储成本的存储解决方案。其组织方式如上如所示。RAID-5使用磁盘分区技术,它不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID-5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID-5的一个磁盘数据发生损坏后,可以利用剩下的数据和相对应的奇偶校验信息区恢复被损坏的数据。RAID-5可以为系统提供比镜像略低的数据安全保障,但空间利用率要比镜像高,同时成本也比镜像便宜许多。由于加入了奇偶校验信息,写入数据的速度相对慢,但可以使用回写高速缓存来改善性能。假如有n个磁盘,因需要一个磁盘存储校验信息,所以RAID-5的空间利用率为(n-1)/n。要实现该组织方式,至少需要3块磁盘。

RAID-01/RAID-10







RAID-01即为RAID-0+1,是先分区存数据然后再镜像到两组磁盘。它将磁盘分为两组,在一组内先将数据分段存储在该组各磁盘上,然后再将该组镜像到另一组中保存。其组织方式如上图左所示。该组织方式中,其读写能力有所提升,有一定的冗余能力。空间利用率依然为1/2,且至少需要4块磁盘才能运行。

RAID-10即为RAID-1+0,与RAID-01相反,其是先将磁盘两两分组,各组中一个做主磁盘一个做镜像磁盘,然后在将数据分段存储在各主磁盘中。其组织方式如上图右所示。该组织方式中,其读写能力有所提升,有一定的冗余能力。空间利用率依然为1/2,且至少需要4块磁盘才能运行。

性能上,RAID-01比RAID-10有着更快的读写速度。可靠性上,当RAID-10有一个硬盘受损,其余三个硬盘会继续运作。RAID-01只要有一个硬盘受损,同组RAID 0的另一个硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。因此,RAID-10比RAID-01常用。

RAID-50




RAID-50也被称为镜象阵列条带,与RAID-10相似,先将所有磁盘两两分组,各组内一个做主磁盘,一个做镜像磁盘,然后将数据分段并加入校验信息后存储在各主磁盘上,然后再将主磁盘的数据镜像保存到镜像磁盘中。其组织方式如上图所示。

以上简单介绍了几种不同级别的RAID,在实际应用中,RAID-2、RAID-3、RAID-4较少实际应用,因为RAID-5已经涵盖了所需的功能,因此RAID-2、RAID-3、RAID-4大多只在研究领域有实现,而实际应用上则以RAID-5为主。

下面简单介绍一个命令用于创建RAID。

mdadm:用户空间管理工具,用于将任何块设备做成RAID。该命令是一种模式化的命令,包括以下几个模式:创建模式、管理模式、监控模式、增长模式、装配模式。

创建模式: -C,即# mdadm -C即为创建模式,在该模式下,可以使用如下命令:

-l #:指定RAID级别

-n #:指定设备个数

-a {yes|no}:自动为其创建设备文件

-c:指定chunk大小,默认为64Kb

-x #:指定空闲盘个数为#

管理模式:此模式下可模拟一个磁盘损坏,加如下命令即为在管理模式:

--add:添加

--remove:移除

--fail:损坏

以上命令可简写为-a ,-r ,-f

监控模式: -F

增长模式: -G

装配模式: -A

我创建好了RAID阵列,也已经挂载并使用完毕,但如何停止或再次启用RAID呢?下面在介绍两个命令用于停止和启用RAID。

停止RAID:

# mdadm -S

启用RAID:

# mdadm -A

以上各命令不在一一举例说明,仅仅贴出一些代码,供各位自己动手试着创建RAID。各命令的执行结果不在给截图。见谅见谅!!!写此篇的目的仅仅是让各位对RAID有进一步的了解,并能简单创建一个RAID。下边直接给出几个代码,供各位自己动手尝试。

# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}         :创建RAID0,并指定设备个数为2
# mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8   :创建RAID1,并指定设备个数为2
# mdadm /dev/md1 --fail /dev/sda#                          :表示模拟RAID1阵列中该#盘损坏
# mdadm /dev/md1 -r /dev/sda#                              :表示移除RAID1阵列中有故障的磁盘
# mdadm /dev/md1 -a /dev/sda#                              :在RAID1阵列中表示添加磁盘
# mdadm -D /dev/md#                                        :可查看RAID阵列的详细信息
# mdadm -detail /dev/md#                                   :可查看RAID阵列的详细信息
# mdadm -S /dev/md1                                        :停止RAID1
# mdadm -A /dev/md1 /dev/sda7 /dev/sda9                    :启用RAID1


假如我刚创建了一个磁盘分区,如何让系统知道你刚创建了一个分区呢,下面再给出两个命令,供各位使用。

# cat /proc/partitions         :查看当前系统的磁盘分区信息
# partprobe  [/dev/sda]        :让系统重读磁盘分区


续前部分

上边简单介绍了下RAID,相信各位对RAID已经有了初步的了解,而且也贴出了一些代码,不知各位是否在自己的电脑上尝试过创建,下面,就教各位如何创建RAID。以创建RAID0为例。

首先,先用如下命令查看下自己电脑有几个磁盘分区,命令如下:

# fdisk -l   : 查看磁盘分区信息

命令执行结果如下图所示:




从上图可以看到系统里已有5个磁盘分区,下面我们去新建几个磁盘分区,用来创建RAID。新建磁盘的命令及截图如下所示:




从上图可以看到,我们新建了两个磁盘,一个2G的,一个1G的,然后修改磁盘类型,我们依然用# fdisk /dev/sda,其执行结果如下图:




接下来我们先用# partprober /dev/sda命令让内核重读磁盘分区,否则我们新建的磁盘分区内核是不知道的,然后再用# fdisk -l查看一下新建的磁盘,命令及执行结果如下如所示:




从上图可以看到,磁盘分区/dev/sda6和/dev/sda7都以创建好,且类型为raid。前面我们已经介绍过了,可以用mdadm来创建RAID,下边我们用该命令把磁盘分区/dev/sda6和/dev/sda7创建为一个3G的RAID0。创建命令代码及执行结果如下图:




已经创建成功,我们用命令去查看下raid0的详细信息。命令及执行结果如下所示:

# mdadm -D /dev/md0




从上图可以看到,raid0已创建成功,大小为3G,设备个数为2,总设备个数也为2,chunk值我们没有指定,默认的为64K,工作磁盘个数为2,损坏磁盘个数为0,两个设备都可以使用。下面我们去把raid0格式化,否则是不能使用的。




好了,我们已经把raid0格式化完成,格式化为带日志的ext3的文件系统。这样就可以挂载使用了,下面我们把raid0挂载到/backup目录下,看一下效果如何。




到目前为止,raid0已创建完毕,并可以挂载使用。前面已经介绍过停用和启用raid的命令,这里不再贴出其执行结果,请各位自己动手尝试一下吧。再次把命令贴出来:

# mdadm -S /dev/md0 :停止RAID0
# mdadm -A /dev/md0 /dev/sda6 /dev/sda7 :启用RAID0


本文出自 “呼伦贝尔—写在人生路上” 博客,请务必保留此出处http://lq2419.blog.51cto.com/1365130/1153482
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: