========================================================================= ========
本文章参考自 一天一点学习Linux之boot loader:GRUB | 羽飞博客 :http://www.opsers.org/base/learning-linux-the-day-that-the-system-configuration-in-the-rhel6-disk-array-raid.html
本文是笔者亲自试验后,并引用羽飞博客的教学内容,作为笔者的linux学习笔记记录之用。
在此感谢羽飞博客的Linux教学博文,羽飞博客地址:http://www.opsers.org
================================================================================
RAID介绍
磁盘阵列全名是: Redundant Arrays of Inexpensive Disks, RAID ,意思是:廉价的磁盘冗余阵列。 RAID 可以通过一个技术(软件或硬件),将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘不但扩展了储存空间,而且还有数据保护的功能。
RAID会根据等级 (level) 的不同,而使得整合后的磁盘具有不同的功能,基本常见的 level 有以下这几种:
这种模式一般是使用相同型号与容量的磁盘来组成。这种模式的 RAID 会将磁盘先切出等量的区块, 然后当一个文件需要要写入 RAID 设备时,该文件就会依据区块的大小切割好,然后再依次放到各个磁盘里。由于每个磁盘会交错的存放数据, 因此数据要写入 RAID 时,会被等量的放在各个磁盘上面。
RAID-0的特点就是:
1、磁盘越多RAID设备的容量就越大。
2、容量的总大小是多个硬盘的容量的总和。
3、磁盘越多,写入的效能就越高。
4、如果使用非等大的硬盘,那么当小的磁盘写满后,就直接向空间大的磁盘中写数据了。
5、最少的磁盘数是2个,而且磁盘使用率为100%
他的致命之处就是:万一其中一个磁盘有问题,那么数据就会全部出问题。因为数据是分开存储的。
这种模式主要是让同一份数据,完整的保存在不同的磁盘上。由于同一份数据会被分别写入到其他不同磁盘。因此在大量写入 RAID-1 设备的情况下,写入的效能会变的非常差。但如果你使用的是硬件 RAID (磁盘阵列卡) 时,磁盘阵列卡会主动的复制一份而不使用系统的 I/O总线,这对效能影响是不大的。 如果使用软件磁盘阵列,效能就会明显下降了。
RAID-1的特点是:
1、保证了数据的安全,
2、RAID-1设备的容量是所有磁盘容量总和的一半
3、在多个磁盘组成RAID-1设备的时候,总容量将以最小的那一颗磁盘为主
4、读取的效能相对增加。这是因为数据在不同的磁盘上面,如果多个进程在读取同一笔数据时,RAID 会自行取得最佳的读取平衡。
5、磁盘数必需是2的整数倍。磁盘利用率为50%
不足之处就是:写入的效能会降低
RAID 5:至少需要三个以上的磁盘才能够组成这种类型的磁盘阵列。这种磁盘阵列的数据写入有点类似 RAID-0, 不过每个循环的写入过程中,在每颗磁盘还加入一个校验数据(Parity),这个数据会记录其他磁盘的备份数据, 用于当有磁盘损毁时的救援。
RAID-5的特点:
1、当任何一个磁盘损坏时,都能够通过其他磁盘的检查码来重建原本磁盘内的数据,安全性明显增强。
2、由于有同位检查码的存在,因此 RAID-5 的总容量会是整个磁盘数量减一个。
3、当损毁的磁盘数量大于等于两颗时,那么 RAID-5 的资料就损坏了。 因为 RAID-5 预设只能支持一颗磁盘的损坏情况。
4、在读写效能上与 RAID-0 差不多。
5、最少磁盘是3块,磁盘利用率N-1块
不足:数据写入的效能不一定增加,因为要写入 RAID 5 的数据还得要经过计算校验码 (parity)。所以写入的效能与系统的硬件关系较大。尤其当使用软件磁盘阵列时,校验码 (parity)是通过 CPU 去计算而非专职的磁盘阵列卡, 因此在数据校验恢复的时候,硬盘的效能会明显下降。
RAID-0 RAID-1 RAID-5三个级别的数据存储流程,大家可以参考下图
由于 RAID-5 仅能支持一颗磁盘的损毁,因此还有发展出另外一种等级,就是 RAID-6 ,这个 RAID-6 则使用两颗磁盘的容量作为 parity 的储存,因此整体的磁盘容量就会少两颗,但是允许出错的磁盘数量就可以达到两颗,也就是在 RAID-6 的情况下,同时两颗磁盘损毁时,数据还是可以恢复回来的。而此级别的RAID磁盘最少是4块,利用率为 N-2。
=========================================================================================
下面以RAID-5为例进行配置演示:
为了方便实验,所以我在虚拟机下面创建了多块Hard Disk,每块大小是1G。就用/dev/sd{b,c,d,e}这四块进行实验吧。
先用三块(sdb,sdc,sdd)来做RAID-5,这是做RAID-5最少的磁盘数量,为了安全,通常都需要加上一块热备磁盘(sde),以用来替换出故障的磁盘。
PS:用分区来做RAID也可以,不过这样不太科学。
1.创建RAID设备文件
RAID设备文件创建成功,这时候会在/dev下创建md目录和和md5设备文件,并且在/dev/md/目录下创建了md-device-map文件。
查看一下RAID设备的情况
2.对RAID设备创建文件系统、分区、挂载
创建好的RAID设备可以当做普通磁盘一样进行分区,使用命令fdisk /dev/md5就可以了,这里就不演示了。
RAID设备创建好后,要对它进行“格式化”(准确的说法是创建文件系统,linux下没有格式化这个说话的)
挂载使用
OK,挂载成功,在/mnt/md5下成功创建了3个文件
3.模拟磁盘损坏
mdadm命令能够进行模拟磁盘故障,我对/dev/sdb进行故障模拟
模拟成功,查看一下RAID设备信息
可以看到/dev/sdb的状态是faulty spare(出错的热备)。当RAID设备里面有磁盘出现故障,热备磁盘会马上自动替换故障盘。/dev/sde已经替换掉/dev/sdb。
注意一点:当热备磁盘顶替故障磁盘时,RAID设备的性能会明显下降,因为热备盘要进行数据检验与恢复。
再看下/mnt/md5里面的数据还存在不
OK,数据没有丢失。接下来要将故障硬盘移除,添加新的硬盘。
4.移除故障硬盘
再次查看一下RAID设备信息
已经移除了
5.添加新的硬盘
看看新加入的磁盘
新的热备盘/dev/sdf已经被添加到RAID-5设备里面
6.增加RAID设备存储空间
当设备的存储空间不足时,需要添加硬盘以增加RAID设备的存储空间。
注意:使用mdadm -r添加新硬盘后,新添加的硬盘会被当做热备盘使用。
我们先来尝试一下添加硬盘,我把/dev/sdg添加进去/dev/md5
查看一下RAID设备信息
果然,硬盘/dev/sdg被当做热备盘使用。怎样才能让热备盘起存储作用呢?需要进行以下操作。
增加新磁盘后,RAID设备信息不会马上显示新的设备容量,所以我们要更新一下文件系统。
查看一下设备信息
Raid Devices的个数已经由3个增加到4个,设备容量也由原来的2G增加到3G,新添加的/dev/sdg设备已经运行。
再看下/mnt/md5里面的数据在我们执行扩容的过程中是否遭到损坏
数据也是正常的。
7.开机自动挂载RAID设备
设置开机自动挂载设备,我们都知道去修改fstab,但是这里有一点需要注意:
RAID设备,在fstab上修改后,开机还是不能自动挂载的。必须在修改fstab后,往/etc/mdadm.conf里面添加RAID设备的某些信息。否则,机器重启后,原先的/dev/md5设备文件会被系统自动修改为/dev/md127(不同的RAID级别名字不同)
先修改一下fstab,在末尾添加以下内容
接着需要往/etc/mdadm.conf里添加RAID设备信息。我们先来看看/etc/mdadm.conf文件的内容
把RAID设备信息写入/etc/mdadm.conf文件中
OK,大家重启一下看看是否成功自动挂载。^.^
8.删除RAID设备
首先umount已经挂载到系统上的RAID设备
接着停止RAID设备
这步是关键,清除RAID设备中每个硬盘的superblock,记住要清除每一块曾经被用作RAID设备的硬盘哦。
最后删除fstab和/etc/mdadm.conf里相应的RAID设备内容
删除成功!
==========================================================================
特别提醒
停止了RAID设备后,使用以下命令重新开启RAID设备会出现错误提示
出现以上错误的原因,是/etc/mdadm.conf配置文件没有记录到md5的信息。
解决方法:
在重启MD设备前,必须在/etc/mdadm.conf写入md的信息
# mdadm -D -s /dev/md5 >> /etc/mdadm.conf
==========================================================================
最后对RHEL6下配置RAID设备的步骤进行简单总结
1.创建RAID-5设备
#mdadm -C /dev/md5 -l 5 -n 3 /dev/sd{b,c,d} -x 1 /dev/sde
2.对设备创建文件系统
#mkfs.ext4 /dev/md5 //到这里,RAID-5设备已经创建成功,并可以挂载使用
3.故障模拟
#mdadm -f /dev/md5 /dev/sdb
4.移除故障硬盘
#mdadm -r /dev/md5 /dev/sdb
5.添加新硬盘
#mdadm -a /dev/md5 /dev/sdf
6.将热备盘启用为存储盘
#mdadm -G -n4 /dev/md5
这里-n [NUMBERS]指的是RAID设备活跃的硬盘数量。别忘了更新一下文件系统
7.开机自动挂载
a. 修改fstab
b.写入RAID设备信息 #mdadm -D -s /dev/md5 >> /etc/mdadm.conf
8.删除RAID设备
a. #umount /dev/md5
b. #mdadm -S /dev/md5
c. #mdadm --misc --zero-superblock /dev/sdX