在学习RAID之前,我们需要了解RAID是什么。
RAID,全称Rudundant Array of Inexpensive Disks,翻译过来就是容错式廉价磁盘阵列。它具有增加存储空间,加快读取速率好人容错功能,但是这要在RAID的不同级别下进行分析。RAID分为软RAID和硬RAID,软RAID(softRAID)是通过软件实现的(软RAID可以使用多个分区当做硬盘使用),我们在这里要说的就是softRAID,要用到得模块是Md:multidisk (多磁盘) 。
RAID的级别,指的是RAID磁盘的不同排列方式和作用,下面介绍一下常用到得RAID级别:
linear:实现将多个硬盘串联起来当做一个大硬盘使用,不提供性能提高和容错功能
RAID0:performance性能将几块大小相同的硬盘同时使用,以提高性能,比如存在512字节的文件,会同时向四个磁盘上写入大约1/4,不提供容错功能,下为示意图:
RAID1:只提供容错功能,硬盘式必须为偶数,例如存放100M文件时,会同时向两个盘存放入100M完整文件,无速度提升读取时同时从两个盘中同时读取,所以会有性能提升,下位示意图:
RAID4:通过提供三块以上硬盘提供容错和提高性能功能
两块工作磁盘一块校验盘,比如1和2 是正常盘,3是校验盘,当盘1down掉的话校验盘会根据盘2计算出1盘的数据,多以只允许一块盘down掉,而且仅有的一块校验盘很肯恩公会成为RAID的瓶颈。
RAID5:也是三块磁盘,将校验码平均分配到三块磁盘上,但是也只能允许一块磁盘出错,替换坏盘时也容易出错。假如有三个5G的盘,三个盘轮流当空闲盘,可用空间还是10G。如下图:
RAID6:RAID5的改进版,提供两个磁盘的容量存储校验码Parity,允许出错的磁盘也增加到两个。一般是4块磁盘,两块磁盘的容量存储校验码Parity。
RAID01:4磁盘,先两两组成RAID0,在组成RAID1,即可以容错,又提高了性能,如下图
RAID10:4块磁盘,先两两组成RAID1,再组成RAID0
下面说几个概念:
空闲盘:具有容错功能的RAID,可以配置空闲盘,当工作盘坏掉时,空闲盘会自动替换
chunk:当使用提高性能的RAID时,数据会轮流存储,每一次存储的大小叫做chunk,默认为64k,也就是说有两块磁盘,往1上存一个chunk(64k)往2上存一个chunk(64k)再往另一块上存一个chunk...
实现RAID的命令:mdadm
mdadm: 多磁盘设备管理器
使用格式:mdadm [mode] <raiddevice> [oprions] <component-devices>
也就是:mdadm 模式 设备 选项 子设备
我们常用的模式有:
Assemble 装配模式,用于我们更换系统或解散RAID设备后,想要在启动以前配置过的RAID设备。就是让内核扫描磁盘设备,如果以前有RAID则组合使用。
Create 创建RAID设备
Followor Monitor 监控模式
Grow 向RAID中添加硬盘
Manage 模拟模式
ps:mode不写的话会默认为监控模式
表示为:
-A
-C
-F
-G
一般默认为管理模式
选项:
-v --version显示详细信息
-s --scan 扫描RAID磁盘
mdadm -A -s /dev/md0 扫描当前系统上的RAID设备并把它们装配起来
mdmonitor 是RAID守护进程,检测到RAID有问题就会想指定用户发送邮件,vim /etc/mdadm.conf在此文件中配置各邮件地址就可以了MAILADDR=root@localhost
创建模式中使用的选项:
-S 停止RAID设备
-n 指定创建的RAID包含了几个磁盘
-x 指定有几个空闲设备
-l 设置RAID级别
-a yes 假如RAID文件不存在,创建RAID时会自动创建文件
-c 使用多少位的chunk
-E stride=*** 看下面例子
mke2fs -j -b 2048 -E stride=32 /dev/md0 提高性能的RAID往磁盘上轮流存储数据时都会先计算要存储多少块才相当于以chunk(64k)这里的stride就表示以chunk就等于32个块,免去RAID的计算时间,以提高RAID读取性能
下面我们来说制作测试RAID的步骤:
1~
在一块磁盘上利用分区制作RAID:
要使用RAID,必须将磁盘分区类型转换成fd
在这里我们分两个分区sda1 sda2 并定义为fd类型 , 步骤如下
fdisk /dev/sda
n
1
+1G
n
2
+1G
t
1
fd
t
2
fd
w
partprobe /dev/sda 让内核重新读取分区文件
创建RAID0设备
mdadm -C /dev/md0 -a yes -n 2 -l 0 /dev/sda1 /dev/sda2
格式化文件系统
mkfs.ext3 /dev/md0
挂载到/share目录下
mount /dev/md0 /share
配置完成,可以使用一下命令查看一下
df -h /share 查看目录分区大小
fdisk -l 查看一下磁盘情况
cat /proc/mdstat 显示当前机器上的软RAID信息
mdadm -D /dev/md0 显示RAID设备的详细信息
2~再做个RAID测试步骤:
创建RAID1 定义chunk为32k 两个正常盘一个空闲盘
mdadm -C /dev/md1 -a yes -n 2 -x 1 -c 32 -l 1 /dev/sda3 /dev/sda4 /dev/sda5
查看信息会显示
mdadm -D /dev/md1
会显示如下信息
active sync /dev/sda3
active sync /dev/sda4
spare /dev/sda5
我们模拟摧毁sda3
mdadm /dev/md1 -f /dev/sda3
再查看
mdadm -D /dev/md1
会显示
spare rebuilding /dev/sda5
active sync /dev/sda3
faulty spare /dev/sda4
表示sda5正在重建 sda4已经是损坏空间
再使用下面命令添加磁盘
mdadm /dev/md1 -a /dev/sda4
关闭开启步骤:
关闭RAID
mdadm -S /dec/md1
我们先使用下面命令扫面磁盘的RAID
mdadm --examine --scan
将显示出的信息写到mdadm的配置文件/etc/mdadm.conf中(重新装载需要用到此文件)
然后使用下面命令重新装配RAID
mdadm -A -s /dev/md1
可以copy文件进RAID,摧毁一个磁盘然后看文件是否还能正常使用,来判RAID断容错能力