磁盘阵列的等级
https://blog.csdn.net/weixin_38808609/article/details/81663621
#这个网址 详细的介绍了 各个等级的优缺点
这是每个 等级的对比
设置磁盘阵列
磁盘阵列 可以使用 硬件 但是很贵 不会使用到 cpu的的运算资源
我们一般使用 软件 来进行 磁盘阵列的模拟 构成磁盘阵列可以使用 分区也可以是使用磁盘来进行构建
只不过是我们cpu模拟出来的需要占用到cpu的运算资源
使用mdadm命令
[root@study ~]# mdadm --detail /dev/md0
[root@study ~]# mdadm --create /dev/md[0-9] --auto=yes --level=[015] --chunk=NK \
> --raid-devices=N --spare-devices=N /dev/sdx /dev/hdx...
选项与参数:
--create :为创建 RAID 的选项;
--auto=yes :决定创建后面接的软件磁盘阵列设备,亦即 /dev/md0, /dev/md1...
--chunk=Nk :决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是 64K 或 512K。
--raid-devices=N :使用几个磁盘 (partition) 作为磁盘阵列的设备
--spare-devices=N :使用几个磁盘作为备用 (spare) 设备
--level=[015] :设置这组磁盘阵列的等级。支持很多,不过建议只要用 0, 1, 5 即可
--detail :后面所接的那个磁盘阵列设备的详细信息
实验要求
- 利用 4 个 partition 组成 RAID 5;
- 每个 partition 约为 1GB 大小,需确定每个 partition 一样大较佳;
- 利用 1 个 partition 设置为 spare disk
- chunk 设置为 256K 这么大即可!
- 这个 spare disk 的大小与其他 RAID 所需 partition 一样大!
- 将此 RAID 5 设备挂载到 /srv/raid 目录下
1.先创建分区
[root@ds ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/vda1 2048 41945087 20971520 83 Linux
/dev/vda2 41945088 52430847 5242880 83 Linux
/dev/vda3 52430848 56625151 2097152 83 Linux
/dev/vda4 56625152 77596671 10485760 5 Extended
/dev/vda5 56627200 58724351 1048576 fd Linux raid autodetect
/dev/vda6 58726400 60823551 1048576 fd Linux raid autodetect
/dev/vda7 60825600 62922751 1048576 fd Linux raid autodetect
/dev/vda8 62924800 65021951 1048576 fd Linux raid autodetect
/dev/vda9 65024000 67121151 1048576 fd Linux raid autodetect
#注意上边的 分区的ID要改为fd 这个千万要注意
使用 t 更改 使用l 来列出 id表 !!!
2.创建磁盘阵列
[root@study ~]# mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256K \
> --raid-devices=4 --spare-devices=1 /dev/vda{5,6,7,8,9}
mdadm: /dev/vda5 appears to contain an ext2fs file system
size=1048576K mtime=Thu Jun 25 00:35:01 2015 # 某些时刻会出现这个东西!没关系的!
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
# 详细的参数说明请回去前面看看啰!这里我通过 {} 将重复的项目简化!
# 此外,因为鸟哥这个系统经常在创建测试的环境,因此系统可能会抓到之前的 filesystem
# 所以就会出现如上前两行的讯息!那没关系的!直接按下 y 即可删除旧系统
磁盘阵列的查看
[root@study ~]# mdadm --detail /dev/md0
/dev/md0: # RAID 的设备文件名
Version : 1.2
Creation Time : Mon Jul 27 15:17:20 2015 # 创建 RAID 的时间
Raid Level : raid5 # 这就是 RAID5 等级!
Array Size : 3142656 (3.00 GiB 3.22 GB) # 整组 RAID 的可用容量
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB) # 每颗磁盘(设备)的容量
Raid Devices : 4 # 组成 RAID 的磁盘数量
Total Devices : 5 # 包括 spare 的总磁盘数
Persistence : Superblock is persistent
Update Time : Mon Jul 27 15:17:31 2015
State : clean # 目前这个磁盘阵列的使用状态
Active Devices : 4 # 启动(active)的设备数量
Working Devices : 5 # 目前使用于此阵列的设备数
Failed Devices : 0 # 损坏的设备数
Spare Devices : 1 # 预备磁盘的数量
Layout : left-symmetric
Chunk Size : 256K # 就是 chunk 的小区块容量
Name : study.centos.vbird:0 (local to host study.centos.vbird)
UUID : 2256da5f:4870775e:cf2fe320:4dfabbc6
Events : 18
Number Major Minor RaidDevice State
0 252 5 0 active sync /dev/vda5
1 252 6 1 active sync /dev/vda6
2 252 7 2 active sync /dev/vda7
5 252 8 3 active sync /dev/vda8
4 252 9 - spare /dev/vda9
# 最后五行就是这五个设备目前的情况,包括四个 active sync 一个 spare !
# 至于 RaidDevice 指的则是此 RAID 内的磁盘顺序
查看背写入到配置文件中的数据
[root@study ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 vda8[5] vda9[4](S) vda7[2] vda6[1] vda5[0] <==第一行
3142656 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU] <==第二行
unused devices: <none>
上述的数据比较重要的在特别指出的第一行与第二行部分[3]:
第一行部分:指出 md0 为 raid5 ,且使用了 vda8, vda7, vda6, vda5 等四颗磁盘设备。
每个设备后面的中括号 [] 内的数字为此磁盘在 RAID 中的顺序 (RaidDevice);至
于 vda9 后面的 [S] 则代表 vda9 为 spare 之意。
第二行:此磁盘阵列拥有 3142656 个block(每个 block 单位为 1K),所以总容量约
为 3GB, 使用 RAID 5 等级,写入磁盘的小区块 (chunk) 大小为 256K,使用
algorithm 2 磁盘阵列演算法。 [m/n] 代表此阵列需要 m 个设备,且 n 个设备正常运
行。因此本 md0 需要 4 个设备且这 4 个设备均正常运行。 后面的 [UUUU] 代表的是
四个所需的设备 (就是 [m/n] 里面的 m) 的启动情况,U 代表正常运行,若为 则
代表不正常。_
格式化和挂载使用RAID
[root@study ~]# mkfs.xfs -f -d su=256k,sw=3 -r extsize=768k /dev/md0
# 有趣吧!是 /dev/md0 做为设备被格式化呢!
参数的意思
srtipe (chunk) 容量为 256K,所以 su=256k
共有 4 颗组成 RAID5 ,因此容量少一颗,所以 sw=3 喔!
由上面两项计算出数据宽度为: 256K*3=768k
[root@study ~]# mkdir /srv/raid
[root@study ~]# mount /dev/md0 /srv/raid
[root@study ~]# df -Th /srv/raid
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 3.0G 33M 3.0G 2% /srv/raid
# 看吧!多了一个 /dev/md0 的设备,而且真的可以让你使用呢!还不赖!
模拟raid的救援模式
[root@study ~]# mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]
选项与参数:
--add :会将后面的设备加入到这个 md 中!
--remove :会将后面的设备由这个 md 中移除
--fail :会将后面的设备设置成为出错的状态
#设置磁盘为错误
# 0. 先复制一些东西到 /srv/raid 去,假设这个 RAID 已经在使用了
[root@study ~]# cp -a /etc /var/log /srv/raid
[root@study ~]# df -Th /srv/raid ; du -sm /srv/raid/*
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 3.0G 144M 2.9G 5% /srv/raid
28 /srv/raid/etc <==看吧!确实有数据在里面喔!
51 /srv/raid/log
# 1. 假设 /dev/vda7 这个设备出错了!实际仿真的方式:
[root@study ~]# mdadm --manage /dev/md0 --fail /dev/vda7
mdadm: set /dev/vda7 faulty in /dev/md0 # 设置成为错误的设备啰!
[root@ds ~]# mdadm --detail /dev/md0
.....(中间省略).....
Update Time : Mon Jul 27 15:32:50 2015
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 1 <==出错的磁盘有一个!
Spare Devices : 1
.....(中间省略).....
Number Major Minor RaidDevice State
0 252 5 0 active sync /dev/vda5
1 252 6 1 active sync /dev/vda6
4 252 9 2 spare rebuilding /dev/vda9
5 252 8 3 active sync /dev/vda8
2 252 7 - faulty /dev/vda7
# 看到没!这的动作要快做才会看到! /dev/vda9 启动了而 /dev/vda7 死掉了
上面的画面你得要快速的连续输入那些 mdadm 的指令才看的到!因为你的 RAID
5 正在重建系统! 若你等待一段时间再输入后面的观察指令,则会看到如下的画面了
# 2. 已经借由 spare disk 重建完毕的 RAID 5 情况
[root@study ~]# mdadm --detail /dev/md0
....(前面省略)....
Number Major Minor RaidDevice State
0 252 5 0 active sync /dev/vda51 252 6 1 active sync /dev/vda6
4 252 9 2 active sync /dev/vda9
5 252 8 3 active sync /dev/vda8
2 252 7 - faulty /dev/vda7
#把出错的磁盘移出 并且加上 新的磁盘
# 3. 拔除“旧的”/dev/vda7 磁盘
[root@study ~]# mdadm --manage /dev/md0 --remove /dev/vda7
# 假设接下来你就进行了上面谈到的第 2, 3 个步骤,然后重新开机成功了!
# 4. 安装“新的”/dev/vda7 磁盘
[root@study ~]# mdadm --manage /dev/md0 --add /dev/vda7
[root@study ~]# mdadm --detail /dev/md0
....(前面省略)....
Number Major Minor RaidDevice State
0 252 5 0 active sync /dev/vda5
1 252 6 1 active sync /dev/vda6
4 252 9 2 active sync /dev/vda9
5 252 8 3 active sync /dev/vda8
6 252 7 - spare /dev/vda7
开机自动启动并且挂载
[root@study ~]# mdadm --detail /dev/md0 | grep -i uuid
UUID : 2256da5f:4870775e:cf2fe320:4dfabbc6
# 后面那一串数据,就是这个设备向系统注册的 UUID 识别码!
# 开始设置 mdadm.conf
[root@study ~]# vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
# RAID设备 识别码内容
# 开始设置开机自动挂载并测试
[root@study ~]# blkid /dev/md0
/dev/md0: UUID="494cb3e1-5659-4efc-873d-d0758baec523" TYPE="xfs"
[root@study ~]# vim /etc/fstab
UUID=494cb3e1-5659-4efc-873d-d0758baec523 /srv/raid xfs defaults 0 0
#注意要写UUID= 我就是没写 我人直接傻逼了
[root@study ~]# umount /dev/md0; mount -a
[root@study ~]# df -Th /srv/raid
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 3.0G 111M 2.9G 4% /srv/raid
# 你得确定可以顺利挂载,并且没有发生任何错误!
关闭软件RAID(非常重要)
# 1. 先卸载且删除配置文件内与这个 /dev/md0 有关的设置:
[root@study ~]# umount /srv/raid
[root@study ~]# vim /etc/fstab
UUID=494cb3e1-5659-4efc-873d-d0758baec523 /srv/raid xfs defaults 0 0
# 将这一行删除掉!或者是注解掉也可以!
# 2. 先覆盖掉 RAID 的 metadata 以及 XFS 的 superblock,才关闭 /dev/md0 的方法
[root@study ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
[root@study ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0 <==不啰唆!这样就关闭了!
[root@study ~]# dd if=/dev/zero of=/dev/vda5 bs=1M count=10
[root@study ~]# dd if=/dev/zero of=/dev/vda6 bs=1M count=10
[root@study ~]# dd if=/dev/zero of=/dev/vda7 bs=1M count=10
[root@study ~]# dd if=/dev/zero of=/dev/vda8 bs=1M count=10
[root@study ~]# dd if=/dev/zero of=/dev/vda9 bs=1M count=10
[root@study ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
unused devices: <none> <==看吧!确实不存在任何阵列设备!
[root@study ~]# vim /etc/mdadm.conf
#ARRAY /dev/md0 UUID=2256da5f:4870775e:cf2fe320:4dfabbc6
# 一样啦!删除他或是注解他!
为什么要使用dd命令?
因为 RAID 的 相关数据其实也会存一份在磁盘当中,因此,如果你只是将配置文件移除, 同时关闭了
RAID,但是分区并没有重新规划过,那么重新开机过后,系统还是会将这颗磁盘阵列创
建起来,只是名称可能会变成 /dev/md127 就是了! 因