Linux系统下配置软RAID
一、设置磁盘
这里我们以Raid 1为例,其他的Raid级别设置类似。Riad 1需要两块硬盘,我在vps里添加了2块80G的硬盘。系统里使用fdisk –l 命令查看
二、安装mdadm
mdadm 是multiple devices admin 的简称,它是Linux下的一款标准的软件RAID 管理工具。
1、先查看是否安装了mdadm软件
# rpm -qa|grep mdadm
2、如果未安装,则使用yum 方式安装。
# yum install mdadm
三、创建RAID
1、新建分区
通过命令查看新建的两块硬盘是/dev/sdb和/dev/sdc,首先对他们进行分区。
# fdisk /dev/sdb //对sdb 进行分区
PS:详细的分区过程参考以前写的文章Centos下磁盘分区及挂载,需要注意的是最后新建好分区先别输入"w"保存,而是输入"p"查看分区情况。
2、修改分区类型
默认新建分区的类型是Linux,代号83,我们需要将其修改为raid 类型。输入"t" ,然后输入"L" 列出所有的文件格式,这里我们选择"fd Linux raid auto", 输入"fd",然后再输入"p" 查看分区情况,这是分区格式已经变成了Linux raid autodetect.
3、保存分区
输入"w",保存分区。
使用同样方法对/dev/sdc进行分区操作。
4、同步分区情况
使用partprobe 命令同步分区情况。
# partprobe
Warning: Unable to open /dev/hdc read-write (Read-only file system). /dev/hdc has been opened read-only.
5、查看分区情况
# fdisk -l /dev/sdb /dev/sdc
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 10443 83883366 fd Linux raid autodetect
Disk /dev/sdc: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 10443 83883366+ fd Linux raid autodetect
6、开始创建Raid
# mdadm -C /dev/md0 -ayes -l1 -n2 /dev/sd[b,c]1
mdadm: largest drive (/dev/sdc1) exceed size (83883264K) by more than 1%
Continue creating array?
Continue creating array? (y/n) y
mdadm: array /dev/md0 started.
PS:
-C --create 创建阵列;
-a --auto 同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-l --level 阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-n --raid-devices 阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
/dev/md0 阵列的设备名称;
/dev/sd{b,c}1 参与创建阵列的磁盘名称;
同理创建其他的Raid命令如下:
Raid 0
# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1
Raid 5
# mdadm -C /dev/md0 -ayes -l5 –n3 -x1 /dev/sd[b,c,d,e]1
PS:"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。
7、查看Raid状态
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1] sdb1[0]
83883264 blocks [2/2] [UU]
[>....................] resync = 2.8% (2396800/83883264) finish=6.2min speed=217890K/sec
unused devices:
# mdadm -D /dev/md0
/dev/md1:
Version : 0.90
Creation Time : Wed Oct 28 11:12:48 2015
Raid Level : raid1
Array Size : 83883264 (80.00 GiB 85.90 GB)
Used Dev Size : 83883264 (80.00 GiB 85.90 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 1
Persistence : Superblock is persistent
Update Time : Wed Oct 28 11:12:48 2015
State : clean, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Rebuild Status : 5% complete
UUID : 6c1ffaa0:53fc5fd9:59882ec1:0fc5dd2b
Events : 0.1
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
PS:
Raid Level : 阵列级别
Array Size : 阵列容量大小
Raid Devices : RAID成员的个数
Total Devices : RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的
State : clean, degraded, recovering 状态,包括三个状态,clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建
Active Devices : 被激活的RAID成员个数
Working Devices : 正常的工作的RAID成员个数
Failed Devices : 出问题的RAID成员
Spare Devices : 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备
UUID : RAID的UUID值,在系统中是唯一的
8、 创建RAID配置文件
RAID的配置文件为/etc/mdadm.conf,默认是不存在的,需要手工创建。
该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置。如果没有这个文件,则reboot 后,已经创建好的md0 会自动变成md127。
# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf
# mdadm –Ds >> /etc/mdadm.conf
9、修改RAID配置文件
当前生成的/etc/mdadm.conf 文件内容并不符合所规定的格式,所以也是不生效的。要把mdadm.conf文件修改成如下格式(也就是把metadata的参数去掉):
# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=5160ea40:cb2b44f1:c650d2ef:0db09fd0
10、格式化磁盘阵列
1
# mkfs.ext4 /dev/md0
11、建立挂载点并挂载
# mkdir /raid1
# mount /dev/md0 /raid1/
12、写入/etc/fstab
为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab 文件中。
1
/dev/md0 /raid1 ext4 defaults 0 0
软RAID及维护的例子
一、硬盘故障恢复
1、当软RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作。
# mdadm /dev/md0 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
2、查看raid状态
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2](F) sdc1[1]
16771712 blocks [2/1] [_U]
unused devices:
PS:
a、发现sdb1后面多了个(F),表示这块硬盘已损坏。
b、"[_U]" 表示当前阵列可以正常使用的设备是/dev/sdc1,如果是设备 “/dev/sdc1” 出现故障时,则将变成[U_]。
3、移除故障盘
# mdadm /dev/md0 -r /dev/sdb1
mdadm: hot removed /dev/sdb1
4、查看md0状态,可以看到总数变成1,sdb也移除了,但是总容量没变
# mdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Thu Oct 29 14:32:00 2015
Raid Level : raid1
Array Size : 16771712 (15.99 GiB 17.17 GB)
Used Dev Size : 16771712 (15.99 GiB 17.17 GB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Oct 29 15:35:16 2015
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : c136a5bf:590fd311:e20a494f:f3c508b2
Events : 0.26
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
5、添加新硬盘
如果是实际生产中添加新的硬盘,同样需要对新硬盘进行创建分区的操作,这里我们为了方便,将刚才模拟损坏的硬盘再次新加到raid1中
1
mdadm /dev/md0 -a /dev/sdb1
再次查看raid,发现raid1正在恢复,等待完成即可
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[2] sdc1[1]
16771712 blocks [2/1] [_U]
[>....................] recovery = 4.0% (672640/16771712) finish=2.7min speed=96091K/sec
unused devices:
二、RAID扩容
如果现在已经做好的RAID空间还是不够用的话,那么我们可以向里面增加新的硬盘,来增加RAID的空间。
1、添加一块硬盘,然后跟之前步骤一样分区
2、向raid1中添加一块硬盘
mdadm /dev/md0 -a /dev/sdd1
3、查看raid状态
# mdadm -D /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Thu Oct 29 14:32:00 2015
Raid Level : raid1
Array Size : 16771712 (15.99 GiB 17.17 GB)
Used Dev Size : 16771712 (15.99 GiB 17.17 GB)
Raid Devices : 2
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Oct 29 16:13:13 2015
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
UUID : c136a5bf:590fd311:e20a494f:f3c508b2
Events : 0.34
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 - spare /dev/sdd1
默认情况下,我们向RAID中增加的磁盘,会被默认当作热备盘,我们需要把热备盘加入到RAID的活动盘中。
4、热备盘转换成活动盘
1
# mdadm -G /dev/md0 -n3
PS:-n3表示使用3块活动盘,系统会自动rebuilding
5、扩容文件系统
RAID 构建完毕后,阵列容量增加,但是文件系统还没有增加,这时我们还需要对文件系统进行扩容。
# df –TH
# resize2fs /dev/md0
6、修改RAID 配置文件
需要在配置文件/etc/mdadm.conf里添加上新增的硬盘sdd1
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=c136a5bf:590fd311:e20a494f:f3c508b2