CentOS 6.3下配置软RAID(Software RAID)

一、RAID 简介

RAID 是英文Redundant Array of Independent Disks 的缩写,翻译成中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。

简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份的技术。

组成磁盘阵列的不同方式称为RAID级别(RAID Levels),常见的RAID Level 包括raid0, raid1, raid5, raid10。

各level 对比如下:

RAID等级

最少硬盘

最大容错

可用容量

读取性能

写入性能

安全性

目的

应用产业

0

2

0

n

n

n

一个硬盘异常,全部硬盘都会异常

追求最大容量、速度

3D产业实时渲染、视频剪接高速缓存

1

2

n-1

1

n

1

最高,一个正常即可

追求最大安全性

个人、企业备份

5

3

1

n-1

n-1

n-1

追求最大容量、最小预算

个人、企业备份

10

4

n/2

n/2

n

n/2

安全性高

综合RAID 0/1优点,理论速度较快

大型数据库、服务器

说明:n 代表硬盘总数

关于RAID的详细介绍,请参考:http://zh.wikipedia.org/wiki/RAID

二、系统环境

实验环境:Oracle VM VirtualBox

系统平台:CentOS release 6.3 (Final)

mdadm 版本:mdadm - v3.2.6 - 25th October 2012

三、设置磁盘

在Oracle VM VirtualBox 里模拟物理增加磁盘,在这篇文章中,我们将创建RAID0, RAID1, RAID5分区,RAID0 需要两块硬盘,RAID1 需要两块硬盘,RAID5需要四块硬盘,所以在这里添加了八块物理硬盘,每块5.00 GB.

wps2E68.tmp

在Linux 系统里使用fdisk –l 命令查看。

wps2E88.tmp

四、安装mdadm

mdadm 是multiple devices admin 的简称,它是Linux下的一款标准的软件RAID 管理工具。

4.1 查看是否安装了mdadm软件

# rpm -qa|grep mdadm

wps2E89.tmp

4.2 如果未安装,则使用yum 方式安装。

wps2E9A.tmp

准备工作完毕,下面可以着手创建raid 了。

五、创建RAID0

5.1 新建分区

创建RAID0 需要两块硬盘,所以我们拿/dev/sdb 和/dev/sdc 来实验。

# fdisk /dev/sdb        //对sdb 进行分区

输入"m", 获取帮助,输入"p", 查看分区前磁盘状态,其他Command action 具体含义请自行Google, Baidu。

wps2E9B.tmp

输入"n" 新建分区,这里我们将整个磁盘都划分成一个分区,然后输入"p" 查看分区情况。

wps2E9C.tmp

5.2 修改分区类型

默认新建分区的类型是Linux,代号83,我们需要将其修改为raid 类型。输入"t" ,然后输入"L" 列出所有的文件格式,这里我们选择"fd Linux raid auto", 输入"fd",然后再输入"p" 查看分区情况,这是分区格式已经变成了Linux raid autodetect.

wps2E9D.tmp

5.3 保存分区

输入"w" 保存分区。

wps2E9E.tmp

使用同样方法对/dev/sdc 进行分区操作。

5.4 同步分区情况

使用partprobe 命令同步分区情况。

wps2EDD.tmp

5.5 查看现在的状态

# fdisk -l /dev/sdb /dev/sdc

wps2EDE.tmp

5.6 开始创建RAID0

# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1

wps2EFF.tmp

说明:

-C --create 创建阵列;

-a --auto 同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;

-l  --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n     --raid-devices    阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;

/dev/md0 阵列的设备名称;

/dev/sd{b,c}1  参与创建阵列的磁盘名称;

5.7 查看raid0 状态

# cat /proc/mdstat

# mdadm -D /dev/md0

wps2F6D.tmp

说明:Raid Level : 阵列级别;

Array Size : 阵列容量大小;

Raid Devices : RAID成员的个数;

Total Devices : RAID中下属成员的总计个数,因为还有冗余硬盘或分区,也就是spare,为了RAID的正常运珩,随时可以推上去加入RAID的;

State : clean, degraded, recovering 状态,包括三个状态,clean 表示正常,degraded 表示有问题,recovering 表示正在恢复或构建;

Active Devices : 被激活的RAID成员个数;

Working Devices : 正常的工作的RAID成员个数;

Failed Devices : 出问题的RAID成员;

Spare Devices : 备用RAID成员个数,当一个RAID的成员出问题时,用其它硬盘或分区来顶替时,RAID要进行构建,在没构建完成时,这个成员也会被认为是spare设备;

UUID : RAID的UUID值,在系统中是唯一的;

5.8 创建RAID 配置文件/etc/mdadm.conf

