RAID磁盘阵列
RAID = Redundant Arrays of Independent Disks,即磁盘阵列。
RAID是一种虚拟化存储技术,将多个物理硬盘组合成成一个或多个硬盘阵列组(逻辑单元),目的为提升性能或资料冗余,或是两者同时提升。
由于RAID把多个硬盘组合成为一个逻辑扇区,因此对于电脑来说,只会把它当作一个硬盘或逻辑存储单元,用户可以对它进行分区,格式化等等。总之,对磁盘阵列的操作与单个硬盘一模一样。
RAID有硬件RAID和软件RAID两种实现方式
-
硬件RAID(Hardware RAID),简称硬RAID:通过硬件来实现的RAID,独立于操作系统。如:RAID卡、主板集成的RAID(板载RAID控制器) 都是硬RAID。
大部分板载RAID控制器,只能实现RAID1或RAID0这种无脑RAID。而像RAID5这种复杂RAID,很多主板并不支持。
-
软件RAID(Software RAID),简称软RAID:通过操作系统、软件实现的RAID,依赖于操作系统。尽管依赖于操作系统,但软件RAID也可以为任意分区实现RAID,即软RAID也可以保护引导分区和系统分区。群晖就是利用mdadm工具组建RAID1,实现每块硬盘上都有系统,从而保护系统分区。
(看到有文章说"软RAID是通过操作系统或软件实现的,因此系统本身不能参与实现RAID",这个说法显然是错误的)
mdadm工具
wiki-mdadm
mdadm,是Linux上标准的软件RAID管理工具。
mdadm本身是以硬盘 分区为单位 组建RAID,而不是以硬盘为单位。不过在使用层面仍然是作为一个逻辑单元使用。
mdadm以/dev/md0、/dev/md1、/dev/md2 ...
这样的文件作为标准形式管理RAID设备。
相关命令
ls /dev/ | grep md
查看有多少RAID。mdadm -D /dev/md0
查询对应RAID设备的详细信息,如该RAID阵列的RAID类型、包含的磁盘及分区等信息。
降级阵列(Degraded RAID)
降级阵列是其中缺少某些设备的阵列。仅 RAID 1、RAID 4、RAID 5 和 RAID 6 支持降级阵列。作为其容错功能的一部分,这些 RAID 类型旨在承受某些丢失的设备。通常,降级阵列发生在设备出现故障时,但也可以故意创建降级阵列。
RAID 类型 | 允许缺少的槽数 |
---|---|
RAID 1 | 除一个设备外的所有设备 |
RAID 4 | 一个槽 |
RAID 5 | 一个槽 |
RAID 6 | 一个或两个槽 |
mdadm可以使用missing
关键词创建降级阵列,比如1块硬盘就可以创建RAID1 (正常情况下至少要两块硬盘才能组RAID1)。
具体操作见:Creating a Degraded RAID Array
群晖的Basic阵列其实就是只有一块硬盘的RAID1:
群晖软RAID
群晖的RAID是用mdadm实现的,是软RAID:
- 群晖的系统文件在每块盘上存在,通过RAID1实现,这是群晖自身的行为,与用户无关;
- 用户使用的"存储池"则根据创建存储池时选择的RAID类型实现;
无论是系统文件还是存储池,它们的RAID其实都是利用mdadm工具实现的,证据如下:
- 证据一:可以找到
/dev/md0
、/dev/md1
等mdadm的标准文件,并使用mdadm -D
查询详细的RAID信息 (如上图所示)。 - 证据二:在Windows上使用
UFS Explorer Professional Recovery
工具,连接群晖的硬盘,显示Type of RAID metadata:Linux mdadm
(如下图所示)。
前面提到,Basic就是降级了的RAID1,UFS也有表示:Member drive: 1 out of 1
。RAID1至少应该由两块硬盘组成,而这个RAID1只有一块,所以是降级的。RAID1是镜像模式,所以RAID type: mirror
。
而非降级的RAID1,用两块硬盘创建的,单块硬盘会显示为Member drive: 1 out of 2
或2 out of 2
(表示由2块硬盘组成,这是第几块)。