1、新加一块盘,我这边新加后/dev/sdb
格式化成一个扩展分区,然后对扩展分区分成5个逻辑分区,具体如下。
直接使用fdisk /dev/sdb即可,不在赘述。主要要修改分区的system ID
[root@srcxtts ~]# fdisk /dev/sdb -l
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0a31f03b
Device Boot Start End Blocks Id System
/dev/sdb1 1 652 5237158+ 5 Extended
/dev/sdb5 1 132 1060227 8e Linux LVM
/dev/sdb6 133 264 1060258+ 8e Linux LVM
/dev/sdb7 265 396 1060258+ 8e Linux LVM
/dev/sdb8 397 528 1060258+ 8e Linux LVM
/dev/sdb9 529 652 995998+ 8e Linux LVM
[root@srcxtts ~]#
2、通过mdadm创建磁盘阵列
mdadm --create --auto=yes /dev/md0 --level=5 \
--raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}
--create :为新建的raid的参数
--auto=yes :决定后面接的软件磁盘阵列设备,即/dev/md0,/dev/md1等
--raid-devices=N:使用几个磁盘作为磁盘阵列的设备。
--spare-devices=N:使用几个磁盘作为备用(spare)设备。
--level=[015]:设置这组磁盘这列的等级。支持很多,不过建议只要用0/1/5即可。
--detail:后面所接的那个磁盘阵列的详细信息。
[root@srcxtts ~]# mdadm --create --auto=yes /dev/md0 --level=5 \
> --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@srcxtts ~]#
可以查看详情
mdadm --detail /dev/md0
[root@srcxtts ~]# mdadm --detail /dev/md0
/dev/md0: ==>raid设备文件名
Version : 1.2
Creation Time : Tue May 8 11:10:17 2018 ==>raid创建时间
Raid Level : raid5 ==>raid等级为raid5
Array Size : 3081216 (2.94 GiB 3.16 GB) ==>此raid可用磁盘大小
Used Dev Size : 1027072 (1003.17 MiB 1051.72 MB) ==>每个设备可用容量
Raid Devices : 4 ==>用作raid的设备数量
Total Devices : 5 ==>全部的设备数量
Persistence : Superblock is persistent
Update Time : Tue May 8 11:10:33 2018
State : clean
Active Devices : 4 ==>启动的raid磁盘数量
Working Devices : 5 ==>可动作的磁盘数量
Failed Devices : 0 ==>故障磁盘数量
Spare Devices : 1 ==>预备的磁盘数量
Layout : left-symmetric
Chunk Size : 512K
Name : srcxtts:0 (local to host srcxtts)
UUID : d08c1706:4c7f5d64:8e110d2e:b65f057d ==>此设备(raid)的标识符
Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
5 8 24 3 active sync /dev/sdb8
4 8 25 - spare /dev/sdb9
[root@srcxtts ~]#
最后五行就是这五个设备的目前情况,包括四个active sync和一个spare。至于raiddevice指的是此raid内的磁盘顺序。
下面是本次实验希望做成的raid5的环境:
a、利用4个分区组成raid5.
b、每个分区约为1gb大小,需确定每个分区一样大较好。
c、利用1个分区设置为sparedisk;
d、这个sparedisk的大小跟其它raid分区的大小一致。
e、将此raid5设备挂载到/mnt/raid目录下。
除了上面的命令之外,还可以通过下面的文件来查看系统软件磁盘阵列的情况:
[root@srcxtts ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb8[5] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
3081216 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
[root@srcxtts ~]#
第二行指明了md0使用了raid5,并且使用了sdb8/sdb9/sdb7/sdb6/sdb5五块磁盘设备。每个磁盘后面[]内的数据指明了该磁盘在raid中的raiddevice;至于sdb9后面的(S)则代表是sparedisk;
下面表示此磁盘阵列一共有3081216个block(每个block单位为1k),所以总容量约为3GB。使用raid5等级,写入磁盘的小区块(chunk)大小为512k,使用algorithm 2磁盘阵列算法。[m/n]代表此数组需要m个设备,且n个设备是正常运行的。因此本md0需要4个设备且这4个设备正常运行。后面的[UUUU]代表的是四个所需的设备启动情况。U代表正常运作。若为_则代表不正常。
3、格式化与挂载使用raid。
mkfs -t ext3 /dev/md0
mkdir -p /mnt/raid
mount /dev/md0 /mnt/raid
cp -a /var/log /mnt/raid
df -h
可以查看下挂载后的文件系统情况。
4、仿真raid错误的救援模式。
mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] \
[--fail 设备]
参数:
--add:会将后面的设备加入到这个md中。
--remove:会将后面这个设备从这个md中移除。
--fail:会将后面的设备设置成为出错的状态。
下面我们认为的构建错误让sparedisk自动开始重建系统。
a、先复制一些东西到/mnt/raid中去,假设这个raid已经在用了。(上面已经复制过了)
b、使某块分区出错
mdadm --manage /dev/md0 --fail /dev/sdb7
[root@srcxtts raid]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue May 8 11:10:17 2018
Raid Level : raid5
Array Size : 3081216 (2.94 GiB 3.16 GB)
Used Dev Size : 1027072 (1003.17 MiB 1051.72 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue May 8 11:32:44 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : srcxtts:0 (local to host srcxtts)
UUID : d08c1706:4c7f5d64:8e110d2e:b65f057d
Events : 37
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 25 2 active sync /dev/sdb9
5 8 24 3 active sync /dev/sdb8
2 8 23 - faulty spare /dev/sdb7
[root@srcxtts raid]#
发现failed devices变成了1,而spare devices变成了0。在线磁盘个数还是4.
通过/proc/mdstat看到的情况也是一样。
说明一旦某块磁盘失败,并不会影响raid5的功能,并且sparedisk会自动加入raid中。
4、将出错的盘删除,并新增sparedisk。
本例为了简单,不在新增磁盘或者分区,直接使用失败的sdb7分区移除后重新加入:
[root@srcxtts raid]# mdadm --manage /dev/md0 --remove /dev/sdb7
mdadm: hot removed /dev/sdb7 from /dev/md0
[root@srcxtts raid]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue May 8 11:10:17 2018
Raid Level : raid5
Array Size : 3081216 (2.94 GiB 3.16 GB)
Used Dev Size : 1027072 (1003.17 MiB 1051.72 MB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue May 8 11:38:09 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : srcxtts:0 (local to host srcxtts)
UUID : d08c1706:4c7f5d64:8e110d2e:b65f057d
Events : 38
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 25 2 active sync /dev/sdb9
5 8 24 3 active sync /dev/sdb8
mdadm --manage /dev/md0 --add /dev/sdb7
[root@srcxtts raid]# mdadm --manage /dev/md0 --add /dev/sdb7
mdadm: added /dev/sdb7
[root@srcxtts raid]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue May 8 11:10:17 2018
Raid Level : raid5
Array Size : 3081216 (2.94 GiB 3.16 GB)
Used Dev Size : 1027072 (1003.17 MiB 1051.72 MB)
Raid Devices : 4
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Tue May 8 11:38:29 2018
State : clean
Active Devices : 4
Working Devices : 5
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : srcxtts:0 (local to host srcxtts)
UUID : d08c1706:4c7f5d64:8e110d2e:b65f057d
Events : 39
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 25 2 active sync /dev/sdb9
5 8 24 3 active sync /dev/sdb8
6 8 23 - spare /dev/sdb7
[root@srcxtts raid]#
5、开机自动启动raid并自动挂载。
mdadm --detail /dev/md0 |grep -i uuid
a、先查出md0设备的UUID
[root@srcxtts ~]# mdadm --detail /dev/md0 |grep -i uuid
UUID : d08c1706:4c7f5d64:8e110d2e:b65f057d
[root@srcxtts ~]#
b、修改mdadm默认的配置文件,没有就新增;新建配置文件,写入下面的内容:
vi /etc/mdadm.conf
[root@srcxtts ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 UUID=d08c1706:4c7f5d64:8e110d2e:b65f057d
[root@srcxtts ~]#
c、修改自动挂载配置文件fstab,开机自动挂载
vi /etc/fstab
/dev/md0 /mnt/raid ext3 defaults 1 2
d、因为修改了fstab,防止改错导致下次开机无法启动,需要手工umount然后在mount -a全量挂载一遍。
umount /dev/md0; mount -a
e、查询文件系统,看挂载是否成功。
df /mnt/raid
[root@srcxtts ~]# df /mnt/raid
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/md0 3032784 73228 2805496 3% /mnt/raid
[root@srcxtts ~]#
6、关闭软件raid。
a、先卸载并且删除配置文件内与这个/dev/md0有关的设置:
umount /dev/md0
vi /etc/fstab
去掉/dev/md0自动挂载的内容:
/dev/md0 /mnt/raid ext3 defaults 1 2
b、直接关闭/dev/md0
mdadm --stop /dev/md0
[root@srcxtts ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@srcxtts ~]#
c、查看/proc/mdstat
[root@srcxtts ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none> ==>确实没有任何数组设备了
[root@srcxtts ~]#
d、修改/etc/mdadm.conf内容
删除或者注释掉与/dev/md0有关的内容即可:
ARRAY /dev/md0 UUID=d08c1706:4c7f5d64:8e110d2e:b65f057d