Linux中使用mdadm创建与管理软raid
注:本次操作以RHEL4为例,但应该可以应用到其它大部分的distro上(guess)。
目录
1 mdadm的几个常用参数
2 创建软raid的大体流程
3 示例:创建软raid5(+hotspare)
4 出现故障后的恢复
5 misc
[编辑]mdadm的几个常用参数
-C 创建Raid,后面跟参数,代表raid设备的名称。比如:/dev/md0,/dev/md1。
-n 用于创建磁盘阵列的磁盘个数。
-l Raid的级别。
-x 指定用于hotspare(热备盘)的磁盘个数。如果阵列中有一块硬盘坏了,它会立刻顶上,并rebuild;
-D 显示软raid的详细信息;
-s 扫描配置文件(/etc/mdadm.conf)或'/proc/mdstat'来查看遗漏的信息f;
[编辑]创建软raid的大体流程
使用fdisk工具为新磁盘创建分区;
使用mkfs.XXXX工具将刚才划分好的分区格式化成某种格式的文件系统。比如:ext3,reiserfs等;
使用mdadm来创建软raid;
创建/etc/mdadm.conf文件(注意文件的格式,包括是否有逗号等等。该文件是为了系统在重启后能够自动启用软raid。可以查看/etc/rc.sysinit脚本,搜索'mdadm'字符串就明白了);
[编辑]示例:创建软raid5(+hotspare)
以下是我的一次实际操作的完整过程:
这是用'fdisk -l'命令查看到的我当前的磁盘和分区情况(只有/dev/sda在使用,其它四个都是新磁盘,没有分区,没有格式化):
# fdisk -lDisk /dev/sda: 6442 MB, 6442450944 bytes255 heads, 63 sectors/track, 783 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/sda1 * 1 720 5783368+ 83 Linux/dev/sda2 721 783 506047+ 82 Linux swapDisk /dev/sdb: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesDisk /dev/sdb doesn't contain a valid partition tableDisk /dev/sdc: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesDisk /dev/sdc doesn't contain a valid partition tableDisk /dev/sdd: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesDisk /dev/sdd doesn't contain a valid partition tableDisk /dev/sde: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytesDisk /dev/sde doesn't contain a valid partition table
使用fdisk创建分区(本例中将整块磁盘划分为一个主分区。其余几块磁盘也做相同的操作。):
# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1First cylinder (1-204, default 1):Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-204, default 204):Using default value 204Command (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.
为刚才新建的分区建立文件系统(其余几个分区依次做相同的操作):
# mkfs.ext3 /dev/sdb1mke2fs 1.35 (28-Feb-2004)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)52416 inodes, 208880 blocks10444 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=6737100826 block groups8192 blocks per group, 8192 fragments per group2016 inodes per groupSuperblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801Writing inode tables: doneCreating journal (4096 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 37 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.
所有磁盘都操作完后,再次用'fdisk -l'查看磁盘及分区状态:
# fdisk -lDisk /dev/sda: 6442 MB, 6442450944 bytes255 heads, 63 sectors/track, 783 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/sda1 * 1 720 5783368+ 83 Linux/dev/sda2 721 783 506047+ 82 Linux swapDisk /dev/sdb: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System/dev/sdb1 1 204 208880 83 LinuxDisk /dev/sdc: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System/dev/sdc1 1 204 208880 83 LinuxDisk /dev/sdd: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System/dev/sdd1 1 204 208880 83 LinuxDisk /dev/sde: 214 MB, 214748160 bytes64 heads, 32 sectors/track, 204 cylindersUnits = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System/dev/sde1 1 204 208880 83 Linux
使用mdadm创建一个软raid,raid级别:5;并有一个hotspare盘:
# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1mdadm: array /dev/md0 started.
输出信息显示软raid(/dev/md0)已经启用了。使用mdadm的-D参数(--detail)可以查看软raid状态:
# mdadm -D /dev/md0/dev/md0: Version : 00.90.01 Creation Time : Wed Aug 23 15:10:19 2006 Raid Level : raid5 Array Size : 417536 (407.75 MiB 427.56 MB) Device Size : 208768 (203.88 MiB 213.78 MB) Raid Devices : 3 Total Devices : 4Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Wed Aug 23 15:10:21 2006 State : clean Active Devices : 3Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 64K Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1 3 8 65 -1 spare /dev/sde1 UUID : f8283de5:39c73d89:b9fbc266:fdceb416 Events : 0.2
生成配置文件(/etc/mdadm.conf):
# mdadm -D -s >/etc/mdadm.conf