软raid的详细配置讲解 raid 0

  1. 云栖社区>
  2. 博客>
  3. 正文

软raid的详细配置讲解 raid 0

科技小能手 2017-11-15 02:32:00 浏览685
展开阅读全文

   安装程序实现软件RAID代替硬件RAID的方法,今天再进一步谈谈手动创建软RAID和日常维护的方法。 mdadm使用的也是md驱动,由于其拥有多种模式,而且单一工具,不依赖任何配置文件,是替代raidtools的好工具。目前几乎所有发行版本使用的都是该工具。

     RAID 是冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称。它是把多个磁盘组成一个阵列,当作单一磁盘使用。它将数据以分段(striping)的方式分散存储在不同的磁盘中,通过多个磁盘的同 时读写,来减少数据的存取时间,并且可以利用不同的技术实现数据的冗余,即使有一个磁盘损坏,也可以从其他的磁盘中恢复所有的数据。简单地说,其好处就 是:安全性高、速度快、数据容量大。

   RAID 0 全称叫做Striped Disk Array without Fault Tolerance( 没有容错设计的条带磁盘阵列)。图中一个圆柱就是一块磁盘(以下均是),它们并联在一起。从图中可以看出,RAID 0在存储数据时由RAID 控制器(硬件或软件)分割成大小相同的数据条,同时写入阵列中的磁盘。如果发挥一下想象力,你会觉得数据象一条带子横跨过所有的阵列磁盘,每个磁盘上的条带深度则是一样的。

   至于每个条带的深度则要看所采用的RAID 类型,在NT 系统的软RAID 0等级中,每个条带深度只有64KB 一种选项,而在硬RAID 0等级,可以提供8、16、32、64 以及128KB 等多种深度参数。Striped 是RAID 的一种典型方式,在很多RAID 术语解释中,都把Striped 指向RAID 0。在读取时,也是顺序从阵列磁盘中读取后再由RAID 控制器进行组合

   这样,数据就等于并行的写入和读取,从而非常有助于提高存储系统的性能。对于两个硬盘的RAID 0系统,提高一倍的读写性能可能有些夸张,毕竟要考虑到也同时缯加的数据分割与组合等与RAID 相关的操作处理时间,但比单个硬盘提高50% 的性能是完全可以的。

不过,RAID 0还不能算是真正的RAID,因为它没有数据冗余能力。由于没有备份或校验恢复设计,在RAID 0阵列中任何一个硬盘损坏就可导致整个阵列数据的损坏,因为数据都是分布存储的。

   对比RAID 0等级,存储工程师能发现硬盘的内容是两两相同的。这就是镜像――两个硬盘的内容完全一样,这等于内容彼此备份。比如阵列中有两个硬盘,在写入时,RAID 控制器并不是将数据分成条带而是将数据同时写入两个硬盘。这样,其中任何一个硬盘的数据出现问题,可以马上从另一个硬盘中进行恢复。注意,这两个硬盘并不是主从关系,也就是说是相互镜像/恢复的。

RAID 1 已经可以算是一种真正的RAID 系统,它提供了强有力的数据容错能力,但这是由一个硬盘的代价所带来的效果,而这个硬盘并不能增加整个阵列的有效容量

  RAID 0磁盘阵列的数据映射 上图显示了RAID 0磁盘阵列的虚拟设备是如何映射到单个的成员磁盘的,一般情况下,虚拟设备的容量是成员磁盘容量的总和。


RAID 0磁盘阵列

    假如RAID 0磁盘阵列的磁盘失败,那么,数据将彻底丢失。为了在RAID 0磁盘阵列情况下恢复数据,唯一的办法是使用磁带备份或者镜像拷贝。

典型的RAID 0使用独立访问的方法将数据分块,然后发送给成员磁盘,而不是使用并行访问方法,它能实现多个I / O操作同时并行地处理。因为RAID 0不需要计算校验,因而,它是所有类型的阵列中吞吐量最快的。


创建软RAID

在红旗Linux服务器中是通过mdadm工具来创建和维护软RAID的,mdadm在创建和管理软RAID时非常方便,而且很灵活。mdadm常用的参数有如下:

  • --create-C:创建一个新的软RAID,后面接raid设备的名称。例如,/dev/md0/dev/md1等。

  • --assemble-A:加载一个已存在的阵列,后面跟阵列以及设备的名称。

  • --detail-D:输出指定RAID设备的详细信息。

  • --stop-S:停止指定的RAID设备。

  • --level-l:设置RAID的级别,例如,设置“--level=5”则表示创建阵列的级别是RAID 5

  • --raid-devices-n:指定阵列中活动磁盘的数目。

  • --scan-s:扫描配置文件或/proc/mdstat文件来搜索软RAID的配置信息,该参数不能单独使用,只能配置其它参数才能使用。

  • -a 记住,一般在系统中有md0这个设备,但是没有md1,md3等其他设备,所以在创建md1或者其他raid 的时候要加上参数 -a  yes,否则会报错没有这个文件

下面将通过一个实例来讲述通过mdadm如何实现软RAID的功能。


-c, --chunk=:  Specify chunk size of kibibytes. RHEL 6.X或和CentOS 6.X缺省为512KB

chunk-size是一个重要的参数,决定了一次向阵列中每个磁盘写入数据的量

  Chunk:可以理解为raid分储数据时每个数据段的大小(通常为32/64/128/256/512等这类数字大小);合理的选择chunk大小非常重要,若chunk过大可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使得数据的读写只局限于一块硬盘上,这便不能充分发挥RAID并发的优势;如果chunk设置过小,任何很小的I/O指令都 可能引发大量的读写操作,不能良好发挥并发性能,占用过多的控制器总线带宽,也影响了阵列的整体性能。所以,在创建带区时,我们应该根据实际应用的需要,合理的选择带区大小。

  chunk 表示的是给每个盘一次写这么多数据

 stride=size of  chunk /size of block 表示的是在一个磁盘上每次写这么多数据 步幅

配置raid 0

[root@mail ~]# fdisk -l|grep  ^\/dev/
/dev/sda1   *           1          38      305203+  83  Linux
/dev/sda2              39        3790    30137940   83  Linux
/dev/sda3            3791        3916     1012095   82  Linux swap / Solaris
/dev/sdb1               1        1305    10482381   83  Linux
/dev/sdc1               1        1305    10482381   83  Linux
/dev/sdd1               1         130     1044193+  83  Linux
/dev/sde1               1         261     2096451   83  Linux
/dev/sdf1               1         261     2096451   83  Linux
/dev/sdg1               1         652     5237158+  83  Linux


[root@mail ~]# mdadm -C  /dev/md0  -l 0  -n 2 --chunk=64  /dev/sdb1 /dev/sdc1 
mdadm: /dev/sdb1 appears to contain an ext2fs file system
   size=10482380K  mtime=Thu Jan  1 08:00:00 1970
mdadm: /dev/sdc1 appears to contain an ext2fs file system
   size=10482380K  mtime=Thu Jan  1 08:00:00 1970
Continue creating array? yes
mdadm: array /dev/md0 started.

[root@mail ~]# mkfs.ext3  /dev/md0

[root@mail ~]# mount /dev/md0  /os/


本文转自陈仲阳0 51CTO博客,原文链接:http://blog.51cto.com/wolfword/1221203

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注