你可以使用软件 RAID 1 镜像服务器的系统盘,并在单块磁盘发生故障后,依然让服务器保持运行并继续启动。这样一来,操作系统就会以两份完全相同的副本存在,分别位于两块磁盘上。在 Linux 上,你将使用 mdadm;在 Windows Server 上,你将使用“磁盘管理”。本指南将带你了解前提条件、如何在两种平台上配置软件 RAID 1、如何验证镜像在故障后确实能够启动,以及如何通过日常维护来保持其健康状态。在更改任何 RAID 设置之前,请先备份服务器。要把镜像视为一项持续承担的责任,而不是一次性完成的任务。

前提条件与工具

硬件与软件要求

RAID 1 通过在两块或更多磁盘之间精确镜像数据,提供完整的数据冗余。如果其中一块磁盘发生故障,另一块就会接管。对于系统盘而言,这意味着操作系统能够在单盘损坏后继续存活,服务器也能继续启动。

在你配置软件 RAID 1 之前,请确认你拥有两块相同或参数接近的磁盘。容量不匹配会浪费较大磁盘上的空间,因为镜像容量只能与较小成员盘保持一致。检查你的 Linux 发行版是否自带 mdadm,或者你的 Windows Server 版本是否支持在“磁盘管理”中创建镜像卷。提前安排维护窗口,并确认备份已经过验证。

将 RAID 1 用于操作系统启动盘,可以为物理服务器上的操作系统提供冗余保护。一些裸金属服务提供商会直接提供带有操作系统冗余的软件 RAID,例如某些预装 Windows Server 2022 的镜像。修改任何现有配置之前,请先确认你的服务提供商已经预配置了哪些内容。

软件 RAID 1 最适合的场景

软件 RAID 和硬件 RAID 是互补方案,各自适用于不同场景。软件 RAID 运行在主机 CPU 上,不需要额外的 RAID 控制器卡。硬件 RAID 则将校验和镜像工作卸载到专用控制器上,通常还带有自己的缓存和电池备份。

因素软件 RAID 1硬件 RAID 1
成本无需购买控制器需要 RAID 控制器卡
可移植性阵列可随操作系统迁移依赖特定控制器型号
CPU 开销占用主机 CPU由控制器卸载处理

如果你想在单台服务器上以较低成本实现简单镜像,并且看重跨硬件迁移的便利性,那么软件 RAID 1 是合适的选择。如果你需要控制器级缓存、热插拔管理,或者希望在多台机器上保持一致行为,那么硬件 RAID 会更适合。两种方式并不存在绝对优劣,关键在于让方案与工作负载相匹配。

分步配置软件 RAID 1

在更改任何 RAID 设置之前,请先备份服务器。已有的 RAID 配置可能需要先删除,而这一步会销毁数据。

在 Linux 上使用 mdadm 创建阵列

你可以在 Live 环境中操作,也可以在已安装好的系统中操作,具体取决于操作系统是否已经部署。下面的流程假设你有两块空白磁盘:/dev/sda 和 /dev/sdb。

  1. 使用 fdisk 或 parted 对两块磁盘进行分区。在每块磁盘上创建大小相同的分区,并将分区类型设置为 Linux RAID autodetect(fd)。
  2. 使用 mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 创建镜像阵列。确认阵列已正常组装完成。
  3. 在阵列上创建你选择的文件系统,例如 mkfs.ext4 /dev/md0。
  4. 将阵列挂载到目标挂载点,然后把操作系统复制或安装到该阵列上。
  5. 在两块磁盘上都安装引导加载程序,而不仅仅是第一块。对于 GRUB,请对 /dev/sda 运行一次 grub-install,再对 /dev/sdb 再运行一次。大多数镜像失败的问题,往往都出在这一步。
  6. 将阵列定义写入 mdadm.conf,以便系统在启动时重新组装镜像阵列。

当你要在现有系统上配置软件 RAID 1 时,通常需要先缩减分区、创建镜像阵列,再迁移数据。请务必先在备用机器上测试这一路径。

在 Windows Server 上配置软件 RAID 1

Windows Server 通过“磁盘管理”来处理镜像。按下 Windows 键 + R,输入 diskmgmt.msc,然后按 Enter。

  1. 确认两块磁盘都已显示;如果有磁盘状态为“未初始化”,先进行初始化。
  2. 右键单击启动卷,选择“添加镜像”。
  3. 选择第二块磁盘作为镜像目标,然后确认。
  4. 等待重新同步完成后,再进行重启或其他更改。

“磁盘管理”是在卷级别对启动卷进行镜像,因此你不需要手动分区。在复制完成之前,镜像状态会显示为“正在重新同步(Resynching)”。如果你是在一台已经存在 RAID 阵列的服务器上配置软件 RAID 1,请先删除旧配置,并确认磁盘已经清理干净。

验证镜像系统盘

检查阵列状态与启动完整性

一个从未测试过的镜像,只能算是猜测。在真正信任阵列之前,请先执行一次重启测试。在 Linux 上,使用 mdadm --manage /dev/md0 --fail /dev/sdb1 将一块磁盘标记为故障,然后将其移除并重启。服务器应当能够依靠剩余那块磁盘正常启动。在 Windows Server 上,请先关机,断开其中一块磁盘,再次启动。确认操作系统能够加载,且你的服务能够正常启动。之后重新连接磁盘,并等待镜像重新同步。这个测试能够证明引导加载程序确实安装在两块磁盘上,而这恰恰是大多数人在配置软件 RAID 1 时最容易做错的一步。

