raid是一种存储机制,将几块硬盘组合在一起,成为一个大硬盘,还具备数据冗余的功能。在linux上,实现raid有两种机制,一种用软件模仿磁盘阵列的方式来实现,我们称之为软raid。另外一种用磁盘阵列卡的的方式来实现,称之为硬件raid。软raid是企业环境是不可能存在,因为软raid是要消耗系统资源,对于一台已经很繁忙的服务器,还要额外占用系统资源,这会使服务器更繁忙。当然这篇文章是基于软raid来做实现,毕竟磁盘阵列卡还是蛮贵的,但是它们操作上基本相似。

硬件raid:实现硬件raid需要在主板上插一块raid卡,raid卡提供数据线,因为当我们将几块硬盘做成raid时,系统已经不能再识别单个硬盘,只能检测到当前系统存在一个raid的磁盘。

软raid:在内核中有个md(multiple devices)模块,模仿硬件raid卡来实现raid的功能,当我们创建软raid时,软raid在/dev/目录以md0,md1r

1 raid常见等级:

(1)raid0:至少有两颗磁盘组成,raid会将磁盘先切好成区块,当有档案要写入磁盘时,先经过raid,此时raid将档案切成符合区块的大小;然后再依次写入各个磁盘。

特点:读写性能高,无冗余,至少两块以上,磁盘利用率100%

(2)raid 1:至少两颗磁盘组成,跟raid0恰好相反,一份数据在磁盘上存两次。因此raid 1也被称作映像模式。

特点:读性能高,写性能低(因写一份数据要占用两次i/o总线),有冗余,磁盘利用率1/n,支持空闲盘

(3)raid 5:至少三颗磁盘组成,写入数据有点像raid0,依次循环写入各个磁盘,只不过多增加了一位校验码。如果有一颗磁盘坏了,数据不会丢失。因为有校验码的存在,使丢失的数据,可以用已经存在的数据与校验码做异或运算可以得到。

特点:既容错,又高性能,允许坏一块硬盘,支持空闲盘。磁盘利用率n-1/n

(4)raid 10:先用两个磁盘做成raid1,再将两个raid1做raid0。

特点:既有raid1又有raid0的特点。

2,软raid设定,基于redhat 5.8上实现。先检查主机有没有安装mdadm这个软件,软raid在/dev/的设备文件是md0,md1...。而硬盘raid在/dev/的设备文件是/dev/sd[a-p],因为使用scsi的模块。

(1)raid 5实现过程:先检查有没有安装mdadm这个软件。

mdadm [mode] <raiddevice> [options] <component-devices>

mdamd  模式     设备        选项     子组件

一,建立磁盘分区4个,并修改分区的id为fd

软raid之详解_软raid用法

二,创建raid 5

软raid之详解_软raid用法_02

三,查看raid信息

软raid之详解_软raid用法_03

四,格式化   mke2fs -j /dev/md0 并挂载 mount /dev/md0 /mnt

四个步骤就完成raid 5的建立,下面开始实现开机自动挂载

将md0的uuid导入到/etc/mdadm.conf中,mdadm --examine --scan >/etc/mdadm.conf

软raid之详解_软raid用法_04

修改/etc/fstab文件

软raid之详解_软raid用法_05

 五,给raid添加一块空闲盘,虽然raid 5支持一颗硬盘损坏,但当一个颗硬盘损坏了,对数据的访问速度极慢,也容易导致另外两颗硬盘损坏。因此有必要拿一颗磁盘做空闲盘用,意思就是当一颗损坏了,空闲盘会自动接替那颗坏了磁盘工作。

 mdadm /dev/md0 -a /dev/sda8会自动变成空闲盘

软raid之详解_软raid用法_06

用mdadm --detail /dev/md0

软raid之详解_软raid用法_07

六,模仿/dev/sda5损坏

mdadm /dev/md0 --fail /dev/sda5(当执行这个命令,sda8会自动接替sda5的位置)

七,移除/dev/sda5

mdadm /dev/md0 --remove /dev/sda5

raid 5到此结束。

(2)raid10:先停掉raid 5; mdadm --stop /dev/md0

mdadm --create /dev/md0 -a yes --level=1 --raid-devices=2 /dev/sda{5,6}

mdadm --create /dev/md1 -a yes --level=1 --raid-devices=2 /dev/sda{7,8}
 
mdadm --create /dev/md2 -a yes --level=0 --raid-devices=2 /dev/md{0,1}
 
之后的步骤跟创建raid的一样,到此结束。