被称为 RAID(独立磁盘冗余阵列)的存储技术将多个物理磁盘组合成一个逻辑单元。通常可以将驱动器组合起来以提供数据冗余,或将逻辑单元的大小扩展到超出物理磁盘的能力范围,或两者兼而有之。该技术还允许在不关闭系统的情况下进行硬件维护。
RAID 组织的类型在 RAID Wiki 中有描述。
请注意,虽然 RAID 可防范磁盘故障,但它不能替代备份。删除的文件在 RAID 阵列的所有磁盘上仍会被删除。现代备份通常通过 rsync-3.4.4 完成。
RAID 实现有三种主要类型:硬件 RAID、基于 BIOS 的 RAID 和软件 RAID。
基于硬件的 RAID 通过专有硬件和数据布局提供功能。控制和配置通常通过固件以及设备制造商提供的可执行程序来完成。这些功能通常通过 PCI 卡提供,但也有部分 RAID 组件集成在主板上。硬件 RAID 也可以以独立机箱的形式提供。
基于硬件的 RAID 的一个优点是,驱动器作为逻辑驱动器提供给操作系统,无需依赖操作系统的配置。
缺点包括将驱动器从一个系统转移到另一个系统、更新固件或更换发生故障的 RAID 硬件时存在困难。
某些计算机在系统 BIOS 中提供类似硬件的 RAID 实现。有时这被称为“伪”RAID,因为其功能通常集成在固件中,没有任何硬件加速。
基于 BIOS 的 RAID 的优点和缺点通常与硬件 RAID 相同,但额外缺点是没有硬件加速。
在某些情况下,基于 BIOS 的 RAID 固件默认启用(例如某些 DELL 系统)。如果需要软件 RAID,则必须在 BIOS 中明确禁用此选项。
基于软件的 RAID 是最灵活的 RAID 形式。它易于安装和更新,并且对系统中可用任何驱动器的全部或部分提供完整功能。在 BLFS 中,RAID 软件位于 mdadm-4.6。
使用 mdadm 配置 RAID 设备非常简单。通常,设备在
/dev 目录中创建为 /dev/mdx,其中 x 是一个整数。
创建 RAID 阵列的第一步是使用分区软件(如 fdisk 或 parted-3.7)定义阵列所需的分区。通常,参与
RAID 阵列的每个驱动器上会有一个分区,但这并非严格必要。在本示例中,将有四个磁盘驱动器: /dev/sda、 /dev/sdb、
/dev/sdc 和 /dev/sdd。它们的分区如下:
分区 大小 类型 用途
sda1: 100 MB fd Linux raid auto /boot (RAID 1)/dev/md0
sda2: 10 GB fd Linux raid auto / (RAID 1)/dev/md1
sda3: 2 GB 83 Linux swap swap
sda4 300 GB fd Linux raid auto /home (RAID 5)/dev/md2
sdb1: 100 MB fd Linux raid auto /boot (RAID 1)/dev/md0
sdb2: 10 GB fd Linux raid auto / (RAID 1)/dev/md1
sdb3: 2 GB 83 Linux swap swap
sdb4 300 GB fd Linux raid auto /home (RAID 5)/dev/md2
sdc1: 12 GB fd Linux raid auto /usr/src (RAID 0)/dev/md3
sdc2: 300 GB fd Linux raid auto /home (RAID 5)/dev/md2
sdd1: 12 GB fd Linux raid auto /usr/src (RAID 0)/dev/md3
sdd2: 300 GB fd Linux raid auto /home (RAID 5)/dev/md2
在这种安排中,创建了一个单独的引导分区作为第一个小型 RAID 阵列,以及一个根文件系统作为第二个 RAID
阵列,两者都是镜像。第三个分区是一个大型(约 1 TB)阵列,用于 /home
目录。这提供了跨多个设备条带化数据的能力,提高了读写大文件的速度。最后,创建了第四个阵列,将两个分区连接成一个更大的设备。
所有 mdadm 命令都必须以 root 用户身份运行。
要创建这些 RAID 阵列,命令为:
/sbin/mdadm -Cv /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
/sbin/mdadm -Cv /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
/sbin/mdadm -Cv /dev/md3 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1
/sbin/mdadm -Cv /dev/md2 --level=5 --raid-devices=4 \
/dev/sda4 /dev/sdb4 /dev/sdc2 /dev/sdd2
创建的设备可以按设备进行检查。例如,要查看 /dev/md1
的详细信息,请使用 /sbin/mdadm --detail
/dev/md1:
Version : 1.2
Creation Time : Tue Feb 7 17:08:45 2012
Raid Level : raid1
Array Size : 10484664 (10.00 GiB 10.74 GB)
Used Dev Size : 10484664 (10.00 GiB 10.74 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Feb 7 23:11:53 2012
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : core2-blfs:0 (local to host core2-blfs)
UUID : fcb944a4:9054aeb2:d987d8fe:a89121f8
Events : 17
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
至此,可以使用所选的文件系统(例如 ext3、ext4、xfsprogs-7.0.1
等)格式化这些分区。然后可以挂载格式化后的分区。/etc/fstab
文件可以使用创建的设备在启动时挂载,并且 /boot/grub/grub.cfg 中的 Linux 命令行可以指定 root=/dev/md1。
交换设备应照常在 /etc/fstab
文件中指定。内核通常将交换数据条带化到多个交换文件上,因此不应将其作为 RAID 阵列的一部分。
有关 RAID 设备的更多选项和管理细节,请参阅 man
mdadm。
有关监控 RAID 阵列和处理问题的更多详细信息,请参见 Linux RAID Wiki。