linux配置软raid/故障模拟

来源:互联网 发布:淘宝买手机售后保修 编辑:程序博客网 时间:2024/06/01 20:17
2017-07-21  坐标--南昌 天气--贼热       午休午休

既然要介绍raid,那么你不得不对raid有所了解,首先我这里就简单的提一下raid0/1/5的区别,那其实还有raid01和raid10这就相当于raid0和raid1组合。具体这里就不赘述了。其实现在随着硬件水平以及价格的优势不断的提升,硬raid越来越被推广,那么软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
[root@milk ~]# 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.导出阵列配置文件
[root@milk ~]# mdadm -Ds >/etc/mdadm.conf
[root@milk ~]# cat /etc/mdadm.conf 
ARRAY /dev/md0 metadata=1.2 name=milk:0 UUID=2dc53fb2:9e1076e4:5c636eec:44dd4375
3.格式化并挂载到指定目录
[root@milk ~]# mkfs.ext4 /dev/md0 
mke2fs 1.41.12 (17-May-2010)
[root@milk ~]# mkdir /raid0
[root@milk ~]# mount /dev/md0 /raid0/
4.修改/etc/fstab永久挂载
[root@milk ~]# vi /etc/fstab
5.查看挂载并测试
[root@milk ~]# 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
[root@milk ~]# cd /raid0/
[root@milk raid0]# touch 1.txt

建立软raid 1
5.创建raid 1 
6.添加1G的热备盘
7.模拟磁盘故障
8.卸载阵列并删除整个阵列

[root@milk12C 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>
[root@milk12C 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}