软RAID的实现,以RAID5 为例,在Centos 6 系统上实现,首先在虚拟机上添加3块硬盘 在系统上分别显示为/dev/sdb /dev/sdc /dev/sdd 大小随意选择。
1、要使用RAID需要将磁盘分区格式设置为Linux raid auto
分别创建 /dev/sdb1 3G
/dev/sdb2 2G (这块盘冗余,当其他3块盘中有任何一块出现故障时自动替换上)
/dev/sdc1 2G
/dev/sdd1 2G
分区格式设置为 Linux raid auto
(注意如果分区大小不同,以最小分区为准,这里故意设置一个3G的测试下是不是这个道理)
上图完成了分区的创建工作
2、进行RAID5的制作
可通过cat /proc/mdstat命令来查看当前系统RAID的状态
如上所示表示当前系统上没有做软RAID
下面简单介绍下制作RAID的工具:
mdadm:模块化的工具,用来管理RAID
命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
其中mode:
-C: 创建模式
-n #: 使用#个块设备来创建此RAID;
-l #:指明要创建的RAID的级别;
-a {yes|no}:自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE: 指明块大小;
-x #: 指明空闲盘的个数;
-D:显示raid的详细信息;
mdadm -D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏;
-a: 添加磁盘
-r: 移除磁盘
example:mdadm raiddevice [-f,-r,-a] /dev/devices
停止md设备:
mdadm -S /dev/md#
3、下面真正开始制作RAID了,要求是制作一个大小为4G的RAID5,使用4块磁盘,一块用来做冗余
mdadm -C /dev/md0 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x 1 /dev/sdb2
上图表示创建完成
4、可用cat /proc/mdstat 查看其创建过程
5、用mdadm /dev/md0 命令查看RAID5的详细信息
6、然后将其格式化为ext4类型
mke2fs -t ext4 -b 4096 -m 6 /dev/md0
-t:指定文件类型
-b:4096 是用来设置块大小,默认就是4096字节可以不设置
-m:是用来设置为管理磁盘预留空间,默认是%5可以不设置
7、然后将其挂载到/mnt目录下,并用df -h查看 /mnt目录大小
/dev/md0 大小为4G证明确实是有其最小分区决定RAID大小的
RAID5 制作完成!
命令blkid可用于查看当前系统上的磁盘分区简要信息:
8、如果需要开机自动挂载,需要将将其写入/etc/fstab 文件中去。
/dev/md0,在开机重启后可能会变名称,所以写入/etc/fstab文件是可用其UUID确定某个分区
9、下面将/etc/fstab文件复制到/mnt目录中去
我们模拟将其中一块盘损坏:
命令为:mdadm -f /dev/sdb1
我们再用 cat /proc/mdstat 命令查看RAID的状态
上图显示sdb1 已经损坏,sdb2迅速顶替了sd1的位置 ,RAID5处于正常状态
还可用命令 mdadm -D /dev/md0 显示其详细信息
10、我们在再将其中一块盘设置为故障看看会怎么样?
命令 mdadm /dev/md0 -f /dev/dev/sdb2 将/dev/sdb2也设置为故障
用命令 cat /proc/mdstat 查看RAID的状态,显示/dev/sdb1 /dev/sdb2 都为故障
此时RAID5仍然能继续工作,处于降级状态工作
用命令: mdadm -D /dev/md0 查看详细信息
其状态为: State : clean, degraded (降级)
如果再损坏一块磁盘那么这个RAID5就会出现故障,导致数据丢失,所以当发现磁盘中有故障后需要及时更换
11、下面演示,添加磁盘,假如我们损坏的磁盘修复了,将其添加上新的磁盘使其能正常安全运行
首先要移除损坏的磁盘,命令为:
mdadm /dev/md0 -r /dev/sdb1 /dev/sdb2
移除后显示先RAID的状态:
显示只有两块盘处于工作状态,现在我们要添加新的磁盘上去
命令为:
mdadm /dev/md0 -a /dev/sdb1
mdadm /dev/md0 -a /dev/sdb2
12、再查看下其详细信息
发现其RAID又恢复到了以前的状态
完毕!!!