扩大硬件 RAID-1 阵列

扩大硬件 RAID-1 阵列

我希望向那些可能已经拥有我即将获得的经验的人提供一些建议。

我们即将使用一些更大的磁盘升级 POP 服务器中的 RAID-1 阵列。系统本身已有大约 6 年历史(最初是我构建的),运行 FreeBSD 4.9,RAID 控制器是 Adaptec 2400A。操作系统位于单独的驱动器上。我们已经考虑并拒绝了完全更换控制器和驱动器的想法,原因是成本、新硬件的不确定性以及旧 PCI 控制器不可用。

我搜索了有关此过程的文档,但没有找到任何内容。死树格式也没有提及它。

到目前为止,我的计划是这样的:

  1. 告知用户。
  2. 对数据进行完整备份。
  3. 关闭服务器,更换阵列中的驱动器 2。
  4. 启动服务器,重建阵列。
  5. 再次关闭服务器(可能是第二天),并更换阵列中的驱动器 1 和热备用。
  6. 希望这可以使阵列的大小自动变大,或者使用随附磁盘上的存储管理软件来摆弄它。

我不喜欢以“希望”结尾的计划。这就是我询问 Serverfault 的原因。“在测试台上测试”实际上也不是一个选项(这就是最初的“更换控制器”选项失效的原因)。

当然,最后一个可能的选择是“删除驱动器并构建一个新驱动器,然后恢复备份”,但这样做很有可能会丢失邮件,并且会造成额外的停机时间。我宁愿我的计划按应有的方式进行。

答案1

注意:仅当您无需先移除旧驱动器即可在系统中物理安装更多驱动器时,才有可能执行以下操作。

我曾成功用于此类任务的一种方法是,在现有文件系统仍在使用时使用 rsync 创建和填充新文件系统,然后在方便的时间安排切换到新文件系统。这可以最大限度地减少停机时间,并最大限度地减少下班后的工作,因为大部分复制工作可以在系统仍在正常运行时完成。

总停机时间只是完成最后的 rsync 和重新配置(下面的步骤 8-12)所需的时间。

在 Linux 上,您甚至可以使用 ionice 为 rsync 作业赋予较低的 IO 优先级,以最大限度地减少性能影响,因为 rsync 需要多长时间实际上并不重要。我预计 freebsd 会有类似的功能。

一般程序如下:

  1. 警告用户将会发生短暂停电(足够长的时间让您关闭机器并安装新磁盘)。如果您的服务器具有热插拔托架,则此步骤不是必需的。

  2. 在预定的时间,安装新磁盘并使用它们创建新的 raid 阵列和文件系统。

  3. 将其挂载为 /mnt

  4. 将你的旧文件系统同步到它

  5. 根据需要重复步骤 4。您可以无限期地延迟下一步,直到有合适的时间窗口来完成工作。

  6. 安排一些停机时间并警告用户。

  7. 在中断之前立即再次运行 rsync。

  8. 关闭所有正在写入相关文件系统的进程(例如 MTA 和 pop/imap 守护进程等)。如果这是根文件系统,或者有许多守护进程使用该文件系统,则意味着重新启动进入单用户模式。

  9. 现在旧的 fs 是静态的(未更新),执行最后一次 rsync。这不会花费很长时间,因为新的 fs 几乎已经是最新的了。此后,新的 fs 现在将是旧 fs 的完整最新快照。

  10. 重新配置所有必要内容,以便使用新 fs 代替旧 fs。如果它是根 fs,则意味着将 MBR 写入新磁盘、编辑 fstab 等等。如果它只是一个数据分区,则卸载新 fs,然后卸载旧 fs,并在其位置安装新 fs。编辑 fstab 以反映新设置。

  11. 仔细检查您是否忘记了任何东西:)。修复并重复,直到完成。

  12. 现在重新启动您关闭的进程(或者只是重新启动)。

您可以随意淘汰或移除旧驱动器。

我使用过这种方法的变体将服务从一台机器移动到另一台机器,例如,用新的文件服务器替换老化的文件服务器。基本思想是通过在后台进行大部分复制来尽可能减少用户可见的停机时间。

答案2

RAID 不会像你想象的那样神奇地扩展你的硬盘分区(根据我对 RAID 的理解)。由于你首先将驱动器 1 镜像到驱动器 2(新驱动器),因此它将镜像较小的旧驱动器。你必须使用分区或者其他的东西。

对于升级此类 HDD 作业,我使用驱动图像XMLUBCD4Win磁盘。

我的 Admin Wiki 中详细介绍了升级过程:

注意:它也可以与映射的网络驱动器结合使用。

来自我的 Wiki 的步骤:

  • 使用 UBCD4Win 光盘启动目标箱。
  • 运行 DriveImageXML。
  • 将 HDD A 上的所有分区逐一备份到单独的磁盘或映射驱动器。
  • 移除 HDD A。
  • 安装 HDD B。
  • 使用 Windows 磁盘管理器将 HDD A 分区重新创建为所需的新大小。如果需要,请重新启动。
  • 使用 DriveImageXML 恢复备份。它将允许您将文件恢复到更大的硬盘上。
  • 运行 FixMBR 修复 MBR。
  • 尝试启动您的操作系统。
  • 如果您无法启动操作系统,请尝试安全模式,然后尝试恢复模式。
  • 检查磁盘管理器以确保一切正确。
  • 由于驱动程序或 Windows 无法识别分区,您可能需要在启动操作系统后重新启动。只需继续修复磁盘管理器中的任何分区问题即可。
  • 在给出 OK 之前,请测试机器是否正常工作和运行。

注意:建议在恢复之前将镜像重新创建为 0 字节空镜像(如果需要),因为这样可以节省您的时间。

此方法仅适用于从较小硬盘驱动器升级到较大硬盘驱动器的情况。DriveImageXML 不会恢复到大小不相同或较小的驱动器。强烈建议在所有情况下新驱动器都更大

对于你来说,情况是这样的:

  • 制作 DriveImageXML 映像备份并存储在某处
  • 拆除 RAID 中的旧驱动器
  • 在 RAID 中安装两个新驱动器
  • 将 RAID 清零
  • 将 DriveImageXML 映像应用于新的 RAID

使用 DriveImageXML 执行此操作可能看起来似乎涉及一个额外的步骤,但该过程可以让您获得可靠的备份,这很重要。

最后一个问题:DriveImageXML 无法备份隐藏分区。

答案3

我有几个 2400A,好消息是你很幸运!

2400A 是 Adaptec 推出的第一款支持“在线扩展”功能的 ATA 设备。我想您正在运行一个三磁盘阵列,留下一个备用通道?

在我看来,您所建议的方法可能有效。说实话,我从未尝试过这种方法(我只添加过相同容量的新磁盘),但阵列的“自动”调整大小可能不会发生。但您可以启动 Adaptec 管理软件并在那里调整其大小以使用所有备用空间。

需要注意的是 - 在尝试任何操作之前,请务必确保您拥有 100% 完整备份。RAID 不能替代备份,因此如果出现任何问题,您都会被 root。

事实上,如果您进行 100% 备份,那么很有可能您可以彻底摧毁阵列,更换所有三个磁盘,创建新阵列,然后恢复备份(如您所述)。总体而言可能会更快(但当然停机时间会更长)。

答案4

我不会冒险让生产机器采取这样的行动。控制器不会自动扩展逻辑磁盘,但在重建后,您可能能够在新添加的备用空间上创建第二个 raid1

我投票支持备份->测试->新阵列->恢复

相关内容