LINUX raid知识
说明:RAID分为软 RAID和硬件 RAID
软件 RAID是基于系统的软件工作
不稳定,如果系统坏了,RAID整列也就损坏,容易造成数据丢失
下面我们要讲的基于 LINUX系统的软件 RAID
在 LINUX下管理 RAID阵列的工具是 mdadm工具
mdadm程序是一个独立的程序,能完成所有的软 RAID管理功能
主要有7 种使用模式:
Create 使用空闲的设备创建一个新的阵列,每个设备具有元数据块
Assemble 将原来属于一个阵列的每个块设备组装为阵列
Build 创建或组装不需要元数据的阵列,每个设备没有元数据块
Manage 管理已经存储阵列中的设备,比如增加热备磁盘或者设置某个磁盘失效,然后从阵列中删除这个
磁盘
Misc 报告或者修改阵列中相关设备的信息,比如查询阵列或者设备的状态信息
Grow 改变阵列中每个设备被使用的容量或阵列中的设备的数目
Monitor 监控一个或多个阵列,上报指定的事件
由于这个工具太强大,不能一一为大家讲解
我们今天主要讲创建任意级别的 RAID,和如何删除这个 RAID
至于管理就只有您自己下来找资料研究了
往往廉价的东西,用的人都多
RAID分区的 ID是 fd 请大家记住
(以上说明部分来自互联网,省的自己写了哈)
创建 raid的流程就是:
第一步:创建分区
现在我们先来做几个分区来做软raid 哦
查看一下创建的分区
由于分区默认的格式是83(Linux),需要我们修改一下id,依次修改5—9 分区的格式
修改id 后,查看一下
保存分区退出
第二步:创建 RAID
分区创建完后,现在我们来做软raid,需要使用mdadm 这个命令来创建raid
下面创建raid 5, 用4 个分区做raid,用1 个分区来做热备分区,-n 和-x 都可以指定多个
注:系统默认有个 md0可以给我们用,如果我要多个 raid的话,就需要自己创建设备了,创建 raid设备
块的命令 mknod /dev/md01 b 9 1
注释:
man帮助中的例子:mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hd[ac]1
-C 代表创建
-l 代表创建的级别
-n 代表活动的分区,也就是你要给这个级别多少个分区
-x 就是热备份的分区
解释图:-x:是热备分区,raid至少需要 3个分区
第三步:查看创建好 RAID的状态
命令:mdadm --detail /dev/md0、mdadm -D /dev/md0
sdb5、sdb6、sdb7、sdb8 是raid 的成员,激活状态;sdb9 是热备分区
第四步:格式化并挂载 RAID设备
创建目录并挂载raid 阵列设备,在raid 里面创建文件
博客地址:http://wqmsl.blog.51cto.com
第五步:故障模拟和恢复
模拟一个raid 故障
状态如下图:sdb5 已经不在raid 成员内了
然后我们从raid 里删除掉sdb5
再看一下状态,sdb5 已经不在列表中了,原热备分区sdb9 已经到raid 成员中并激活
看看数据还是没有错
其他额外知识补充:
1、查看/dev/md0 设备是否存在,以及它的容量;
fdisk -l /dev/md0
df -lh /dev/md0
注:如果您想要用分区操作,用 fdisk /dev/md0
2、向一个既已存在 RAID 中添加或移除一个硬盘或分区,要用 mdadm 工具的-f -r -a参数
mdadm /dev/mdX -f RAID成员
mdadm /dev/mdX -r RAID成员
mdadm /dev/mdX -a RAID成员
注:
-f 同 --fail 表示把一个设备列为有问题的设备,以便用-r 或--remove参数移除;
-r 同 --remove 表示把 RAID 中的一个成员移出 RAID;
-a 同 --add 表示向一个 RAID中添加一个成员;
--re-add 重新把最近移除的 RAID成员重新添加到 RAID 中;
值得一提的是,这些参数的运用,必须是在RAID 正常运行的情况下进行。其中RAID 设备是/dev/mdX,
X 是一个大于0 的整数,RAID 成员是一个硬盘或分区。添加设备并不会把RAID 的容量扩大,仅仅是为
了添加备用成员,比如在RAID1、RAID5 和RAID10 中有用。当一个RAID 成员发生故障的时候,要用这
种办法来让新成员顶替工作(后面讲扩容了);
3、为 RAID 进行扩充容量;
在这里我们要用到RAID 的Grow 模式,也就是增长模式。扩充模式,极为简单,有--size 参数,-n 参数--size
是指大定RAID 的大小,这个可以省略,具体由你所做的RAID 级别而定。-n 代表RAID 真正成员的
个数。在这个例子中,RAID5 真正成员是3 个,后来我们又添加了一个备用成员/dev/sdb2 进去。我们所做
的就是把这个备用成员“推”到真正成员的位置上。也就是说RAID 的真正成员由3 个变成4 个。只是这一
简单的指令,就可以让RAID5 容量增加起来。
我单纯的使用-a的参数并不能使容量增大,默认是添加到了热备分区上面
下面来解决这个问题
mdadm -G /dev/md0 -n4 ————>这样就把热备的分区添加到了 raid成员中了,容量也扩大了哦
4、清除一个 RAID 成员的超级块存储存的 RAID 信息;
RAID 成员在superblock 中所存储的RAID 信息是极为重要的,我们可以根据这个信息轻松恢复RAID。
mdadm --zero-superblock RAID成员;
如果你确认RAID 成员这个成员对你没任何用处,你已经把这个成员移除RAID,并且您想把这个设备另
作他用。这时你可以清除其superblock 的信息。比如;
# mdadm --zero-superblock /dev/sdb12
这个示例就是清除/dev/sdd3 中的超级块中所存储的RAID 信息;
由于raid 需要开机不会自动激活,也没有配置文件,需要手动去添加配置文件使其激活
生成开机激活需要的配置文件
命令:mdadm -D --scan > /etc/mdadm.conf
修改fstab 文件,使raid 开机自动挂载
其他详细的说明可参看,在我的电脑
中的下面PDF 文档里
MBR 修复
详细步骤:
备份 MBR扇区数据
1.由于MBR 扇区中包含了整个硬盘的分区表记录,因此要把MBR 备份到其他存储设备中,
这里我们就添加另一块硬盘hdb 进行备份。
2.在命令提示符下输入以下命令,进行备份操作。
[root@localhost ~]#mkdir /backup //创建挂载hdb1 文件夹
[root@localhost ~]#mount /dev/hdb1 /backup //把hdb1 挂载到backup 文件夹下
[root@localhost ~]#dd if=/dev/hdb1 of=/backup/hda.mar.bak bs=512 count=1 //使用dd 命令进行
备份
模拟 MBR扇区故障
这里仍然使用dd 命令,认为地将MBR 扇区记录覆盖。
[root@localhost ~]#dd if=/dev/zero of=/dev/hda bs=512 count=1 //从空设备文件zero 中读取512
字节的数据,将其覆盖到第一块硬盘(hda),从而破坏MBR 扇区中的数据。
从备份文件中恢复 MBR扇区数据
1.把系统光盘放入光驱,重启Linux 系统。系统启动时按“F2”键,在“boot:”提示符下输入“linux
rescue”后“回车”,进入“急救模式”引导光盘中的Linux 系统。之后依次按回车键接收默认的
语言、键盘格式,提示是否配置网卡是一般选择“NO”,然后系统会自动查找硬盘中的Linux
分区并尝试将其挂载到“/mnt/sysimage”目录(选择“Continue”确认并继续)。接下来需要特别
注意:当出现是否初始化磁盘的警告窗口时,一定要选择“NO”,以免对硬盘数据造成进一
步损坏。最后选择“OK”确认后将进入到带“sh-3.1#”提示符的Bash Shell 环境。
2.在提示符下输入以下命令:
shsh-3.1# mkdir /tmpdir //创建挂载文件夹
shsh-3.1# mount /dev/hdb1 /tmpdir //挂载带有备份文件的分区
shsh-3.1# dd if=/tempdir/hdb.mbr.bak of=/dev/sda bs=512 count=1 //恢复备份数据
shsh-3.1# reboot //重启操作系统,完成修复c