RAID5
实验

RAID5 是什么:
RAID 5

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高,存储成本相对较便宜。

\begin{align}Size & = (N - 1) \times \min \left(S_1, S_2, \dots, S_N\right)\end{align}



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

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

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

6831D2B00B994F7598033A5CC090ECD1

点击Add 来添加硬盘:

F8B73C85E52C426F88EA10F0338B7933

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

9101CAB844F144A1B302680959204683

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

64A009D5A58D4A14947C7FF1E9D6ACCD

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

93463F868E5441D095E783A31D47873D

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

688D674D08C34A8183F05FB31638D029

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

B046B56678C74805B535769B769A078F

点击ok即可



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

执行:

fdisk -l

8B4496CA262E4E6A83F602950492A3F5

34E18184A58D401E883DFB88406EF4A0

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

执行

reboot

EA35D4A0133B4E33AD1DB23CD2AB8AB2

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

691B0BFDCEA04D53997883F082E115A7

936647FD43484D6FB0EDDFADD7FF7A69

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

它们分别是:

/dev/sde

/dev/sdb

/dev/sdf

/dev/sdd



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

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

执行分区命令 fdisk /dev/sde

3B40130353FE4CADB1781729CCB3FC40

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

77B177B8B3704AF399C27C500F5D291E

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

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

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

A72D3E5F62F9467AA7C8546BE419A235

07DE9ACF699E40C080608A96CD2C6961

39251F893F4D4E82BB375C6E70A3567C



完成了以上的操作,现在我们就可以来创建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

DC6FB437B8824A8E8A28A3F8E9D8C7E9

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

执行 : mdadm --detail /dev/md0

BB324CE725684E49BC6120A75D6F49CC

C16BF37AE36143CB8B004DAFA2E56014

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

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

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

621F20190FD2427291C6FDD349775B13

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

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

执行 mkfs.ext4 /dev/md0

81BEEC3FF7BE4716A394C820CA41698D

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

执行 :

mkdir /mdtest

mount /dev/md0 /mdtest

8B2D7A9E2D8B44E2A2D03C7589DA2B0B

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

执行

cd /mdetest

ls

B6C84E5A382746B7B290CDC888CF846F

我们复制一个文件过来

cp /etc/services .

1D1663481FF840159D54D9487CBEBAAF

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

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

7DF86E7718854DD5B6D938136ECF43D2

626K

我们模拟 /dev/sde1 损坏

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

A0ADF9B3E1744C3CB782B58244A1D6E7
后执行 cat /proc/mdstat
从下面可以看到我们的raid已经开始有动作了
6830E75CAB1C42DCAE95E0B2140FBD41

我们可以知道sde1已经损坏

29067E2F6F5043A1A795DC1DFB02AC70

我们移除坏了的磁盘

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

5093369B4E1E476FBFC49AF50A9F79CA

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

FD32D065A62C49BBA20FCAB60C54F3C7

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

E7AE61F9751842D6AC8B647EA22DBE50

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

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

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

AB2C8214322D406FAE47E242B7CE7C9E

B8900A9B64F74119B32EC195CA739E1B

实验至此 , 移除raid:

按照如下步骤执行:

732FA7BD03C24AFE930AC49BA104CF80

8D66BD20A01A4A889418E2AA66E9FB1C

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

参考: