RAID磁盘阵列是Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列。
实际上是把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组,从而提供比单个硬盘更高的存储性能和提供数据备份技术,简单来说,RAID磁盘阵列提供了比单个硬盘高的可用性和容错性。
常见的RAID组合方式为:RAID0、RAID1、RAID5、 RAID6、RAID1+0
RAID0 俗称“条带”,它将两个或多个硬盘组成一个逻辑硬盘,容量是所有硬盘之和,因为是多个硬盘组合成一个,故可并行写操作,写入速度提高,但此方式硬盘数据没有冗余,没有容错,一旦一个物理硬盘损坏,则所有数据均丢失。因而,RAID0 适合于对数据量大,但安全性要求不高的场景,比如音像、视频文件的存储等。
RAID1 俗称“镜像”,它最少由两个硬盘组成,且两个硬盘上存储的数据均相同,以实现数据冗余。RAID1 读操作速度有所提高,写操作理论上与单硬盘速度一样,但由于数据需要同时写入所有硬盘,实际上稍为下降。容错性是所有组合方式里最好的,只要有一块硬盘 正常,则能保持正常工作。但它对硬盘容量的利用率则是最低,只有 50%,因而成本也是最高。RAID1 适合对数据安全性要求非常高的场景,比如存储数据库数据文件之类。
RAID5 最少由三个硬盘组成,它将数据分散存储于阵列中的每个硬盘,并且还伴有一个数据校验位,数据位与校验位通过算法能相互验证,当丢失其中的一位时,RAID 控制器能通过算法,利用其它两位数据将丢失的数据进行计算还原。因而 RAID5 最多能允许一个硬盘损坏,有容错性。RAID5 相对于其它的组合方式,在容错与成本方面有一个平衡,因而受到大多数使用者的欢迎。一般的磁盘阵列,最常使用的就是 RAID5 这种方式。
RAID6 是在 RAID5 的基础上改良而成的,RAID6 再将数据校验位增加一位,所以允许损坏的硬盘数量也由 RAID5 的一个增加到二个。由于同一阵列中两个硬盘同时损坏的概率非常少,所以,RAID6 用增加一块硬盘的代价,换来了比 RAID5 更高的数据安全性。
RAID1+0 是先将数据进行镜像操作,然后再对数据进行分组,RAID 1 在这里就是一个冗余的备份阵列,而 RAID 0 则负责数据的读写阵列。至少要四块盘,两块做 raid0,另两块做 raid1,RAID 10 对存储容量的利用率和 RAID 1 一样低,只有 50%.。Raid1+0 方案造成了 50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一 Raid1 中,就能保证数据安全性、RAID 10 能提供比 RAID 5 更好的性能。这种新结构的可扩充性不好,使用此方案比较昂贵。
构建软RAID 磁盘阵列
首先为 linux 服务器添加 4 块 SCSI 硬盘,使用 mdadm 软件包,构建 RAID5 磁盘阵列, 提高磁盘存储的性能和可靠性。
1. 构建磁盘阵列
下面是构建磁盘阵列步骤。
(1) 安装 mdadm 工具
在CentOS7.3 系统中mdadm 工具由mdadm-3.4-14.el7.x86_64 软件包提供,执行 rpm-qa | grep mdadm 命令查看系统中是否安装 mdadm 工具。若系统内未安装 mdadm 工具, 可使用 RPM 或 YUM 方式安装。
[root@localhost ~]# rpm -qa | grep mdadm
mdadm-3.4-14.el7.x86_64
(2) 准备用于 RAID 阵列的分区
为 Linux 服务器添加 4 块 SCSI 硬盘。使用 fdisk 工具各划分出一块 2GB 的分区,依次为/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1.
(3) 创建 RAID 设备
使用 mdadm 命令创建 RAID,执行以下命令即可创建名称为 md0 的 RAID5。
[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[bcde]1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2095104K
上述命令中所用到参数的作用如下所示。
- -C:等同于 create,表示新建;
- -v:显示创建过程中的信息;
- /dev/md0:创建 RAID5 的名称;
- -a:--auto,表示通知 mdadm 是否创建设备文件,并分配一个未使用的次设备号, 后面跟 yes 代表如果有什么设备文件没有存在的话就自动创建;
- -n:指定使用几块硬盘创建 RAID,n4 表示使用 4 块硬盘创建 RAID;
- -l:指定 RAID 的级别,l5 表示创建 RAID5;
- /dev/sd[bcde]1:指定四块磁盘分区。查看 RAID5 创建结果。
(4) 创建并挂载文件系统
[root@localhost ~]# mkfs -t xfs /dev/md0
[root@localhost ~]# mkdir /raidme
[root@localhost ~]# mount /dev/md0 /raidme/
[root@localhost ~]# df -hT
[root@localhost ~]# cp /etc/fstab /etc/fstab.bak
[root@localhost ~]# vim /etc/fstab//设置RAID 磁盘开机自动挂载
从上述 df -hT 命令的结果中的值/dev/md0 容量为 6G。4 块 2G 磁盘应该 8G,为什么容量只显示 6G?这是 RAID5 的特性,用于存放校验数据的部分不显示。