概述
RIAD(Redundant Arrays of Independent Disks,RAID,磁盘阵列) – 这项技术最早出现在1988年,当时是加利福尼亚大学伯克利分校首次提出并定义了 RAID 技术的概念,最初是为了组合小的廉价磁盘来代替容量大的昂贵磁盘,同时希望磁盘坏掉时不会丢掉对数据的访问,从而诞生了这样一个数据保护技术。将多块硬盘依靠 RAID 技术组合成一个容量更大、性能更好且拥有磁盘冗余备份功能的「超级硬盘」,这就是 RAID 的作用。在性能(读写速度)、冗余(数据备份还原)、容量(空间利用率)、成本等上面去权衡具体要选择什么级别的 RAID,常见的有RAID 0、RAID 1、RAID 5、RAID 10等,企业当中使用较多的是RAID 1、RAID 5、RAID 10。
RAID 通过两种方式来实现:
- 软 RAID – 通过操作系统的软件实现,软 RAID 会占用 CPU 的部分资源
- 硬 RAID – 使用专有的阵列卡或者 RAID 卡来实现。有些消费级主板也提供板载 RAID,不过性能比不上专有的硬件 RAID
组建 RAID 所需的磁盘,通常情况下最好是同品牌、同容量、同型号的,这样的组建的 RAID 能够把优势发挥到最大。
RAID 级别
RAID 0 (又称条带模式)
写入的数据会分散存储在不同的硬盘上,相对其他 RAID 级别,该级别的读写性能最好,但没有冗余备份功能,即任何一块磁盘损坏,数据将全部丢失。
- 需要的磁盘数量:至少需要两块硬盘(n≥2)
- 可用容量:100%
- 读写性能:高
- 冗余备份:无
- 经济成本:低
假如这里每块硬盘容量都是 1T 的,则可用的硬盘容量为 3T 。比如你要写入 3MiB 的数据,则每块硬盘都单独地写入 1MiB。读取数据的时候也是一样的,从三块硬盘中各取 1MiB 的数据,最后完成 3MIB 数据的读取。
RAID 1 (又称镜像模式)
- 需要的磁盘数量:至少需要两块硬盘(2n,n≥1)
- 可用容量:50%
- 读写性能:低
- 冗余备份:有
- 经济成本:高
假如这里的硬盘1和硬盘2都是 1T 的,则可用的硬盘容量为 1T 。
RAID 5(又称分布奇偶校验条带)
- 需要的磁盘数量:至少三块硬盘(n≥3)
- 可用容量:总磁盘容量的 (s-1)/s
- 读写性能:中
- 冗余备份:有
- 经济成本:中
它的特点是将数据通过奇偶校验信息保存到不同的硬盘设备上,这样的好处是其中任何一块硬盘坏掉后,都能通过算法将数据还原回来。
假设这里每块硬盘都是 1T 容量,则可用硬盘容量为 3T。
使用的算法为 简单异或逻辑运算(即相同为0,相异为1)
Q:什么是简单异或逻辑算法?
即通过算法计算后,相同值算出来的结果为 0 ,不同值算出来的结果为 1 。如下表所示:
A 值 | B 值 | 结果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
比如说您当前拥有四块硬盘且组建了 RAID 5,假设某个位置的数据丢失了,可以通过异或逻辑算法知道它的值。
硬盘 A | 硬盘 B | 硬盘 C | 损坏的硬盘 D |
---|---|---|---|
0 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
RAID 10(镜像加条带)
既有 RAID 1 的数据冗余,又有 RAID 0的读写性能。
- 需要的磁盘数量:4n(n≥1)
- 可用容量:50%
- 读写性能:中
- 冗余备份:有
- 经济成本:非常高
将当前硬盘数量的一半组建第一组 RAID 1,另外一半数量的磁盘组建另外一组 RAID 1,将这两组磁盘结合起来再组建一个 RAID 0,也就是RAID 10。
硬 RAID
硬 RAID 主要有以下的参数:
- 支持的 RAID 级别
- 支持的硬盘接口以及硬盘数量
- 传输速度
- 有无缓存以及缓存的容量
Windows 与 GNU/Linux 中的软 RAID
Windows 的软 RAID
- 基本磁盘:接触最多的就是基本磁盘,可以是 MBR 分区表,也可以是 GPT 分区表。仅支持基础分区功能,无法直接实现软 RAID 或容错。在 Windows 中,管理基本磁盘的对象被称为「分区」
- 动态磁盘:Windows 2000 后引入的概念,简单来说就是操作系统提供的软 RAID。Windows Server 主要有五个动态磁盘的管理对象,分别是简单卷、跨区卷、带区卷、镜像卷、RAID-5 卷。该功能位于「计算机管理」 —> 「存储」 —> 「磁盘管理」 —> 在不同的磁盘上右键单击即可弹出具体的功能。
基本磁盘转换到动态磁盘:可无损转换并保留原有数据
动态磁盘转换到基本磁盘:需删除所有卷并导致数据丢失
对象名称 | 说明 |
---|---|
简单卷 | 动态磁盘的最小存储单位,由单个动态磁盘的连续或非连续空间组成,功能类似基本磁盘的分区。仅限在一块磁盘上调整卷的容量大小,不能跨越磁盘 |
跨区卷 | 将多块磁盘的未分配空间组合成一个逻辑卷,可以动态调整逻辑卷的分区大小,无冗余机制。在核心功能上类似 GNU/Linux 中的 LVM |
带区卷 | 即软 RAID 0 |
镜像卷 | 即软 RAID 1 |
RAID-5 卷 | 即软 RAID 5 |
GNU/Linux 的软 RAID
在 GNU/Linux 中,可以使用 mdadm
工具来管理软 RAID,mdadm
命令的常用选项有:
-C
– 建立一个新的阵列-A
– 激活磁盘阵列-D
– 打印阵列的详细信息-a
– 添加设备到阵列-v
– 显示详细信息-r
– 移除设备-l
– 设定磁盘陈列的级别-x
– 指定阵列中备用盘的数量-c
– 设定阵列块的 chunk 大小,单位为 KB
和单硬盘的分区操作后一样,组建软 RAID 之后,需要挂载才能真正的使用,还需要写入到 /etc/fstab 中永久生效。
chunk:RAID 存储数据时每个数据段的大小,可以手工指定。chunk 过大,不能充分发挥 RAID 的优势;chunk 过小,影响 RAID 的整体性能。需要根据实际的情况去选择具体的大小。关于这个单词术语的翻译,由于翻译为中文会出现歧义,因此作者本人保留为 chunk。
Shell > dnf -y install mdadm
Shell > dnf info mdadm
Name : mdadm
Version : 4.2
Release : 16.el8_10
Architecture : x86_64
Size : 1.1 M
Source : mdadm-4.2-16.el8_10.src.rpm
Repository : @System
From repo : baseos
Summary : The mdadm program controls Linux md devices (software RAID arrays)
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
License : GPLv2+
Description : The mdadm program is used to create, manage, and monitor Linux MD (software
: RAID) devices. As such, it provides similar functionality to the raidtools
: package. However, mdadm is a single program, and it can perform
: almost all functions without a configuration file, though a configuration
: file can be used to help with some common tasks.
