我想请任何可能已经具备我即将获得的经验的人提供一些建议。
我们即将用一些更大的磁盘升级 POP 服务器中的 RAID-1 阵列。系统本身大约有 6 年的历史(我是最初构建它的人),运行 FreeBSD 4.9,RAID 控制器是 Adaptec 2400A。操作系统位于单独的驱动器上。由于成本、新硬件的不确定性以及旧 PCI 控制器的不可用,我们已经考虑并拒绝了完全更换控制器和驱动器的想法。
我搜索了有关此过程的文档,但没有找到任何文档。死树格式也没有提及它。
可以这么说,我的计划到目前为止是这样的:
- 通知用户。
- 对数据进行完整备份。
- 关闭服务器,更换阵列中的驱动器 2。
- 启动服务器,让阵列重建。
- 再次关闭服务器(可能在第二天),并更换驱动器 1 和阵列中的热备件。
- 希望这会使阵列的大小自动变大,或者使用它附带的磁盘上的存储管理软件来摆弄它。
我不喜欢以“希望”结尾的计划。这就是我问Serverfault的原因。“在测试平台上测试它”也不是一个真正的选择(这就是原来的“更换控制器”选项死亡的原因)。
当然,最后一个可能的选择是“核对驱动器并构建一个新驱动器,然后恢复备份”,但是在这种情况下很可能会丢失邮件,以及额外的停机时间。我宁愿我的计划按我应该的方式进行。
注意:仅当您可以在系统中物理安装更多驱动器而无需先卸下旧驱动器时,才可能进行以下操作。
我已成功用于此类任务的一种方法是在现有文件系统仍在使用时使用 rsync 创建和填充新文件系统,然后在方便的时间安排切换到新 fs。这最大限度地减少了停机时间并最大限度地减少了下班后的工作,因为大部分复制可以在系统仍在正常运行时完成。
总停机时间只是进行最终 rsync 和重新配置所需的时间(下面的步骤 8-12)。
在 linux 上,您甚至可以使用 ionice 为 rsync 作业提供低 IO 优先级,以最大程度地减少性能影响,因为 rsync 需要多长时间并不重要。我希望freebsd 也有类似的能力。
一般程序是这样的:
警告用户会有短暂的中断(足够长的时间让您关闭机器并安装新磁盘)。如果您的服务器具有热插拔托架,则无需执行此步骤。
在预定的时间,安装新磁盘并使用它们创建新的 RAID 阵列和文件系统。
将其挂载为 /mnt
rsync 你的旧文件系统到它
根据需要重复第 4 步。您可以无限期地延迟接下来的步骤,直到您有合适的时间窗口来完成工作。
安排一些停机时间并警告用户。
在中断之前立即再次运行 rsync。
关闭所有正在写入相关文件系统的进程(例如 MTA 和 pop/imap 守护进程等)。如果这是根 fs 或者如果有许多守护进程使用 fs,那么这意味着重新启动到单用户模式。
现在旧的 fs 是静态的(没有更新),做一个最后的 rsync。这不会花很长时间,因为新的 fs 几乎已经是最新的了。在此之后,新 fs 现在将是旧 fs 的完整最新快照。
重新配置任何必要的东西,以便使用新的 fs 而不是旧的 fs。如果是root fs,则意味着将MBR写入新磁盘,编辑fstab等。如果它只是一个数据分区,则卸载新 fs,然后卸载旧 fs,并将新 fs 安装在它的位置。编辑 fstab 以反映新设置。
仔细检查你没有忘记任何东西:)。修复并重复直到完成。
现在重新启动您关闭(或只是重新启动)的进程。
您可以在闲暇时退役并移除旧驱动器。
我已经使用这种方法的变体将服务从一台机器移动到另一台机器,例如用新的文件服务器替换老化的文件服务器时。基本思想是通过在后台进行大部分复制来尽可能减少用户可见的停机时间。
RAID 不应该像您想的那样神奇地扩展您的 HDD 分区(根据我对 RAID 的理解)。由于您首先将驱动器 1 镜像到驱动器 2(新驱动器),因此它将镜像旧的驱动器,该驱动器会更小。您将不得不使用gparted或其他东西来调整它的大小。
为了像这样升级 HDD 作业,我在UBCD4Win磁盘上使用DriveImageXML 。
我的 Admin Wiki 中有详细的升级过程:
注意:它也可以与映射的网络驱动器结合使用。
我的维基的步骤:
注意:建议在恢复之前将镜像重新创建为 0 字节空镜像(如果需要),这样可以节省您的时间。
此方法仅适用于从较小到较大的 HDD 驱动器升级。DriveImageXML 不会还原到大小不同或较小的驱动器。强烈建议新驱动器在所有情况下都更大
在您的情况下,它将是:
使用 DriveImageXML 执行此操作似乎涉及一个额外的步骤,但该过程允许您进行可靠的备份,这很重要。
最后一个问题:DriveImageXML 无法备份隐藏分区。
我有几个 2400A,好消息是你很幸运!
2400A 是 Adaptec 第一个支持“在线扩展”功能的 ATA 单元。我认为您正在运行一个三磁盘阵列,留下一个备用通道?
在我看来,您的建议可能会奏效。老实说,我从未尝试过这种方式(我只添加过相同容量的新磁盘),但阵列的“自动”调整大小可能不会发生。但是您将能够启动您的 Adaptec 管理软件并在那里调整其大小以使用所有空闲空间。
请注意 - 请在尝试任何操作之前确保您有 100% 的完整备份。RAID 不是备份的替代品,因此如果出现任何问题,您将获得根深蒂固。
实际上,如果您进行 100% 备份,那么您很可能只需将阵列核爆到王国来,更换所有三个磁盘,创建新阵列并恢复备份(如您所述)。总体上可能会更快(但当然是更多的停机时间)。
您可以将 2 个新驱动器添加到控制器吗?如果是这样,请将它们添加为新阵列,将它们与当前 RAID1 一起运行,然后将所有数据迁移到新阵列。一旦数据在新的 RAID1 上,您就可以删除当前的 RAID1,因为您说您的操作系统在另一个驱动器上。
另一种方式更多的是在它的切面。设置任何访问 RAID 1 的服务软件(邮件等),不要在启动时先启动
完全关闭服务器
将当前 RAID 1 映像到另一台服务器
这需要能够正确查看 RAID 的映像软件
还有另一台有足够空间的服务器。尽管您可以为此使用 USB 驱动器
移除当前的 RAID 1 驱动器
安装新的 RAID 驱动器并在 bios 中配置 RAID
将驱动器映像回新的 RAID 并同时或在映像恢复后使用另一个实用程序扩展它。
启动操作系统并查看它是否正确显示。
如果是这样,请再次启动软件
如果它失败,不起作用等。您应该能够将旧的 RAID 1 驱动器重新放入并很快再次运行。
我不会冒险用这样的动作生产机器。控制器不会自动扩展逻辑磁盘,但是重建后,您可能可以在新添加的备用空间上创建第二个raid1
我投票支持备份->测试->新阵列->恢复