请定期读取阵列健康状态输出。在 Linux 上,cat /proc/mdstat 会显示每个阵列及其状态。健康的镜像会将两个成员盘都标记为活动,状态显示为 [UU]。降级阵列则会显示 [U_],表示有一个成员缺失或故障。使用 mdadm --detail /dev/md0 可以查看更详细的信息,包括故障设备和重建进度。在 Windows Server 上,打开“磁盘管理”,查看卷状态。健康镜像会显示为 Healthy;损坏的镜像则会显示为 Failed Redundancy 或 At Risk。将鼠标悬停在卷上,可以查看是哪块磁盘掉线。

每次重启后,以及每次发生磁盘事件后,都应检查这些输出。镜像可能会悄无声息地损坏,而状态行往往是你最早收到的警告。请把健康状态下的输出记录一次,作为后续对比的基线。

维护与故障排查

更换故障磁盘并重建

降级阵列仍然可以继续运行。只是其中一个成员已经掉线,镜像现在只能依靠剩余磁盘提供读写服务。在重建完成之前,你已经不再具备冗余,因此应将这种状态视为紧急情况,而不是“还能凑合用”。

首先确认故障。运行 cat /proc/mdstat,查找类似 [2/1] [U_] 的状态,这表示有一块磁盘缺失或故障。然后按照以下顺序操作:

  1. 物理更换故障磁盘,并在新磁盘上创建新的 RAID-autodetect 分区,使其分区类型与仍在工作的成员盘一致。
  2. 使用 mdadm --manage /dev/md0 --add /dev/sdc1 将新分区加入阵列。工具会确认设备已添加。
  3. 再次运行 cat /proc/mdstat,确认同步已经开始。输出中会显示新设备,例如 sdc1[2],以及恢复进度行。
  4. 等待同步完成后再次检查。健康且已重建完成的阵列会显示 [2/2] [UU],表示两个成员都处于活动且同步完成的状态。

在恢复期间,不要重启,也不要拔掉另一块磁盘。务必让复制过程先完成。

设置监控与告警

镜像可能在没有任何明显症状的情况下损坏。服务器依旧可以继续提供服务,因为它只是从单块磁盘上读写,而屏幕上不会出现任何警告。真正的危险正是在于这种沉默,因为一旦第二块磁盘再出问题,系统就会在毫无后备的情况下直接中断。

请设置定期读取阵列状态的监控,并在状态偏离健康值时立即发出告警。在 Linux 上,可以监控 /proc/mdstat,或者运行 mdadm --detail,一旦状态不是 [UU] 就触发告警。在 Windows Server 上,则应监控“磁盘管理”中的卷状态,并在出现 Failed Redundancy 或 At Risk 时发出警报。将告警发送到真正有人查看的渠道,并至少测试一次告警链路,确保它确实会触发。

每次重启后、每次发生磁盘事件后,都要重新检查状态。保留一份健康输出的基线记录。配置软件 RAID 1 只是容易的开始;在第二块磁盘损坏之前及时发现第一次“静默损坏”,才是真正保护服务器的关键。

现在你已经掌握了完整路径:检查前提条件、在 Linux 或 Windows Server 上构建镜像、验证镜像,并持续维护它。其中有两个步骤尤其需要格外谨慎:第一,在两块磁盘上都安装引导加载程序,而不是只装在第一块上;第二,亲自验证在移除其中一块磁盘后,服务器是否仍能正常启动。只要跳过其中任一步,镜像就可能在你最需要它的时候失效。

请把阵列视为一项持续性的职责。每次重启后、每次磁盘事件后,都要检查它的状态。一次静默损坏,意味着你实际上只剩下一块磁盘,却没有任何警告。软件 RAID 1 只需配置一次,但检查它的状态必须长期坚持。

常见问题

RAID 1 能替代常规备份吗?

不能。镜像只能防止单块磁盘故障,除此之外并不能保护你。它会即时复制每一个错误,包括误删除文件和数据损坏。你仍然需要独立备份,以应对误删、勒索软件和站点级灾难。

两块磁盘必须一样大吗?

尽量让它们尽可能接近。镜像只能使用较小成员盘的容量,因此更大的那块磁盘会浪费空间。使用相同型号的磁盘,也能让性能表现更可预测,并简化后续更换流程。

可以给已经运行在单盘上的系统添加镜像吗?

可以,但路径因平台而异。Windows Server 可以直接为启动卷添加镜像;而在 Linux 上,你通常需要缩减分区、建立阵列并迁移数据。请先在备用机器上测试该流程。

重建期间会对服务器性能造成什么影响?

阵列会在提供正常业务读写的同时,把数据复制到新成员盘上。在同步完成之前,磁盘响应速度通常会变慢。应避免重写入负载,也绝不要在重建过程中重启或拔掉另一块磁盘。

软件 RAID 1 能在虚拟机中使用吗?

可以,但通常虚拟化平台本身已经提供了冗余。添加来宾系统级镜像之前,请先确认你的服务提供商或虚拟化环境的存储配置。在两个层面重复做保护,往往只会增加开销,而不会带来额外安全性。