RAID 的配置文件为/etc/mdadm.conf,默认是不存在的,需要手工创建。

该配置文件的主要作用是系统启动的时候能够自动加载软RAID,同时也方便日后管理。但不是必须的,推荐对该文件进行配置。

我们这里需要创建这个文件,测试中发现,如果没有这个文件,则reboot 后,已经创建好的md0 会自动变成md127。

/etc/mdadm.conf 文件内容包括:

由DEVICE 选项指定用于软RAID的所有设备,和ARRAY 选项所指定阵列的设备名、RAID级别、阵列中活动设备的数目以及设备的UUID号。

5.8.1 创建/etc/mdadm.conf

# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

5.8.2 修改配置文件

当前生成的/etc/mdadm.conf 文件内容并不符合所规定的格式,所以也是不生效的,这时需要手工修改该文件内容为如下格式:

# cat /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1

ARRAY /dev/md0 level=raid0 num-devices=2 UUID=5160ea40:cb2b44f1:c650d2ef:0db09fd0

5.9 格式化磁盘阵列

# mkfs.ext4 /dev/md0

wps2F9D.tmp

5.10 建立挂载点并挂载

# mkdir /raid0

# mount /dev/md0 /raid0/

wps2F9E.tmp

可以看到,/dev/md0 的可用大小为9.9G。

5.11 写入/etc/fstab

为了下次开机还能正常使用我们的RAID设备,需要将挂载的信息写入/etc/fstab 文件中。

wps2FDD.tmp

然后reboot 测试开机是否自动挂载,raid0 创建完毕。

六、创建RAID1

和创建raid0 类似,我们拿/dev/sdd 和/dev/sde 这两块硬盘来做实验。

6.1 新建分区并修改分区类型

wps2FFD.tmp

使用同样方法对/dev/sde 进行分区操作,分区结果如下:

wps2FFE.tmp

6.2 开始创建RAID1

# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1

wps2FFF.tmp

6.3 查看raid1 状态

# cat /proc/mdstat

# mdadm -D /dev/md1

wps3000.tmp

说明:Used Dev Size : RAID单位成员容量大小,也就是构成RAID的成员硬盘或分区的容量的大小;

可以看到,raid1 正在创建,待创建完毕,状态如下:

wps3001.tmp

6.4 添加raid1 到RAID 配置文件/etc/mdadm.conf 并修改

# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

wps3002.tmp

6.5 格式化磁盘阵列

# mkfs.ext4 /dev/md1

wps3013.tmp

6.6 建立挂载点并挂载

# mkdir /raid1

# mount /dev/md1 /raid1/

wps3014.tmp

可以看到,/dev/md1 的可用大小为4.9G。

6.7 写入/etc/fstab

wps3015.tmp

然后reboot 测试开机是否自动挂载,raid1 创建完毕。

七、创建RAID5

RAID5 至少需要三块硬盘,我们拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 这四块硬盘来做实验,三块做为活动盘,另一块做为热备盘。

7.1 新建分区并修改分区类型

分区结果如下:

wps3016.tmp

7.2 开始创建RAID5

# mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1

wps3017.tmp

说明:"-x1" 或"--spare-devices=1" 表示当前阵列中热备盘只有一块,若有多块热备盘,则将"--spare-devices" 的值设置为相应的数目。

7.3 查看raid5 状态

# cat /proc/mdstat

# mdadm -D /dev/md5

wps3027.tmp

说明:Rebuild Status : RAID 的构建进度;

         4 8 113 2 spare rebuilding /dev/sdh1 注:未被激活,正在构建中的成员,正在传输数据;

         3 8 129 - spare /dev/sdi1 热备盘

raid5 正在创建,而且速度很慢,待创建完毕,状态如下:

wps3028.tmp

7.4 添加raid5 到RAID配置文件/etc/mdadm.conf 并修改

# echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

wps3039.tmp

7.5 格式化磁盘阵列

# mkfs.ext4 /dev/md5

wps303A.tmp

7.6 建立挂载点并挂载

# mkdir /raid5

# mount /dev/md5 /raid5/

wps303B.tmp

raid5 的可用大小为9.9G,即(3-1)x 5G.

向 /raid5 里面写入测试数据:

# touch test_raid5.failed
# touch test_raid5.fail
# ls

wps303C.tmp

7.7 写入 /etc/fstab

wps303D.tmp

然后reboot 测试开机是否自动挂载,raid5 创建完毕。

八、RAID维护

RAID 做好之后,还需要进行日常的维护操作,比如其中一块物理硬盘损坏,我们需要进行更换故障磁盘的操作,下面我们将模拟raid5 中磁盘损坏来讲解软RAID 的维护操作。

