增长一个硬件RAID-1arrays

我想从任何可能已经构成我即将获得的经验的人那里得到一些build议。

我们即将升级在我们的POP服务器与一些更大的磁盘RAID-1arrays。 系统本身已经有6年的历史了(我原来是自己开发的),运行FreeBSD 4.9,RAID控制器是Adaptec 2400A。 操作系统在一个单独的驱动器上。 我们已经考虑并拒绝了由于成本,新硬件的不确定性以及旧PCI控制器的不可用性而完全取代控制器和驱动器的想法。

我在这个过程中search了文档,但还没有find。 死树格式也没有提到它。

我的计划可以说是迄今为止:

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

我不喜欢以“希望”结尾的计划。 这就是为什么我要求Serverfault。 “在testing平台上testing”也不是真正的select(原来的“更换控制器”选项是如何去世的)。

当然,最后一个可能的select是“核心驱动器,build立一个新的,然后恢复备份”,但是,当发生这种情况时,会有明显的丢失邮件的可能性,以及额外的停机时间。 我宁愿按照我应该的方式来制定计划。

注意:只有在可以将多个驱动器物理安装到系统中而无需先移除旧驱动器的情况下,才能执行以下操作。

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

总停机时间只是执行最终的rsync和重新configuration所需的时间(下面的步骤8-12)。

在Linux上,甚至可以使用ionice为rsync作业提供较低的IO优先级,以最大限度地降低性能影响,因为它根本不在乎rsync需要多长时间。 我希望freebsd会有类似的function。

一般程序是这样的:

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

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

  3. 把它挂载为/ mnt

  4. rsync你的旧文件系统

  5. 重复第4步,只要你想要的。 你可以无限期地延迟下一步,直到你有一个合适的时间窗口来完成工作。

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

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

  8. closures正在写入相关文件系统的所有进程(例如MTA和pop / imap守护进程等)。 如果这是根fs或者使用fs的守护进程数很多,那么这意味着重启到单用户模式。

  9. 现在旧的fs是静态的(没有被更新),做一个最后的rsync。 这不会花很长时间,因为新的fs已经几乎是最新的了。 在此之后,新的fs现在将是一个完整的旧fs的最新快照。

  10. 重新configuration任何必要的,以便使用新的fs而不是旧的fs。 如果是根fs,那就意味着将MBR写入新磁盘,编辑fstab等等。 如果它只是一个数据分区,那么卸载新的fs,然后卸载旧的fs,并将新的fs安装到它的位置。 编辑fstab以反映新的设置。

  11. 小心检查你没有忘记任何东西:)。 修复并重复,直到完成。

  12. 现在重新启动您closures的进程(或简单地重新启动)。

你可以退休,并在你的闲暇时间删除旧的驱动器。

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

RAID不应该像你想的那样神奇地扩展硬盘分区(从我对RAID的理解中)。 由于您首先镜像驱动器1来驱动两个2(新驱动器),它将镜像将会更小的旧的。 你将不得不使用gparted或其他东西来调整它。

为了像这样升级硬盘作业,我在UBCD4Win磁盘上使用DriveImageXML 。

我的pipe理员Wiki中有详细的升级过程:

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

从我的Wiki的步骤:

  • 使用UBCD4Win光盘引导目标框。
  • 运行DriveImageXML。
  • 将HDD上的所有分区逐一备份到独立磁盘或映射驱动器。
  • 移除硬盘A.
  • 安装硬盘B.
  • 重新创build硬盘使用Windows磁盘pipe理器分区到新的所需的大小。 如果需要重新启动。
  • 使用DriveImageXML还原备份。 它将允许您将文件恢复到更大的硬盘。
  • 运行FixMBR修复MBR。
  • 尝试启动到您的操作系统。
  • 如果您无法启动到您的操作系统尝试安全模式,然后恢复模式。
  • 检查磁盘pipe理器,确保一切正确。
  • 启动进入操作系统后,可能需要重新启动,因为驱动程序或Windows无法识别分区。 只要不断修复磁盘pipe理器中的任何分区问题。
  • 在给出OK之前testing机器的工作原理和function。

注意:build议在恢复之前重新创build镜像为0字节的空镜像(如果需要),因为它会节省您的时间。

此方法仅适用于从小到大的HDD驱动器升级。 DriveImageXML不会恢复到不相同或更小的驱动器。 强烈build议所有情况下的新驱动器都要更大一些

在你的情况下,这将是:

  • 使DriveImageXML映像备份和存储在某个地方
  • 在RAID中撕掉旧的驱动器
  • 在RAID中安装两个新驱动器
  • 清零RAID
  • 将DriveImageXML映像应用到新的RAID

使用DriveImageXML做这件事可能看起来像是有一个额外的步骤,但是这个过程允许你有一个可靠的备份,在这个过程中很重要。

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

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

2400A是Adaptec首个支持“Online Expansion”function的ATA设备。 我认为你正在运行一个三磁盘arrays,留下一个备用频道?

这听起来像你的build议可能工作。 我从来没有试过这种方式说实话(我只是添加了相同容量的新磁盘),但“自动”resize的arrays可能不会发生。 但是,您将可以启动Adaptecpipe理软件并调整其大小以使用所有的备用空间。

只需一个注释 – 请在您尝试任何操作之前请确保您有完整的100%备份。 RAID并不是备份的替代品,所以如果出现任何问题,您就会生根。

事实上,如果你采取了100%的备份,那么你可能只需将arraysjoin王国,更换所有三个磁盘,创build新arrays,并恢复备份(如你所提到的)。 整体来说可能会更快(但是当然是更多的停机时间)。

你可以添加2个新的驱动器到控制器? 如果是这样,将它们添加为新arrays,请将它们与当前RAID1一起运行,然后将所有数据迁移到新arrays中。 一旦数据在新的RAID1上,您就可以删除当前的RAID1,因为您表示您的操作系统位于另一个驱动器上。

另一种方式是在切边。 设置任何访问RAID 1的服务软件(邮件等),不要先启动启动

完全closures服务器

将当前的RAID 1镜像到另一台服务器

  • 这需要图像软件才能正确看到RAID

  • 而另一台服务器上有足够的空间。 虽然你可以使用USB驱动器

删除当前的RAID 1驱动器

安装新的RAID驱动器并在BIOS中configurationRAID

将驱动器映射到新的RAID上,并在同一时间或使用另一个实用程序返回映像之后对其进行扩展。

启动操作系统,看看它是否显示正确。

如果是的话再次启动软件

如果失败,不起作用等。您应该能够将旧的RAID 1驱动器重新插入,并且可以很快再次运行。

我不会冒这样一个生产机器的风险。 控制器不会自动扩展逻辑磁盘,但在重build之后,您可能可以在新添加的备用空间上创build第二个RAID 1

我投票备份 – >testing – >新arrays – >恢复