RAID5实验



RAID5 是什么:

RAID5实验_Linux

RAID Level 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分割)技术。RAID5 至少需要三顆硬碟, RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储於不同的磁盘上。当RAID5的一个磁盘数据发生损坏後,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比鏡像低而磁盘空间利用率要比鏡像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相當的慢,若使用「回寫快取」可以讓效能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。


RAID5实验_运维_02






从上面我们可以知道RAID5至少需要有三科硬盘,由于条件的限制,我只能在虚拟机上做实验了。


这个实验我需要四块硬盘,所以我们在虚拟机上虚拟出4块硬盘。


首先我们来虚拟机添加硬盘:


RAID5实验_Linux_03

点击Add 来添加硬盘:

RAID5实验_Linux_04


接下来选择添加新的虚拟硬盘:


RAID5实验_RAID5实验_05


接下来选择虚拟硬盘额类型:


RAID5实验_运维_06


接下来就是选择虚拟硬盘的大小了,我这里选择每块5GB的容量:


RAID5实验_Linux_07


这里是编辑虚拟硬盘的在物理机上的文件名,我们选择默认即可:


RAID5实验_RAID_08


照着如此的步骤我们添加了四块虚拟硬盘,下面就是我们添加的:

RAID5实验_Linux_09


点击ok即可






下面我们来到操作系统里面看看有没有添加进去:

执行:

fdisk -l

RAID5实验_RAID_10

RAID5实验_RAID5实验_11


看起来是没有,但是为什么呢,因为在虚拟机添加新的硬盘后需要重新启动一下:

执行

reboot

RAID5实验_RAID_12


重启完毕后我们在登录,再来执行fdisk -l 看看:

RAID5实验_Linux_13

RAID5实验_RAID_14


从上面的图我们可以看到,我们新添加的硬盘已经被系统识别出来了,可以看到他们的容量都是5GB:


它们分别是:


/dev/sde

/dev/sdb

/dev/sdf

/dev/sdd






现在我们要做的事情就是分区


首先来对 /dev/sde 这个硬盘进行分区:


执行分区命令 fdisk /dev/sde


RAID5实验_运维_15


按照以上的步骤我们在 /dev/sde 上创建了一个主分区,我们看看分区表


RAID5实验_RAID5实验_16


可以看到新的分区已经被创建出来了,最后我们键入 w 后按回车键保存。


其他的硬盘也是按照上面的步骤来操作


下面是分区后总的分区表:

RAID5实验_RAID_17

RAID5实验_RAID5实验_18

RAID5实验_RAID_19






完成了以上的操作,现在我们就可以来创建RAID了:


执行:


mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sde1 /dev/sdb1 /dev/sdf1 /dev/sdd1

意思是创建RAID设备名为md0, 级别为RAID 5


RAID5实验_Linux_20


创建完以后,我们来看看我们创建的RAID:


执行 : mdadm --detail /dev/md0


RAID5实验_Linux_21

RAID5实验_RAID5实验_22


看来我们已经创建成功了 , 下面我们让系统开机的时候自动识别raid:


执行 mdadm -D --scan > /etc/mdadm.conf


RAID默认的配置文件名是 mdadm.conf ,有一点要注意,这个文件默认是不存在的


RAID5实验_Linux_23


mdadm.conf文件主要由以下部分组成:DEVICES选项制定组成RAID所有设备, ARRAY选项指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号.


接下来为/dev/md0创建文件系统:


执行 mkfs.ext4 /dev/md0


RAID5实验_RAID5实验_24


我们来挂载/dev/md0 到 /mdtest 看看是否可用


执行 :


mkdir /mdtest


mount /dev/md0 /mdtest


RAID5实验_运维_25


我们进入 /mdtest 目录 , 看看里面有什么内容


执行


cd /mdetest


ls

RAID5实验_Linux_26


我们复制一个文件过来


cp /etc/services .


RAID5实验_Linux_27


现在我们假设其中一个硬盘坏了,我们可以用备用的硬盘来替换坏了的硬盘,我们来模拟下硬盘损坏:


先来看看我们刚刚复制我过来文件的大小:

RAID5实验_RAID5实验_28


626K



我们模拟 /dev/sde1 损坏


执行:mdadm /dev/md0 --fail /dev/sde1


RAID5实验_运维_29
后执行 cat /proc/mdstat

从下面可以看到我们的raid已经开始有动作了
RAID5实验_RAID_30

我们可以知道sde1已经损坏


RAID5实验_运维_31


我们移除坏了的磁盘


mdadm /dev/md0 --remove /dev/sde1


RAID5实验_Linux_32


下图可以看出我们已经删除了 /dev/sde1 设备了


RAID5实验_RAID5实验_33


现在再来看看我们刚刚复制文件的大小:

RAID5实验_Linux_34


还是一样626k说明我们的raid是起作用的


现在演示增加一块磁盘,用于换上新的硬盘


mdadm /dev/md0 --add /dev/sde1


RAID5实验_Linux_35


RAID5实验_运维_36



实验至此 , 移除raid:


按照如下步骤执行:


RAID5实验_RAID5实验_37

RAID5实验_RAID_38


至此实验完毕,谢谢大家 ^_^



参考:

http://zh.wikipedia.org/zh-cn/RAID

http://g.51cto.com/article.php?domains=ckfwy&authorid=1536812&topicid=600352&gid=83

http://www.opsers.org/base/detailed-set-up-linux-software-raid-5-tutorial-environment.html