8.1 模拟磁盘损坏

在实际中,当软RAID 检测到某个磁盘有故障时,会自动标记该磁盘为故障磁盘,并停止对故障磁盘的读写操作。在这里我们将/dev/sdh1 模拟为出现故障的磁盘,命令如下:

# mdadm /dev/md5 -f /dev/sdh1

wps303E.tmp

8.2 查看重建状态

在上面创建RAID 5过程中,我们设置了一个热备盘,所以当有标记为故障磁盘的时候,热备盘会自动顶替故障磁盘工作,阵列也能够在短时间内实现重建。通过查看"/proc/mdstat" 文件可以看到当前阵列的状态,如下:

wps303F.tmp

以上信息表明阵列正在重建,当一个设备出现故障或被标记故障时,相应设备的方括号后将被标以(F),如 "sdh1[4](F)"。

其中 "[3/2]" 的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,因为目前有一个故障设备,所以第二位数为2;

这时的阵列以降级模式运行,虽然该阵列仍然可用,但是不具有数据冗余;

而 "[UU_]" 表示当前阵列可以正常使用的设备是/dev/sdf1 和/dev/sdg1,如果是设备 “/dev/sdf1” 出现故障时,则将变成[_UU]。

8.3 查看之前写入的测试数据是否还在

wps3050.tmp

数据正常,未丢失。

8.4 重建完毕后查看阵列状态

wps3051.tmp

当前的RAID 设备又恢复了正常。

8.5 移除损坏的磁盘

移除刚才模拟出现故障的/dev/sdh1,操作如下:

wps3052.tmp

8.6 再次查看md5的状态

wps3053.tmp

/dev/sdh1 已经移除了。

8.7 新加热备磁盘

如果是实际生产中添加新的硬盘,同样需要对新硬盘进行创建分区的操作,这里我们为了方便,将刚才模拟损坏的硬盘再次新加到raid5 中。

wps3054.tmp

8.8 查看raid5 阵列状态

wps3055.tmp

/dev/sdh1 已经变成了热备盘。

8.9 查看测试数据

wps3065.tmp

数据正常,未丢失。故障切换测试完毕。

九、向RAID中增加存储硬盘

如果现在已经做好的RAID 空间还是不够用的话,那么我们可以向里面增加新的硬盘,来增加RAID 的空间。

9.1 在虚拟机中添加物理硬盘

上面我们已经在虚拟机中添加了八块硬盘,这里需要模拟新增硬盘,所以首先将虚拟机关闭,然后在存储里再次新增一块5GB的硬盘。然后分区等等操作,这里不再赘述。

wps3066.tmp

9.2 向RAID 中新加一块硬盘

# mdadm /dev/md5 -a /dev/sdj1

wps3067.tmp

查看此时的RAID 状态

wps3068.tmp

默认情况下,我们向RAID 中增加的磁盘,会被默认当作热备盘,我们需要把热备盘加入到RAID 的活动盘中。

9.3 热备盘转换成活动盘

# mdadm -G /dev/md5 -n4

wps3069.tmp

查看此时RAID 状态

wps306A.tmp

/dev/sdj1 已经变成了活动盘,但是Array Size : 10465280 (9.98 GiB 10.72 GB) 并没有变大,这是因为构建没有完成,图中也可以看出Status 为clean, reshaping。

等RAID 完成构建后,RAID的容量就会改变为(4-1)x 5GB,查看进度可以参考Reshape Status,也可以参考/proc/mdstat.

wps306B.tmp

构建完毕后的RAID 状态:

wps307C.tmp

Array Size : 15697920 (14.97 GiB 16.07 GB),磁盘容量已经增加了。

9.4 扩容文件系统

RAID 构建完毕后,阵列容量增加,但是文件系统还没有增加,这时我们还需要对文件系统进行扩容。

# df –TH

# resize2fs /dev/md5

# df –TH

wps307D.tmp

文件系统已经扩容到15G,而且测试数据正常,未丢失,新增物理硬盘成功。

9.5 修改RAID 配置文件/etc/mdadm.conf

wps307E.tmp

9.6 reboot 测试

wps307F.tmp

重启系统后,一切正常,Linux下配置软RAID成功。

参考资料

· 羽飞博客:

· http://www.opsers.org/base/learning-linux-the-day-that-the-system-configuration-in-the-rhel6-disk-array-raid.html

CentOS 6.3下配置LVM(逻辑卷管理)

http://www.cnblogs.com/mchina/p/linux-centos-logical-volume-manager-lvm.html

http://www.cnblogs.com/mchina/p/linux-centos-disk-array-software_raid.html

原文地址:https://www.cnblogs.com/wcwen1990/p/6656200.html