linux下用mdadm命令创建磁盘阵列

 

linux下用mdadm命令创建磁盘阵列


2007-11-05 09:28:00    业界 |  评论(0) |  浏览(84)

本文讲述如何利用mdadm工具在Linux中创建和管理RAID磁盘阵列。  

不用我说你也应该知道备份的重要性。不过虽然大多数人都知道备份是非常重要的,但是我们实际对数据的备份次数却要少于理论上的最佳值。

目前市场上有多种备份解决方案,其中大部分都是采用快照的策略。换句话说,大多数系统在数据恢复时,都只能恢复到上次备份时的状态。而少数解决方案可以提供实时的备份能力。

RAID,也就是我们常说的独立磁盘冗余阵列或者廉价磁盘冗余阵列,则是一种全面的增量备份解决方案。RAID具有多种模式和附加功能,基本的RAID就已经可以实时的保存多个文件副本了。

RAID通过两个或两个以上容量一致的磁盘组成一个阵列(或一个组)。之后在系统中,这些物理存储设备就会被统一看作一个整体,或者说是“元设备(meta device)”。

向这个阵列中写入数据,实际上就是将数据同时写入每个磁盘。因此当这个阵列中的一个磁盘发生错误,其它磁盘中的数据依然能得到保存。

当然,RAID并不能替代一个具有良好性能的即时备份工具,不过它却可以保证当你的硬盘出现故障时,不会仅能恢复到几天前的数据。另外,RAID还可以帮助你找回偶然删除的文件。

RAID的成本低廉,而且操作系统的内核也可以支持。你所要做的就是购买两块相同的硬盘,然后分成同样大小的分区。之后你可以从这里 下载mdadm工具,以便创建和管理RAID阵列。

比如创建一个RAID5,可以使用如下命令:

1.创建分区

五块SCSI磁盘分别对应/dev/sda、/dev/sdb、/dev/sdc、 /dev/sdd、/dev/sde。其中第一块磁盘/dev/sda分两个区,用于安装RedHat AS 4和做交换分区,其他四块磁盘每块只分一个主分区,分别为/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1,并且将分区 类型指定为“fd”,这将使Linux内核能将它们识别为RAID分区,且在每次引导时自动被检测并启动。创建分区使用fdisk命令。

# fdisk /dev/sdb

进入fdisk命令行后,使用命令n创建分区,命令t改变分区类型,命令w保存分区表并退出,命令m为帮助。

2.创建RAID 5

这里使用了/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1四个设备创建RAID 5,其中/dev/sde1作为备份设备,其他为活动设备。备份设备主要起备用作用,一旦某一设备损坏可以立即用备份设备替换,当然也可以不使用备份设 备。命令格式如下:
# modprobe md
# mdadm -Cv /dev/md0 -l5 -n3 -x1 -c128 /dev/sd[b,c,d,e]1

命令中各参数分别表示如下作用:“-C”指创建一个新的阵列;“/dev/md0”表示阵列设备名称;“-l5”表示设置阵列模式,可以选择0、1、 4、5、6,它们分别对应于RAID0、RAID1、RAID4、RAID5、RAID6,这里设为RAID5模式;“-n3”指设置阵列中活动设备的数 目,该数目加上备用设备的数目应等于阵列中的总设备数; “-x1”设置阵列中备份设备的数目,当前阵列中含有1个备份设备;“-c128”指设置块的尺寸为128KB,缺省为64KB;“/dev/sd[b, c,d,e]1”指当前阵列中包含的所有设备标识符,也可以分开来写,中间用空格分开,其中最后一个为备份设备。
     我想配一个RAID5没有备份盘,应该是 mdadm -Cv /dev/md0 -l5 -n4 -x0 -c128 /dev/sd[b,c,d,e]1吧?但是使用 mdadm -D /dev/md0 查看阵列状态是发现,阵列为degrade。
     参考了mdadm源代码,Create函数中
/* If this is    raid5, we want to configure the last active slot
    * as missing, so that a reconstruct happens (faster than re-parity)
    * FIX: Can we do this for raid6 as well?
    */
if (assume_clean==0 && force == 0 && first_missing >= raiddisks) {
    switch ( level ) {
    case 5:
     insert_point = raiddisks-1;
     sparedisks++;
     array.active_disks--;
     missing_disks++;
     break;
    default:
     break;
    }
}
所以要使参数force==1就可以了,所以在命令中加-f就可以没有备份盘

你可能感兴趣的:(linux下用mdadm命令创建磁盘阵列)