磁盘阵列的等级
https://blog.csdn.net/weixin_38808609/article/details/81663621
#这个网址 详细的介绍了 各个等级的优缺点
这是每个 等级的对比
image.jpeg
设置磁盘阵列
磁盘阵列 可以使用 硬件 但是很贵 不会使用到 cpu的的运算资源
我们一般使用 软件 来进行 磁盘阵列的模拟 构成磁盘阵列可以使用 分区也可以是使用磁盘来进行构建
只不过是我们cpu模拟出来的需要占用到cpu的运算资源
使用mdadm命令

  1. [root@study ~]# mdadm --detail /dev/md0
  2. [root@study ~]# mdadm --create /dev/md[0-9] --auto=yes --level=[015] --chunk=NK \
  3. > --raid-devices=N --spare-devices=N /dev/sdx /dev/hdx...
  4. 选项与参数:
  5. --create :为创建 RAID 的选项;
  6. --auto=yes :决定创建后面接的软件磁盘阵列设备,亦即 /dev/md0, /dev/md1...
  7. --chunk=Nk :决定这个设备的 chunk 大小,也可以当成 stripe 大小,一般是 64K 512K
  8. --raid-devices=N :使用几个磁盘 partition 作为磁盘阵列的设备
  9. --spare-devices=N :使用几个磁盘作为备用 spare 设备
  10. --level=[015] :设置这组磁盘阵列的等级。支持很多,不过建议只要用 0, 1, 5 即可
  11. --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 就是了! 因