如何在 Ubuntu 上构建 RAID 1:mdadm 软件 RAID 详解

1. 介绍

为什么在 Ubuntu 上构建 RAID 1?

Ubuntu 是一种 Linux 发行版,广泛用于个人用户到企业环境。由于其高可靠性和灵活性,常被用于服务器。通过在 Ubuntu 环境中构建 RAID 1(镜像),可以 确保数据冗余并将因磁盘故障导致的数据丢失风险降至最低

RAID 1 通过 实时将相同的数据写入两个或多个磁盘 来工作。即使其中一个磁盘故障,系统仍可使用剩余磁盘继续运行。对于处理关键文件或服务的 Ubuntu 系统,RAID 1 是一种有效的保护策略。

软件 RAID 与硬件 RAID 的区别

有两种主要的 RAID 构建方式。一种是 硬件 RAID,使用专用的 RAID 控制器或主板自带的 RAID 功能。另一种是 软件 RAID,通过操作系统软件进行配置(在 Linux 上主要是 mdadm)。

在 Ubuntu 上,软件 RAID 是最常见的选择,因为它成本低且灵活。本文聚焦于在 Ubuntu 上构建 RAID 1,涵盖安装时的配置、运行管理以及故障恢复。

本文您将学到的内容

通过阅读本指南,您将获得以下知识和技能:

  • RAID 1 基础及其在 Ubuntu 上的工作原理
  • 使用软件 RAID(mdadm)构建 RAID 1 的逐步操作指南
  • RAID 1 重建、状态检查与故障排除
  • Ubuntu Server 与 Desktop 之间的差异与注意事项
  • 实用 FAQ,包括 GRUB 与 fstab 配置

配置完成后,RAID 不需要频繁干预,但 了解初始设置至关重要。本文提供清晰实用的解释,即使是初学者也能轻松阅读。请阅读至文末。

2. RAID 1 基础

RAID 级别及 RAID 1 的特性

RAID(独立磁盘冗余阵列)是一项将多个硬盘组合以提升数据可靠性和性能的技术。RAID 有多个级别,每个级别都有不同的特性。

常见的 RAID 级别包括:

  • RAID 0:通过条带化提升性能,但不提供冗余
  • RAID 1:通过镜像提供冗余(本文重点)
  • RAID 5:在三块或以上磁盘之间使用奇偶校验提供冗余
  • RAID 6:RAID 5 的增强版,使用双奇偶校验以获得更高容错
  • RAID 10(1+0):RAID 1 与 RAID 0 的组合

在这些级别中,RAID 1 采用 镜像方式,将相同的数据写入两块磁盘。如果一块磁盘故障,数据仍可从另一块磁盘访问,提供极佳的可用性。

镜像工作原理(概念示例)

RAID 1 的机制非常简单。例如,假设您有磁盘 A 和磁盘 B:

[Write Operation]
User saves File A → Data is written simultaneously to Disk A and Disk B

[Read Operation]
Data can be read from either disk, allowing performance optimization

因为 数据始终是复制的,RAID 1 对物理磁盘故障提供了强有力的保护

软件 RAID 与硬件 RAID

构建 RAID 有两种主要方式:

  • 软件 RAID(mdadm 等):这是 Ubuntu 上最常用的方法。RAID 在操作系统层面管理,提供灵活性和成本优势。它提供最高程度的控制,广泛用于通用服务器环境。
  • 硬件 RAID(RAID 卡或基于 BIOS 的解决方案):RAID 由专用控制器处理,降低 CPU 负载。操作系统将阵列识别为单个磁盘。然而,如果控制器本身故障,恢复会变得困难

什么是伪 RAID(BIOS RAID)?

某些主板在 BIOS 层面提供 RAID 功能,通常被称为 “伪 RAID”。

虽然看起来是硬件 RAID,实际上它是 由驱动程序控制且在结构上更接近软件 RAID。虽然 Ubuntu 提供了有限的支持,但基于 mdadm 的软件 RAID 通常更易于管理和恢复,因此不推荐使用假 RAID(Fake RAID)。

3. 使用软件 RAID(mdadm)构建 RAID 1

3.1 准备工作和要求

要构建 RAID 1,您需要 至少两个物理磁盘(或未使用的分区)。已经作为系统盘使用的磁盘不适合,因此请准备专用存储。

首先,识别目标磁盘:

lsblk

或查看更详细的信息:

sudo fdisk -l

假设磁盘为 /dev/sdb/dev/sdc

在继续之前,确保目标磁盘中没有重要数据。在创建 RAID 的过程中所有数据都会被擦除。

3.2 安装 mdadm

mdadm 已包含在 Ubuntu 默认软件源中,安装非常简便:

sudo apt update
sudo apt install mdadm

安装过程中可能会提示设置邮件通知,这些可以稍后调整,初始使用默认设置即可。

3.3 创建 RAID 1 阵列

确认磁盘后,使用以下命令创建 RAID 1 阵列:

sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

命令说明:

  • /dev/md0 : 新 RAID 设备的名称
  • --level=1 : 指定 RAID 级别 1(镜像)
  • --raid-devices=2 : 阵列中设备的数量
  • /dev/sdb /dev/sdc : 实际使用的磁盘

创建完成后,检查状态:

cat /proc/mdstat

如果看到带有 /dev/md0 的同步信息,说明 RAID 1 阵列已成功创建。

3.4 持久化配置(mdadm.conf 和 fstab)

为了确保系统重启后仍能识别 RAID 阵列,需要进行持久化配置。

首先,保存当前的 RAID 配置:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

接下来,在 RAID 阵列上创建文件系统(示例:ext4):

sudo mkfs.ext4 /dev/md0

创建挂载点并挂载:

sudo mkdir -p /mnt/raid1
sudo mount /dev/md0 /mnt/raid1

验证运行正常后,使用 UUID 将其写入 /etc/fstab

sudo blkid /dev/md0

添加如下条目:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/raid1 ext4 defaults 0 0

这样即可在系统重启后自动挂载 RAID 1 阵列。

4. 在 Ubuntu 安装过程中配置 RAID 1

4.1 使用 Ubuntu Server 安装程序

Ubuntu Server 安装程序支持高级存储配置,如 RAID 和 LVM。

步骤 1:从安装介质启动
使用 Ubuntu Server ISO 制作可启动 USB,并启动目标机器。

步骤 2:完成基础设置
配置语言、键盘和网络。

步骤 3:进入存储配置
选择 自定义存储布局(Custom Storage Layout),而不是引导式(Guided)。

步骤 4:配置 RAID

  1. 选择两个空磁盘
  2. 创建分区(例如 /boot、swap、/)
  3. 选择 “创建软件 RAID”
  4. 选择 RAID 1 并分配设备
  5. 分配文件系统和挂载点

步骤 5:安装 GRUB
建议在两块磁盘上都安装 GRUB,这样即使其中一块磁盘故障,系统仍能启动。

4.2 在 Ubuntu Desktop 中使用 RAID

Ubuntu Desktop 在安装程序中不包含 RAID 配置。若要使用 RAID 1,可考虑以下方法:

方法 1:在 Live 环境手动构建 RAID → 安装 Desktop

  1. 从 Live USB 启动
  2. 使用 mdadm 构建 RAID 1
  3. 在 RAID 设备(如 /dev/md0)上安装 Ubuntu Desktop
  4. 调整 grubfstab 设置

此方法需要更多操作,但提供 对基于 GUI 的 RAID 使用的高度灵活性

方法 2:先安装带 RAID 的 Server → 后期添加 GUI

sudo apt update
sudo apt install ubuntu-desktop

这种方法稳定,并且推荐在您想为RAID配置的系统添加GUI时使用

在桌面版和服务器版之间的选择

CriteriaServerDesktop
Ease of RAID Setup◎ Built-in installer support△ Manual setup required
GUI× (CLI-focused)◎ Included by default
Beginner Friendly△ Requires experience◎ Easy installation
Flexibility◎ Server-oriented○ Customizable

如果RAID是系统的核心,从Ubuntu Server开始是最顺畅的方式

5. RAID 1 操作与故障排除

5.1 监控 RAID 状态

定期监控对于早期故障检测至关重要:

cat /proc/mdstat

[UU] 表示正常运行,而 [_U] 表示缺少一个磁盘。

更多细节请参见:

sudo mdadm --detail /dev/md0

5.2 处理磁盘故障与重建

即使有一个磁盘故障,RAID 1 仍然可以继续运行。

步骤 1:识别故障磁盘
检查是否有 “Removed” 或 “Faulty” 状态。

步骤 2:移除故障磁盘

sudo mdadm /dev/md0 --remove /dev/sdX

步骤 3:准备新磁盘

sudo fdisk /dev/sdX

步骤 4:添加磁盘并开始重建

sudo mdadm /dev/md0 --add /dev/sdX

5.3 为冗余安装 GRUB

在两个磁盘上安装 GRUB 以确保启动冗余:

sudo grub-install /dev/sdX
sudo update-grub

6. 使用硬件 RAID

6.1 什么是硬件 RAID?

硬件 RAID 使用专用控制器来管理 RAID 操作,提供高性能并降低 CPU 负载。

6.2 Ubuntu 上硬件 RAID 的优缺点

优势:

  • 低 CPU 使用率
  • 与操作系统无关的配置
  • 快速恢复和热插拔支持

劣势:

  • 如果 RAID 卡故障,恢复困难
  • 灵活性较低
  • 成本更高

6.3 检查硬件 RAID 状态

硬件 RAID 阵列表现为单个块设备。必须使用厂商工具检查状态。

7. 常见问题 (FAQ)

Q1. RAID 1 能替代备份吗?

不。 RAID 1 只能防止磁盘故障,不能防止因删除或损坏导致的数据丢失。

Q2. 如果一个磁盘故障会怎样?

系统会继续使用剩余的磁盘运行。

Q3. 可以在 Ubuntu Desktop 上使用 RAID 1 吗?

可以,但需要手动设置。

Q4. 如何检查 RAID 状态?

cat /proc/mdstat
sudo mdadm --detail /dev/md0

Q5. 更换磁盘后需要重新安装 GRUB 吗?

是的,GRUB 应该安装在更换的磁盘上。

8. 结论

RAID 1 关注冗余

RAID 1 提供实时数据复制,使系统在磁盘故障后仍能继续运行。

Ubuntu 上的 RAID 选项

基于 mdadm 的软件 RAID 是大多数 Ubuntu 用户最实用的选择。

维护决定可靠性

定期监控、正确的 GRUB 设置以及适当的备份是长期稳定性的关键。

使用 Ubuntu 和 mdadm,可以通过命令行工具轻松构建 RAID 1。请使用本指南创建一个强大且可靠的 Linux 环境。

侍エンジニア塾