我想使用两个新磁盘将非 RAID Linux 系统转换为 RAID1。我希望以最少的停机时间完成此操作。
除了添加磁盘并关闭到单用户模式来复制数据之外,有没有办法在系统运行时进行这种转换,只需短暂停机即可安装新磁盘/删除旧磁盘?
答案1
这是我近期需要做的事情。它应该是这样的:
关闭并安装新驱动器
分区并创建 RAID 阵列
跨 Rsync 数据
再次 Rsync
降至单个用户
再次 rsync
设置引导加载程序
重新启动进入新驱动器
一旦你满意了,删除旧驱动器
这确实需要两到三次重启,并且在执行第二次 rsync 时会有一些停机时间,但希望不会花费太长时间。通过计算第二次 rsync 所花费的时间,您应该可以了解停机期间 rsync 所花费的时间。第二次 rsync 应该能够赶上第一次 rsync 期间修改的文件。尝试在第二次 rsync 和切换到单个用户之间留出尽可能短的时间。这可以减少第三次 rsync 需要处理的数据量。
答案2
如果您不介意丢失复制期间修改的文件更改,并且您正在对当前磁盘使用 LVM,那么您可以创建当前磁盘的快照并在系统在线时进行复制。自创建快照以来对系统所做的任何更改都不会传输到新磁盘。
如果您不使用 LVM,或者您不想丢失对当前系统所做的任何更改,那么减少停机时间的一个好方法是使用 rsync 进行复制:首先在系统运行时运行它,然后在复制完成后登录单用户模式并再次运行 rsync。这次它只会复制自您第一次运行 rsync 以来更改的文件,因此速度应该会快得多。
答案3
如果您正在使用 LVM,则可以使用“pvmove”命令。
我还没有测试过这个,所以你几乎肯定想做的第一件事就是建立一个像你现在设置的系统一样的测试系统,然后按照你计划的程序来验证它是否按你的意愿工作并充实细节。
它看起来像这样:
- 正常创建 RAID 阵列。
- 使用“pvcreate”将其变成物理卷。
- 使用 pvmove 将 LVM 移动到 RAID 阵列。(请完整阅读 pvmove 手册页以了解其局限性)
- 从 LV 中删除非 RAID pv。
- 将 /boot 移至新驱动器(可能通过另一个 RAID-1 阵列)
- 更新引导加载程序配置并将引导加载程序放在两个驱动器上。
- 确保 initrd 具有适当的 RAID 模块。
- 重新启动并测试。
笔记:pvmove 存在问题,在根分区上执行 pvmove 时可能会导致其死锁。
尝试一下,看看是否有效。
肖恩