linux配置软raid/故障模拟
2017-07-21 坐标--南昌 天气--贼热 午休午休
raid 0:常见的 条带模式,至少两块硬盘,可以充分发挥并发优势,对读写效率都有提升,但是没有容错功能,任意一块磁盘损坏将损坏所有数据,磁盘利用率100%
lraid 1:镜像模式,至少两块硬盘,raid大小等于分区中最小容量的,最好分区一样,可增加热备盘一定的备份能力,数据有冗余,在存储是同事写入两块,实现数据备份
raid 1:磁盘利用率最多50%
raid 5:需要三块及以上的盘,可实现热备盘实现故障恢复,只损坏一盘,没问题。如两块损坏,则数据将损坏
raid 5:有校验位,使用相对简单的异或运算,磁盘使用率66.6%(3块) n-1/n(n块盘)
配置命令 mdadm ---作用:管理软raid工具
参数:(一下只是对部分常用参数作解释)
-C 创建整列
-A **磁盘阵列
-D 打印阵列详细信息
-s 扫描磁盘阵列/porc/mdstat,得到阵列缺失信息
-f 将设备状态定位故障
-a 添加磁盘到阵列
-v 显示详细信息
-r 移除设备
-S 解除阵列,释放所有资源
-l 设定磁盘阵列的级别
-x 指定磁盘阵列的备用用盘数量
-c 设定阵列的块chunk * 大小,单位KB
-G 该表阵列大小或形态
配置软raid 0
1.创建raid 0
[[email protected] ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
Continue creating array? (y/n) y
mdadm: array /dev/md0 started.
2.导出阵列配置文件
[[email protected] ~]# mdadm -Ds >/etc/mdadm.conf
[[email protected] ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=milk:0 UUID=2dc53fb2:9e1076e4:5c636eec:44dd4375
3.格式化并挂载到指定目录
[[email protected] ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
[[email protected] ~]# mkdir /raid0
[[email protected] ~]# mount /dev/md0 /raid0/
4.修改/etc/fstab永久挂载
[[email protected] ~]# vi /etc/fstab
5.查看挂载并测试
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_milk11g-lv_root 32G 5.7G 25G 19% /
tmpfs 1.6G 72K 1.6G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/md0 6.0G 140M 5.5G 3% /raid0
[[email protected] ~]# cd /raid0/
[[email protected] raid0]# touch 1.txt
建立软raid 1
5.创建raid 1
6.添加1G的热备盘
7.模拟磁盘故障
8.卸载阵列并删除整个阵列
[[email protected] raid1]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc3[2](S) sdc2[1] sdc1[0]
1051200 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdb2[1] sdb1[0]
4208640 blocks super 1.2 512k chunks
unused devices: <none>
[[email protected] raid1]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=milk12C:0 UUID=1060a7b3:1f60ae21:bfd8e0bf:b74c8e7a
ARRAY /dev/md1 metadata=1.2 spares=1 name=milk12C:1 UUID=0b59e7fb:9c20c3f1:5cfd0842:5b1e09d7
#spares=1 表示有热备盘一个
watch -n 1 cat /proc/mdstat
654 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3} 5.创建raid 1,一块备用盘
655 cat /proc/mdstat
656 mdadm -Ds > /etc/mdadm.conf (导出阵列配置文件)
657 cat /etc/mdadm.conf
658 cat /proc/mdstat
659 mkfs.ext4 /dev/md1 (初始化)
660 mkdir /raid1
661 mount /dev/md1p1 /raid1
662 df -h
663 cd /raid1/
664 scp -r data /raid1/ 这里我移动一个100m文件,更直观的看到盘recovery同步状态
665 mdadm -f /dev/md1 /dev/sdc2 7.模拟磁盘故障,此时的/proc/mdstat 如图一
676 mdadm -r /dev/md1 /dev/sdc2 8.卸载阵列并移除设备/dev/sdc1,变化如图二
677 watch -n 1 cat /proc/mdstat 每隔一秒查看状态同步状态
688 mdadm /dev/md1 -a /dev/sdc2 9.重新挂载一块盘添加就行,这里我就假设sdc1是新挂载的,恢复到图三
创建命令如下,其他流程的操作命令和raid1一样,这里就不赘述
mdadm -C -v /dev/md1 -l 5 -n 3 /dev/sdc{1,2,3}
既然要介绍raid,那么你不得不对raid有所了解,首先我这里就简单的提一下raid0/1/5的区别,那其实还有raid01和raid10这就相当于raid0和raid1组合。具体这里就不赘述了。其实现在随着硬件水平以及价格的优势不断的提升,硬raid越来越被推广,那么软raid只能说应个急什么的,,,,,哈哈哈
raid 0:常见的 条带模式,至少两块硬盘,可以充分发挥并发优势,对读写效率都有提升,但是没有容错功能,任意一块磁盘损坏将损坏所有数据,磁盘利用率100%
lraid 1:镜像模式,至少两块硬盘,raid大小等于分区中最小容量的,最好分区一样,可增加热备盘一定的备份能力,数据有冗余,在存储是同事写入两块,实现数据备份
raid 1:磁盘利用率最多50%
raid 5:需要三块及以上的盘,可实现热备盘实现故障恢复,只损坏一盘,没问题。如两块损坏,则数据将损坏
raid 5:有校验位,使用相对简单的异或运算,磁盘使用率66.6%(3块) n-1/n(n块盘)
配置命令 mdadm ---作用:管理软raid工具
参数:(一下只是对部分常用参数作解释)
-C 创建整列
-A **磁盘阵列
-D 打印阵列详细信息
-s 扫描磁盘阵列/porc/mdstat,得到阵列缺失信息
-f 将设备状态定位故障
-a 添加磁盘到阵列
-v 显示详细信息
-r 移除设备
-S 解除阵列,释放所有资源
-l 设定磁盘阵列的级别
-x 指定磁盘阵列的备用用盘数量
-c 设定阵列的块chunk * 大小,单位KB
-G 该表阵列大小或形态
由于个人虚拟机挂载盘有限,我就挂载了两个/dev/sdb和/dev/sdc,就用fdisk的这两块盘进行分区/dev/sdb{1,2,3}和/dev/sdc{1,2},
至于fdisk使用大家可百度,这里就不做详解了。
配置软raid 0
1.创建raid 0
[[email protected] ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
Continue creating array? (y/n) y
mdadm: array /dev/md0 started.
2.导出阵列配置文件
[[email protected] ~]# mdadm -Ds >/etc/mdadm.conf
[[email protected] ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=milk:0 UUID=2dc53fb2:9e1076e4:5c636eec:44dd4375
3.格式化并挂载到指定目录
[[email protected] ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
[[email protected] ~]# mkdir /raid0
[[email protected] ~]# mount /dev/md0 /raid0/
4.修改/etc/fstab永久挂载
[[email protected] ~]# vi /etc/fstab
5.查看挂载并测试
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_milk11g-lv_root 32G 5.7G 25G 19% /
tmpfs 1.6G 72K 1.6G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/md0 6.0G 140M 5.5G 3% /raid0
[[email protected] ~]# cd /raid0/
[[email protected] raid0]# touch 1.txt
建立软raid 1
5.创建raid 1
6.添加1G的热备盘
7.模拟磁盘故障
8.卸载阵列并删除整个阵列
[[email protected] raid1]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc3[2](S) sdc2[1] sdc1[0]
1051200 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdb2[1] sdb1[0]
4208640 blocks super 1.2 512k chunks
unused devices: <none>
[[email protected] raid1]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=milk12C:0 UUID=1060a7b3:1f60ae21:bfd8e0bf:b74c8e7a
ARRAY /dev/md1 metadata=1.2 spares=1 name=milk12C:1 UUID=0b59e7fb:9c20c3f1:5cfd0842:5b1e09d7
#spares=1 表示有热备盘一个
watch -n 1 cat /proc/mdstat
654 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3} 5.创建raid 1,一块备用盘
655 cat /proc/mdstat
656 mdadm -Ds > /etc/mdadm.conf (导出阵列配置文件)
657 cat /etc/mdadm.conf
658 cat /proc/mdstat
659 mkfs.ext4 /dev/md1 (初始化)
660 mkdir /raid1
661 mount /dev/md1p1 /raid1
662 df -h
663 cd /raid1/
664 scp -r data /raid1/ 这里我移动一个100m文件,更直观的看到盘recovery同步状态
665 mdadm -f /dev/md1 /dev/sdc2 7.模拟磁盘故障,此时的/proc/mdstat 如图一
676 mdadm -r /dev/md1 /dev/sdc2 8.卸载阵列并移除设备/dev/sdc1,变化如图二
677 watch -n 1 cat /proc/mdstat 每隔一秒查看状态同步状态
688 mdadm /dev/md1 -a /dev/sdc2 9.重新挂载一块盘添加就行,这里我就假设sdc1是新挂载的,恢复到图三
图一:由于我们模拟故障是在用的盘,所以会有recovery操作
图二:移除sdc2盘
图三:新添加进去的盘就会留作备用盘,所以不需要recover
建立软raid 5
我这里由于盘有限,我删除前面的raid1创建命令如下,其他流程的操作命令和raid1一样,这里就不赘述
mdadm -C -v /dev/md1 -l 5 -n 3 /dev/sdc{1,2,3}