软件RAID的实现
- 软件RAID的实现
- 内核模块:md
- 解释:Multi Device多设备
- 查看装载的模块:lsmod-->RAID是md的子模块
- 命令:mdadm
- 用户空间命令
- 它是RAID的管理工具
- 真正RAID的实现靠的是内核模块md
- 作用:将任何块设备做成RAID
- mdadm是模式化的命令:
创建模式:-C
专用选项:
-l:级别
-n:设备个数
-a{yes|no}:是否自动为其创建设备文件
-c:指定数据块(CHUNK)的大小,2^n,默认是CentOS6.x--512K。
-x:指定空闲盘的个数(注意:-n和-x后面跟数字的个数要和后面的磁盘【/dev/sdb /dev/sdc /dev/sdd】的个数一致)
注意:软RAID在每次生成一个CHUNK时候都会计算相对应的磁盘块,这样磁盘性能会下降(针对RAID 0和RAID 5),所以在格式化时候为了提高RAID性能,我们可以指定条带的大小(-E stride),这个数就是CHUNK除以block的结果。
管理模式:--add(-a)添加,--remove(-r)移走,--fail(-f)失败
监控模式:-F
增长模式:-G
装配模式:-A
查看RAID阵列的详细信息:
-D或--detail
mdadm -D /dev/mdb1 或 mdadm --detail /dev/mdb1
停止阵列: 或 --stop
案例:
创建带区卷(条带卷)RAID-0卷
-->创建分区(设置分区类型)
-->创建RAID-0卷(模式化)
-->查看模式化状况
-->格式化
-->挂载
创建2G的RAID 1(制作镜像卷:添加2块磁盘,每个2G)
实验过程:
-->创建磁盘分区
-->为分区设置分区类型
-->创建RAID 0卷
-->格式化镜像卷
-->挂载
-->验证
注意:有时候在创建好md#编号后,重启系统会发现编号变了,解决方案。
备注:将模式化的源信息写入到模式化的配置文件中(重启再查看)。
验证:
测试: - 测试镜像卷的功能
-->在该镜像卷的挂载目录下存些文件(以备测试之用)
-->查看镜像卷的相关信息
-->破坏/dev/sdb2
备注:显示/dev/sdb2被模拟损坏。
-->查看/RAID1下的文件
结果:文件信息完全。
验证:镜像卷的备份储存功能。
-->删除损坏的磁盘,再次查看镜像卷
备注:将损坏的磁盘删除。
备注:再次查看/dev/sdb2没有了。
-->如何修复呢?(实验前先配置实验环境)
-->添加一块磁盘,将该磁盘划分出与移除的分区大小相同的分区。
备注:使用扇区来确定空间更为准确。
-->mdadm -a为镜像分区添加磁盘
在这个过程中,如果要复制的数据比较大,同步时间会多些。其间可以通过watch命令查看同步的过程(需要打开另一终端)。
watch:周期性的执行指定命令,并以全屏方式显示结果。
参数:-n #:指定周期的长度,单位为秒,默认为2秒。
- 停止RAID 1列阵
备注:这样就彻底删除了。 - 重新装载RAID 1阵列
-->查看模拟化状态
- 实际工作中很难记清每块磁盘,所以还有另一种办法很好用。
-->将显示的信息定向到配置文件,当再次装载时就不用再指定具体磁盘了。
-->停止RAID 1
-->激活RAID 1
创建4G的RAID 5(3个磁盘,每个2G)
实验全准备:将上一个实验中的/dev/sdc1和/dev/sdd1从/dev/md1中移除。
实验过程:
fdisk /dev/sdb(/dev/sdc,/dev/sdd)
操作过程:n->p->l->t(fd)->p->w
-->格式化
优化:
-->添加备用分区
mdadm -a /dev/md2 /dev/sdh1
备注:/dev/sdh1是/dev/md2的备份分区。