RAID 5配置方法(命令模式)详解
图形界面确实方便,不过 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配置方法(命令模式)详解相关推荐
- (十二)命令模式详解(故事版)- 转
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完善,导致 ...
- 设计模式之命令模式详解(附应用举例实现)
文章目录 1 命令模式介绍 2 命令模式详解 2.1 命令模式结构 2.2 命令模式实现 2.3 命令模式应用举例 3 实现命令队列 1 命令模式介绍 在现实生活中人们通过使用开关来控制一些电器的打开 ...
- java 管理员命令模式_java中命令模式详解和使用方法
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该 ...
- 设计模式之命令模式详解
1 概述 日常生活中,我们出去吃饭都会遇到下面的场景.我们可以将女招待理解成一个请求的发送者,用户通过它来发送一个"点餐"请求,而厨师是"点餐"请求的最终接收者 ...
- 设计模式之命令模式详解(故事版)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 背景:小左是魔都某公司技术部 ...
- (十二)命令模式详解(故事版)
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完善,导致 ...
- (十二)命令模式详解(故事版) .
2019独角兽企业重金招聘Python工程师标准>>> 背景:小左是魔都某公司技术部的一名屌丝程序猿,每天的工作就是维护一个20世纪的古董级项目,由于公司不大,所以公司很多制度不太完 ...
- php配置redis哨兵模式,详解Redis哨兵模式
下面由Redis教程栏目给大家介绍关于java基于redis有序集合实现排行榜,希望对需要的朋友有所帮助! 哨兵是一个独立的进程. 原理:哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个 ...
- 组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)
组合模式 一.组合模式的概念和角色 (一).组合模式的概念 (二).组合模式的角色 二.组合模式的应用场景 三.透明组合模式的代码示例 四.安全组合模式的代码示例 五.组合模式的优缺点 (一).优点 ...
- 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)
模板方法模式 一.模板方法模式的概念和角色 (一).模板方法模式的概念 (二).模板方法模式的角色 二.模板方法模式的应用场景 三. 模板方法模式的代码示例 四.模板方法模式重构JDBC操作业务 五. ...
最新文章
- MongoDB 在评论中台的实践
- PCB铜箔厚度、线宽与允许通多电流大小的关系
- Python3 系列之 编程规范篇
- AngularJs学习笔记--Modules
- 制作安装媒体来部署额外域控制器
- Mybatis中javaType和jdbcType对应和CRUD例子
- QComboBox下拉框样式
- 自适应机器人:定义工业机械臂的未来
- 小程序/CSS的text-decoration属性
- zigbee三种组网形式及终端、路由、协调器理解
- IPO图(INPUT PROCESS OUTPUT)
- 在Android上启用Kiosk模式
- 印象笔记Evernote 教程
- linux 下dump的使用
- IDEA 2019.3 导入导出设置
- 一种使用Python自实现KMeans++聚类算法的写法
- 云计算可能产生的十大负面影响
- 常耀俊老师经典《工程项目管理实战》课程
- FDTD快速入门之Lumerical脚本语言Pickup(一)序言
- 火狐firefox插件:Tab Center Reborn 侧边垂直标签栏【隐藏顶部标签栏】
热门文章
- 光纤跟宽带的区别在哪?
- android 三星打印机,安卓逆袭传统 三星X4300LX复合机首测
- JS实现网页开关灯效果
- 1556_AURIX_TC275_复位系统控制单元
- 行内元素、块元素、行内块元素的区别
- android 友盟渠道号,获取友盟渠道号
- android 仿苹果 小组件,安卓玩烂的小组件 iOS怎么又给捡起来了?
- 锐捷框式交换机日常维护与故障排查
- 修复 Rancher 2.5.x 内部证书过期导致无法启动的顽疾
- vue html 原始 模板,vue系列3--模板语法(示例代码)