在 Linux 下使用 RAID(四):创建 RAID 5(条带化与分布式奇偶
在 RAID 5 中,数据条带化后存储在分布式奇偶校验的多个磁盘上。分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上,这样会有很好的数据冗余。
在 Linux 中配置 RAID 5
对于此 RAID 级别它至少应该有三个或更多个磁盘。RAID 5 通常被用于大规模生产环境中,以花费更多的成本来提供更好的数据冗余性能。
什么是奇偶校验?
奇偶校验是在数据存储中检测错误最简单的常见方式。奇偶校验信息存储在每个磁盘中,比如说,我们有4个磁盘,其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一个磁盘出现故障,我们可以通过更换故障磁盘后,从奇偶校验信息重建得到原来的数据。
RAID 5 的优点和缺点
- 提供更好的性能。
- 支持冗余和容错。
- 支持热备份。
- 将用掉一个磁盘的容量存储奇偶校验信息。
- 单个磁盘发生故障后不会丢失数据。我们可以更换故障硬盘后从奇偶校验信息中重建数据。
- 适合于面向事务处理的环境,读操作会更快。
- 由于奇偶校验占用资源,写操作会慢一些。
- 重建需要很长的时间。
要求
创建 RAID 5 最少需要3个磁盘,你也可以添加更多的磁盘,前提是你要有多端口的专用硬件 RAID 控制器。在这里,我们使用“mdadm”包来创建软件 RAID。
mdadm 是一个允许我们在 Linux 下配置和管理 RAID 设备的包。默认情况下没有 RAID 的配置文件,我们在创建和配置 RAID 后必须将配置文件保存在一个单独的文件 mdadm.conf 中。
在进一步学习之前,我建议你通过下面的文章去了解 Linux 中 RAID 的基础知识。
- 介绍 RAID 的级别和概念 http://www.linuxidc.com/Linux/2015-08/122191.htm
- 使用 mdadm 工具创建软件 RAID 0 (条带化) http://www.linuxidc.com/Linux/2015-08/122236.htm
- 用两块磁盘创建 RAID 1(镜像) http://www.linuxidc.com/Linux/2015-08/122289.htm
- 如何在Linux上构建 RAID 10阵列 http://www.linuxidc.com/Linux/2014-12/110318.htm
- Debian软RAID安装笔记 - 使用mdadm安装RAID1 http://www.linuxidc.com/Linux/2013-06/86487.htm
- 常用RAID技术介绍以及示例演示(多图) http://www.linuxidc.com/Linux/2013-03/81481.htm
- Linux实现最常用的磁盘阵列-- RAID5 http://www.linuxidc.com/Linux/2013-01/77880.htm
- RAID0+1和RAID5的性能测试结果 http://www.linuxidc.com/Linux/2012-07/65567.htm
- Linux入门教程:磁盘阵列(RAID) http://www.linuxidc.com/Linux/2014-07/104444.htm
我的服务器设置
<span class="pun">操作系统</span><span class="pun">:</span><span class="typ">CentOS</span><span class="lit">6.5</span><span class="typ">Final</span>
<span class="pln">IP </span><span class="pun">地址</span><span class="pun">:</span><span class="lit">192.168</span><span class="pun">.</span><span class="lit">0.227</span>
<span class="pun">主机名</span><span class="pun">:</span><span class="pln"> rd5</span><span class="pun">.</span><span class="pln">tecmintlocal</span><span class="pun">.</span><span class="pln">com</span>
<span class="pun">磁盘</span><span class="lit">1</span><span class="pun">[</span><span class="lit">20GB</span><span class="pun">]</span><span class="pun">:</span><span class="str">/dev/</span><span class="pln">sdb</span>
<span class="pun">磁盘</span><span class="lit">2</span><span class="pun">[</span><span class="lit">20GB</span><span class="pun">]</span><span class="pun">:</span><span class="str">/dev/</span><span class="pln">sdc</span>
<span class="pun">磁盘</span><span class="lit">3</span><span class="pun">[</span><span class="lit">20GB</span><span class="pun">]</span><span class="pun">:</span><span class="str">/dev/</span><span class="pln">sdd</span>
这是9篇系列教程的第4部分,在这里我们要在 Linux 系统或服务器上使用三个20GB(名为/dev/sdb, /dev/sdc 和 /dev/sdd)的磁盘建立带有分布式奇偶校验的软件 RAID 5。
第1步:安装 mdadm 并检验磁盘
1、 正如我们前面所说,我们使用 CentOS 6.5 Final 版本来创建 RAID 设置,但同样的做法也适用于其他 Linux 发行版。
<span class="com"># lsb_release -a</span>
<span class="com"># ifconfig | grep inet</span>
CentOS 6.5 摘要
2、 如果你按照我们的 RAID 系列去配置的,我们假设你已经安装了“mdadm”包,如果没有,根据你的 Linux 发行版使用下面的命令安装。
<span class="com"># yum install mdadm [在 RedHat 系统]</span>
<span class="com"># apt-get install mdadm [在 Debain 系统]</span>
3、 “mdadm”包安装后,先使用fdisk
命令列出我们在系统上增加的三个20GB的硬盘。
<span class="com"># fdisk -l | grep sd</span>
安装 mdadm 工具
4、 现在该检查这三个磁盘是否存在 RAID 块,使用下面的命令来检查。
<span class="com"># mdadm -E /dev/sd[b-d]</span>
<span class="com"># mdadm --examine /dev/sdb /dev/sdc /dev/sdd # 或</span>
检查 Raid 磁盘
注意: 上面的图片说明,没有检测到任何超级块。所以,这三个磁盘中没有定义 RAID。让我们现在开始创建一个吧!
第2步:为磁盘创建 RAID 分区
5、 首先,在创建 RAID 前磁盘(/dev/sdb, /dev/sdc 和 /dev/sdd)必须有分区,因此,在进行下一步之前,先使用fdisk
命令进行分区。
<span class="com"># fdisk /dev/sdb</span>
<span class="com"># fdisk /dev/sdc</span>
<span class="com"># fdisk /dev/sdd</span>
创建 /dev/sdb 分区
请按照下面的说明在 /dev/sdb 硬盘上创建分区。
- 按
n
创建新的分区。 - 然后按
P
选择主分区。选择主分区是因为还没有定义过分区。 - 接下来选择分区号为1。默认就是1。
- 这里是选择柱面大小,我们没必要选择指定的大小,因为我们需要为 RAID 使用整个分区,所以只需按两次 Enter 键默认将整个容量分配给它。
- 然后,按
P
来打印创建好的分区。 - 改变分区类型,按
L
可以列出所有可用的类型。 - 按
t
修改分区类型。 - 这里使用
fd
设置为 RAID 的类型。 - 然后再次使用
P
查看我们所做的更改。 - 使用
w
保存更改。
创建 sdb 分区
注意: 我们仍要按照上面的步骤来创建 sdc 和 sdd 的分区。
创建 /dev/sdc 分区
现在,通过下面的截图给出创建 sdc 和 sdd 磁盘分区的方法,或者你可以按照上面的步骤。
<span class="com"># fdisk /dev/sdc</span>
创建 sdc 分区
创建 /dev/sdd 分区
<span class="com"># fdisk /dev/sdd</span>
创建 sdd 分区
6、 创建分区后,检查三个磁盘 sdb, sdc, sdd 的变化。
<span class="com"># mdadm --examine /dev/sdb /dev/sdc /dev/sdd</span>
<span class="com"># mdadm -E /dev/sd[b-c] # 或</span>
检查磁盘变化
注意: 在上面的图片中,磁盘的类型是 fd。
7、 现在在新创建的分区检查 RAID 块。如果没有检测到超级块,我们就能够继续下一步,在这些磁盘中创建一个新的 RAID 5 配置。
Check Raid on Partition
*在分区中检查 RAID *
第3步:创建 md 设备 md0
8、 现在使用所有新创建的分区(sdb1, sdc1 和 sdd1)创建一个 RAID 设备“md0”(即 /dev/md0),使用以下命令。
<span class="com"># mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1</span>
<span class="com"># mdadm -C /dev/md0 -l=5 -n=3 /dev/sd[b-d]1 # 或</span>
9、 创建 RAID ��备后,检查并确认 RAID,从 mdstat 中输出中可以看到包括的设备的 RAID 级别。
<span class="com"># cat /proc/mdstat</span>
验证 Raid 设备
如果你想监视当前的创建过程,你可以使用watch
命令,将 cat /proc/mdstat
传递给它,它会在屏幕上显示且每隔1秒刷新一次。
<span class="com"># watch -n1 cat /proc/mdstat</span>
监控 RAID 5 构建过程
Raid 5 过程概要
10、 创建 RAID 后,使用以下命令验证 RAID 设备
<span class="com"># mdadm -E /dev/sd[b-d]1</span>
验证 Raid 级别
注意: 因为它显示三个磁盘的信息,上述命令的输出会有点长。
11、 接下来,验证 RAID 阵列,假定包含 RAID 的设备正在运行并已经开始了重新同步。
<span class="com"># mdadm --detail /dev/md0</span>
验证 RAID 阵列