图形界面确实方便,不过 RAID 和 LVM 一样,主要的应用还是在命令行当中,因为如果硬盘出现了数据损坏,总不能重新安装吧!

本节,我们学习在命令行界面中如何分配和使用 RAID,这次我们仍然使用相同大小的分区配置最为常见的 RAID 5。

建立分区

建立三个 2GB 大小的分区,构建 RAID 5。不过我们多建立了一个 2GB 大小的分区,这个分区用作备份分区。

备份分区的作用是什么呢? RAID 最大的好处就是具有数据冗余功能,当有一块硬盘或分区损坏时,数据不会丟失,只要插入新的硬盘或分区,依赖其他分区就会主动重建损坏的硬盘或分区中的数据。不过这仍然需要关闭服务器,手工插拔硬盘。

如果在组成 RAID 的时候就加入了备份硬盘或备份分区,那么当硬盘或分区损坏时,RAID 会自动用备份硬盘或备份分区代替损坏的硬盘或分区,然后立即重建数据,而不需要人为手工参与。这样就避免了服务器停机和人为手工参与,非常方便,唯一的问题就是需要多余的硬盘或分区作为备份设备。

也就是说,我们在这个实验中需要 4 个 2GB 大小的分区,其中 3 个组成 RAID 5,1 个作为备份分区。建立分区的过程这里不再详细解释,建立完分区之后,可以使用 fdisk -l 命令査看。命令如下:

[root@localhost ~]#fdisk -l
...省略部分输出...
Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xba384969
Device Boot Start End Blocks ld System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 262 2104452 83 Linux
/dev/sdb6 263 524 2104483+ 83 Linux
/dev/sdb7 525 786 2104483+ 83 Linux
/dev/sdb8 787 1048 2104483+ 83 Linux

我们建立了 /dev/sdb5、/dev/sdb6、/dev/sdb7 和 /dev/sdb8 共 4 个 2GB 大小的分区。

建立 RAID 5

建立 RAID 使用 mdadm 命令,命令格式如下:

[root@localhost ~]# mdadm [模式] [RAID设备文件名] [选项]

模式:

  • Assemble:加入一个已经存在的阵列;
  • Build:创建一个没有超级块的阵列;
  • Create:创建一个阵列,每个设备都具有超级块;
  • Manage:管理阵列,如添加设备和删除损坏设备;
  • Misc:允许单独对阵列中的设备进行操作,如停止阵列;
  • Follow or Monitor:监控RAID状态; Grow:改变RAID的容量或阵列中的数目;

选项:

  • -s,-scan:扫描配置文件或/proc/mdstat文件,发现丟失的信息;
  • -D,-detail:查看磁盘阵列详细信息;
  • -C,-create:建立新的磁盘阵列,也就是调用 Create模式;
  • -a,-auto=yes:采用标准格式建立磁阵列
  • -n,-raicklevices=数字:使用几块硬盘或分区组成RAID
  • -l,-level=级别:创建RAID的级别,可以是0,1,5
  • -x,-spare-devices=数字:使用几块硬盘或分区组成备份设备
  • -a,-add 设备文件名:在已经存在的RAID中加入设备
  • -r,-remove 设备文件名名:在已经存在的RAID中移除设备
  • -f,-fail设备文件名:把某个组成RAID的设备设置为错误状态
  • -S,-stop:停止RAID设备
  • -A,-assemble:按照配置文件加载RAID

我们准备创建的是 RAID 5,所以使用以下命令创建:

[root@localhost ~]# mdadm -create -auto=yes /dev/md0-level=5 \
-raid-devices=3 -spare-devices=1 /dev/sdb5/dev/sdb6 /dev/sdb7 /dev/sdb8

其中,/dev/md0 是第一个 RAID 设备的设备文件名,如果还有 RAID 设备,则可以使用 /dev/md[0~9] 来代表。我们建立了一个 RAID 5,使用了三个分区,并建立了一个备份分区。先查看一下新建立的 /dev/md0,命令如下:

