码迷,mamicode.com
首页 > 系统相关 > 详细

linux下磁盘管理机制--RAID

时间:2014-07-17 09:51:30      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:linux   raid   磁盘   


    RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列。RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制。当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能。


一、RAID的级别

    RAID机制通过级别来RAID级别来定义磁盘的组合方式。常见的级别有:RAID0,RAID1,RAID4,RAID5, RAID6这几种级别,下面分别叙述。

    RAID0:最少使用2块磁盘,出现的目的是为了提高读写性能,磁盘利用率达到100%,但没有容错能力,磁盘损坏的几率也增加了一倍。

具体如下:

bubuko.com,布布扣

    RAID1:最少使用2块磁盘,常作为磁盘的镜像使用,所以一般情况下,自己2块磁盘。设备利用率一般情况下是50%,允许一块磁盘损坏,读性能提高,写性能有所下降。

具体如下:

bubuko.com,布布扣

    RAID4:最少使用3块磁盘,其中一块专门保存其他2块数据的备份。通常情况是:保存其他2块磁盘数据按位异或的结果。设备利用率是 n-1/n (n为磁盘数目),可以损坏一块磁盘,读写性能都有相应的提升。

具体如下:

bubuko.com,布布扣

    RAID5:同RAID4一样,不同的一点是,RAID5将备份信息分散到每个磁盘上。

具体如下:

bubuko.com,布布扣

    RAID6:在RAID5的基础上,将备份信息多存了一份。所以,它可以允许2块磁盘损坏,其他的同RAID5一样。

具体如下:

bubuko.com,布布扣

    这里只介绍了常用的集中RAID级别,其他的级别的RAID,读者可自行查阅相关书籍。


我们也可以使用级别组合,常用的有RAID10,RAID50,RAID60等。

    以RAID10为例:假设现在有6块磁盘,可以先每2块作为一个RAID1,然后将3组RAID1作为一个RAID0,来提高磁盘的读写性能和容错能力。

bubuko.com,布布扣


二、RAID的实现

    RAID实现方式有2种:

  • 硬件RAID

    由硬件控制器来实现,在操作系统中看到的仅是一个单独的设备。企业一般都使用硬件RAID来实现。

  • 软件RAID

    由软件模拟硬件RAID的控制器来实现,依赖于操作系统。


下面通过软件RAID的实现,来理解RAID的实现方式。

    在Linux中使用mdadm这个命令来实现。具体在内核中是由 md(multdisk)模块实现的。

    下面介绍mdadm的常用参数:

参数具体意义示例
-C

创建RAID,还有子选项

-n: 用于创建RAID的磁盘数目

-l: 创建RAID级别

-c: chunk的大小,chunk就是RAID的数据块大小,它和磁盘中的Block的大小不同

-a: {yes|no}是否自动创建RAID设备文件

mdadm -C /dev/md0 -l 5 -n 3 -a yes -c 1024K /dev/sdb{5,6,7}
-A重新装载,比如在操作系统崩溃之后,但磁盘还在,在里一个操作系统里可以使用此选项重新加载mdadm -A /dev/md1 /dev/sdb{5,6,7}
-S停用RAIDmdadm -S /dev/md0
-D显示RAID的详细信息mdadm -D /dev/md0
-r从RAID设备里移除一块磁盘(分区)mdadm /dev/md0 -r /dev/sdb5
-a往RAID设备里添加一块磁盘(分区)mdadm /dev/md0 -a /dev/sdb5
-f手动损坏一块磁盘mdadm /dev/md0 -f /dev/sdb5


正式开始创建RAID,我们这里示例创建RAID5:

    第一步准备磁盘,我们这里用分区代替:

bubuko.com,布布扣

    第二步:就是创建RAID5。

bubuko.com,布布扣

    当看到以下信息时,说明数据同步完毕。

bubuko.com,布布扣

    下面就可以格式化此设备,并挂载使用了。

bubuko.com,布布扣

    查看RAID的详细信息:

bubuko.com,布布扣

三、磁盘故障实验

    我们手动损坏一块磁盘,数据是否正常。

bubuko.com,布布扣

    此时我们依然可以正常访问数据,正常读写数据。

bubuko.com,布布扣

    下来我们要做的任务是,将损毁的磁盘移除,添加新的磁盘上去。

bubuko.com,布布扣



    但是,我们经常是这样做的,在没损坏的情况下,添加一块磁盘作为热备磁盘。

bubuko.com,布布扣

    当有一块磁盘损坏可以立即顶上去。

bubuko.com,布布扣


四、磁盘重新装载

    我们这里使用 mdadm -S RAID_DEVICE 来模拟操作系统崩溃的情况,然后重新装载。

bubuko.com,布布扣


    此时,我们挂载使用,数据依然存在。

bubuko.com,布布扣


    总结:本文主要介绍了RAID的级别,以及软RAID的实现过程。当然,向 mdadm 命令的好多参数,没有详细介绍,读者要是用到的话,可查看 man 手册。


本文出自 “逆水寒” 博客,转载请与作者联系!

linux下磁盘管理机制--RAID,布布扣,bubuko.com

linux下磁盘管理机制--RAID

标签:linux   raid   磁盘   

原文地址:http://guoting.blog.51cto.com/8886857/1439016

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!