说明:本实验没有用到多个磁盘,而是利用单个磁盘划分出的多个分区来仿真的,如果在实际项目中,请依情况而定。

1. 分区

我这里划分6个分区,用4个分区组成RAID 5,用1个分区作为spare disk,还有1个分区是做失效恢复时需要的。

[root@echoyang2 ~]# fdisk /dev/vdd

分第一个区,分别按下:n,p,1,Enter,+1024M

分第二个区,分别按下:n,p,2,Enter,+1024M

分第三个区,分别按下:n,p,3,Enter,+1024M

分扩展分区,分别按下:n,e,4,Enter,+3072M

分第四个区,分别按下:n,Enter,+1024M   (编号为5)

分第五个区,分别按下:n,Enter,+1024M   (编号为6)

分第六个区,分别按下:n,Enter,Enter       (编号为7)

保存刚才的动作,按下:w

检查是否有这6个分区文件:

[root@echoyang2 ~]# ls -l /dev/vdd{1,2,3,5,6}

2. 开始制作RAID 5设备

注:如果没有mdadm命令,请先安装:

yum install mdadm -y

[root@echoyang2 ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/vdd{1,2,3,5,6}

查看RAID 5的详情:

[root@echoyang2 ~]# mdadm --detail /dev/md0

或者使用这种方式来看:

[root@echoyang2 ~]# cat /proc/mdstat

等待一段时间后,会发现所有磁盘已经就位:

3. 格式化并挂载使用我们的RAID 5

[root@echoyang2 ~]# mke2fs -t ext4 /dev/md0

[root@echoyang2 ~]# mkdir /mnt/raid
[root@echoyang2 ~]# mount /dev/md0 /mnt/raid

在/mnt/raid目录中任意创建文件或文件夹,我们开始做测试:

[root@echoyang2 raid]# pwd

/mnt/raid

[root@echoyang2 raid]# mkdir test; touch test/test.txt; echo "Just a raid test" > test/test.txt

4. 模拟故障并恢复

[root@echoyang2 ~]# mdadm --manage /dev/md0 --fail /dev/vdd5

检查详情:

[root@echoyang2 ~]# mdadm --detail /dev/md0

分区5被标记为faulty,分区6在重建。

查看恢复的进度:

等待一段时间之后,查看是否重建完毕。

将错误的分区移出去,并加入新的分区:

[root@echoyang2 ~]# mdadm --manage /dev/md0 --add /dev/vdd7 --remove /dev/vdd5

执行上面的步骤后,再次检查/dev/md0的详情。

这一切都是在线操作的,所以比较方便。

5. 开机自动启动raid,并自动挂载

[root@echoyang2 ~]# mdadm --detail /dev/md0 | grep -i UUID

复制出现的UUID。

[root@echoyang2 ~]# vim /etc/mdadm.conf

ARRAY /dev/md0 UUID=[这是刚才复制的UUID]

[root@echoyang2 ~]# vim /etc/fstab

/dev/md0   /mnt/raid   ext4   defaults   1   2

[root@echoyang2 ~]# umount /mnt/raid; mount -a

[root@echoyang2 ~]# df /mnt/raid

6. 关闭RAID

[root@echoyang2 ~]# umount /mnt/raid

[root@echoyang2 ~]# vim /etc/fstab      去掉注释行

[root@echoyang2 ~]# mdadm --stop /dev/md0

[root@echoyang2 ~]# vim /etc/mdadm.conf  去掉注释行

最新文章

  1. 【poj2096】 Collecting Bugs
  2. 关于Java数组
  3. linux下U盘文件只读的解决办法
  4. python---生成随机密码
  5. c++(vs上)与g++(linux下)对于++操作的汇编代码解读
  6. [转] js prototype详解
  7. ubuntu1204上不能正常用emacs配合gocode进行自动补全
  8. 一个基于集成jenkins的测试平台
  9. 【Xamarin挖墙脚系列:Xamarin的终极破解步骤(更新)】
  10. 怎样为ubuntu eclipse 添加 GBK字符集
  11. 融云(找到“每个App都有沟通的需求”的细分市场)
  12. CPU内存管理和linux内存分页机制
  13. SSM中(Spring-SpringMVC-Mybatis)(二:整合)
  14. python/Djangof分页与自定义分页
  15. 如何用Electron Js创建第一个应用Hello World
  16. 未来-区块链-Micron:区块链永远不会忘记:内存对这项革命性技术的推动作用
  17. spring 单元测试方法及其错误整理
  18. JavaScript面试技巧(二):JS-Web-API
  19. mysql灾备演练问题
  20. 简述Ajax原理及实现步骤

热门文章

  1. HTML5游戏实战(1):50行代码实现正面跑酷游戏
  2. PHP Warning: 的解决方法
  3. 2. Spring Boot返回json数据【从零开始学Spring Boot】
  4. 【转】oracle建立本地数据库
  5. css 中 important 的用法
  6. Oracle LOB字段判空
  7. Docker DevOps实战: 一分钟搭建Hexo博客
  8. 走进windows编程的世界-----消息处理函数(3)
  9. yarn-1.12.3.msi 下载地址 百度网盘
  10. kubernetes高级之动态准入控制