[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
#设备文件名
Version : 1.2
Creation Time : Tue Apr 23 23:13:48 2013
#创建时间
Raid Level : raid5
#RAID 级别
Array Size : 4206592 (4.01 GiB 4.31 GB) +RAID #总容量
Used Dev Size : 2103296 (2.01 GiB 2.15 GB)
#每个分区的容量
Raid Devices : 3
#组成 RAID 的设备数
Total Devices : 4
#总设备数
Persistence : Superblock is persistent
Update Time : Tue Apr 23 23:14:52 2013 State : clean
Active Devices : 3
#激活的设备数
Working Devices : 4
#可用的设备数
Failed Devices : 0
#错误的设备数
Spare Devices : 1
#备份设备数
Layout : left-symmetric
Chunk Size : 512K
Name : localhost.localdomain:0 (local to host localhost.localdomain) UOID : 15026b78:126a4930:89d8cf54:5bcb7e95 Events : 18
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
4 8 23 2 active sync /dev/sdb7
#三个激活的分区
3 8 24 - spare /dev/sdb8
#备份分区

再查看一下 /proc/mdstat 文件,这个文件中也保存了 RAID 的相关信息。命令如下:

[root@localhost ~]# cat /proc/mdstat
Personalities:[raid6] [raid5] [raid4]
md0:active raid5 sdb9[4](S) sdb5[0] sdb8[3] sdb6[1]
#RAID名 级别 组成RAID的分区,[数字]是此分区在RAID中的顺序
#(S)代表备份分区
4206592 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
#总block数 等级是5 区块大小 阵列算法 [组成设备数/正常设备数]
unused devices: <none>

格式化与挂载RAID

RAID 5 已经创建,但是要想正常使用,也需要格式化和挂载。格式化命令如下:

[root@localhost ~]# mkfs -t ext4 /dev/md0

挂载命令如下:

[root@localhost ~]# mkdir /raid
#建立挂载点
[root@localhost ~]# mount /dev/md0 /raid/
#挂载/dev/md0
[root@localhost ~]# mount
…省略部分输出…
/dev/md0 on /raid type ext4(rw)
#查看一下,已经正常挂载

生成mdadm配置文件

在 CentOS 6.x 中,mdadm 配置文件并不存在,需要手工建立。我们使用以下命令建立 /etc/mdadm.conf 配置文件:

[root@localhost ~]# echo Device /dev/sdb[5-8] >>/etc/mdadm.conf
#建立/etc/mdadm.conf配置立件,并把组成RAID的分区的设备文件名写入
#注意:如果有多个RAID,则要把所有组成RAID的设备都放入配置文件中;否则RAID设备重启后会丟失
#比如组成RAID 10,就既要把分区的设备文件名放入此文件中,也翻组成RAID 0的RAID 1设备文件名放入
[root@localhost ~]# mdadm -Ds >>/etc/mdadm.conf
#查询和扫描RAID信息,并追加进/etc/mdadm.conf文件
[root@localhost ~]# cat /etc/mdadm.conf
Device /dev/sdb5 /dev/sdb6 /dev/sdb7 /dev/sdb8
ARRAY /dev/md0 metadata: 1.2 spares=1 name=l(xalhost.localdomain:0 UUID=dd821fe5:8597b126:460a3afd:857c7989
#查看文件内容

设置开机后自动挂载

自动挂载也要修改 /etc/fstab 配置文件,命令如下:

[root@localhost ~]# vi /etc/fstab
/dev/mdO /raid
ext4 defaults 12
#加入此行

如果要重新启动,则一定要在这一步完成之后再进行,否则会报错。

启动或停止RAID

RAID 设备生效后,不用手工启动或停止。但是,如果需要卸载 RAID 设备,就必须手工停止 RAID。这里我们学习一下启动和停止 RAID 的方法。先看看停止命令:

[root@localhost ~]# mdadm -S /dev/md0
#停止/dev/md0设备

当然,如果要删除 RAID,则要非常小心,要把所有和 RAID 相关的内容全部删除,才能保证系统不报错。需要进行的步骤如下:

[root@localhost ~]# umount /dev/md0
#卸载RAID
[root@localhost ~】# vi /etc/fstab
/dev/md0 /raid ext4 defaults 12
#删除此行
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
#停止RAID
[root@localhost ~]# vi /etc/mdadm.conf
ARRAY /dev/md0 metadata: 1.2 spares=1 name=localhost.localdomain:0 UUID=dd821fe5:8597b126:460a3afd:857c7989
#删除或者注释此行

如果仅仅是停止,而不是删除,就没有这么麻烦了,只需先下载,再停止即可。那停止完成之后,怎么再启动呢?启动 RAID 的命令如下:

[root@localhost ~]# mdadm -As /dev/md0
mdadm: /dev/md0 has been started with 3 drives and 1 spare.
#启动/dev/md0
[root@localhost ~]# mount /dev/md0 /raid/
#启动RAID后,记得挂载

模拟分区出现故障

我们的 RAID 虽然配置完成了,但是它真的生效了吗?我们模拟磁盘报错,看看备份分区是否会自动代替错误分区。mdadm 命令有一个选项 -f,这个选项的作用就是把一块硬盘或分区变成错误状态,用来模拟 RAID 报错。命令如下:

[root@localhost ~]# mdadm /dev/mdO -f /dev/sdb7 mdadm: set /dev/sdb7 faulty in /dev/mdO、
#模拟/dev/sdb7分区报错
[root@1ocalhost ~】# mdadm -D /dev/mdO /dev/mdO:
...省略部分输出...
Active Devices : 2
Working Devices : 3
Failed Devices : 1
#1个设备报错了
Spare Devices : 1
...省略部分输出...
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
3 8 24 2 spare rebuilding /dev/sdb8
#/dev/sdb8分区正在准备修复
4 8 23 - faulty spare /dev/sdb7
#/dev/sdb7已经报错了

要想看到上面的效果,査看时要快一点,否则修复就可能完成了。因为有备份分区的存在,所以分区损坏了,是不用管理员手工的。如果修复完成,再查看,就会出现下面的情况:

[root@localhost ~]# mdadm /dev/mdO
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
3 8 24 2 active sync /dev/sdb8
4 8 23 - faulty spare /dev/sdb7

备份分区/dev/sdb8已经被激活,但是 /dev/sdb7分区失效。

移除错误分区

既然分区已经报错了,我们就把 /dev/sdb7 分区从 RAID 中删除。如果这是硬盘,就可以进行更换硬盘的处理了。

移除命令如下:

[root@localhost ~]# mdadm /dev/md0
-remove/dev/sdb7
mdadm: hot removed /dev/sdb7 from /dev/mdO

添加新的备份分区

既然分区已经报错,那么我们还需要加入一个新的备份分区,以备下次硬盘或分区出现问题。既然要加入新的备份分区,当然还需要再划分出一个 2GB 大小的分区出来,命令如下:

[root@localhost ~]#fdisk -l
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 *512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes 1512 bytes
Disk identifier: 0x151a68a9
Device Boot Start End Blocks Id System
/dev/sdb1 1 2610 20964793+ 5 Extended
/dev/sdb5 1 262 2104452 83 Linux
/dev/sdb6 263 524 2104483+ 83 Linux
/dev/sdb7 525 786 2104483+ 83 Linux
/dev/sdb8 787 1048 2104483+ 83 Linux
/dev/sdb9 1049 1310 2104483+ 83 Linux

我们新建了 /dev/sdb9 分区,然后把它加入 /dev/md0 作为备份分区,命令如下:

[root@localhost ~]# mdadm /dev/md0 -add /dev/sdb9
mdadm: added /dev/sdb9
#把/dev/sdb9加入/dev/md0
[root@localhost ~]# mdadm -D /dev/md0
...省略部分输出...
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
3 8 24 2 active sync /dev/sdb8
4 8 25 - spare /dev/sdb9
#查看一下,/dev/sdb9已经变成了备份分区

RAID 5配置方法(命令模式)详解相关推荐

  1. (十二)命令模式详解(故事版)- 转

    作者:zuoxiaolong8810(左潇龙),转载请注明出处. 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完善,导致 ...

  2. 设计模式之命令模式详解(附应用举例实现)

    文章目录 1 命令模式介绍 2 命令模式详解 2.1 命令模式结构 2.2 命令模式实现 2.3 命令模式应用举例 3 实现命令队列 1 命令模式介绍 在现实生活中人们通过使用开关来控制一些电器的打开 ...

  3. java 管理员命令模式_java中命令模式详解和使用方法

    命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该 ...

  4. 设计模式之命令模式详解

    1 概述 日常生活中,我们出去吃饭都会遇到下面的场景.我们可以将女招待理解成一个请求的发送者,用户通过它来发送一个"点餐"请求,而厨师是"点餐"请求的最终接收者 ...

  5. 设计模式之命令模式详解(故事版)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 背景:小左是魔都某公司技术部 ...

  6. (十二)命令模式详解(故事版)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处. 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完善,导致 ...

  7. (十二)命令模式详解(故事版) .

    2019独角兽企业重金招聘Python工程师标准>>> 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完 ...

  8. php配置redis哨兵模式,详解Redis哨兵模式

    下面由Redis教程栏目给大家介绍关于java基于redis有序集合实现排行榜,希望对需要的朋友有所帮助! 哨兵是一个独立的进程. 原理:哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个 ...

  9. 组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)

    组合模式 一.组合模式的概念和角色 (一).组合模式的概念 (二).组合模式的角色 二.组合模式的应用场景 三.透明组合模式的代码示例 四.安全组合模式的代码示例 五.组合模式的优缺点 (一).优点 ...

  10. 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)

    模板方法模式 一.模板方法模式的概念和角色 (一).模板方法模式的概念 (二).模板方法模式的角色 二.模板方法模式的应用场景 三. 模板方法模式的代码示例 四.模板方法模式重构JDBC操作业务 五. ...

最新文章

  1. MongoDB 在评论中台的实践
  2. PCB铜箔厚度、线宽与允许通多电流大小的关系
  3. Python3 系列之 编程规范篇
  4. AngularJs学习笔记--Modules
  5. 制作安装媒体来部署额外域控制器
  6. Mybatis中javaType和jdbcType对应和CRUD例子
  7. QComboBox下拉框样式
  8. 自适应机器人:定义工业机械臂的未来
  9. 小程序/CSS的text-decoration属性
  10. zigbee三种组网形式及终端、路由、协调器理解
  11. IPO图(INPUT PROCESS OUTPUT)
  12. 在Android上启用Kiosk模式
  13. 印象笔记Evernote 教程
  14. linux 下dump的使用
  15. IDEA 2019.3 导入导出设置
  16. 一种使用Python自实现KMeans++聚类算法的写法
  17. 云计算可能产生的十大负面影响
  18. 常耀俊老师经典《工程项目管理实战》课程
  19. FDTD快速入门之Lumerical脚本语言Pickup(一)序言
  20. 火狐firefox插件:Tab Center Reborn 侧边垂直标签栏【隐藏顶部标签栏】

热门文章

  1. 光纤跟宽带的区别在哪?
  2. android 三星打印机,安卓逆袭传统 三星X4300LX复合机首测
  3. JS实现网页开关灯效果
  4. 1556_AURIX_TC275_复位系统控制单元
  5. 行内元素、块元素、行内块元素的区别
  6. android 友盟渠道号,获取友盟渠道号
  7. android 仿苹果 小组件,安卓玩烂的小组件 iOS怎么又给捡起来了?
  8. 锐捷框式交换机日常维护与故障排查
  9. 修复 Rancher 2.5.x 内部证书过期导致无法启动的顽疾
  10. vue html 原始 模板,vue系列3--模板语法(示例代码)