将 Linux 备份恢复到新硬件

将 Linux 备份恢复到新硬件

我正在按照以下说明进行操作serverfault 问题:将服务器备份恢复到新硬件。我对整个过程有点困惑,有几个具体问题我真的很想得到解答。

如果遵循定义的备份程序,这是否与取出物理驱动器并将其放入目标机器中明显相同?

如果硬件设备不同,会发生什么情况?在目标机器上备份恢复后,是否需要手动设置原始设备中不存在的任何硬件?

进行干净的裸安装并复制旧系统的完整备份有什么问题?

为什么复制 MBR 和分区表是重要的一步?

最后,当迁移到新硬件时,我真的很想保留所有已安装的程序和配置(包括 apache、bind 等),并让安装程序处理操作系统和驱动程序问题。这可行吗?

谢谢

答案1

如果遵循定义的备份程序,这是否与取出物理驱动器并将其放入目标机器中明显相同?

差不多。如果新系统接受相同类型的驱动器,那么您可能只需移动驱动器,大多数事情就可以正常工作,而无需任何其他工作。

如果硬件设备不同,会发生什么情况?在目标机器上备份恢复后,是否需要手动设置原始设备中不存在的任何硬件?

也许,请记住,如果您使用大多数主要发行版的库存内核,那么大多数硬件通常都会得到开箱即用的支持。如果您将驱动器从一个盒子移动到另一个盒子,那么一切可能都会正常工作。

对于 Linux,没有 GUI 的服务器最容易出问题的就是存储。因此,如果您的旧机器是 IDE,而新机器是 SCSI 或 SATA,则需要更改 fstab、引导加载程序等以反映新分区。

用于桌面的系统有点棘手,因为视频/声音/wifi 设备往往得不到很好的支持,但即便如此,系统仍然很容易启动,你只需要调整使用这些设备的软件的配置。

为什么复制 MBR 和分区表是重要的一步?

不是,它只是使新系统上的分区相同。您可以完全按照自己的喜好修复新驱动器,并在复制文件后调整新系统上的引导加载程序和 fstab,以反映新的分区结构。

答案2

如果硬盘上已经安装了目标操作系统,通常只需恢复并重新启动即可,但您必须确保 grub.conf 和 /etc/fstab 中没有驱动器标签或 UUID(如果有,通常只需指定设备名称即可,以防您以后需要再次恢复)。我会从恢复中排除 /boot(也可能排除 /etc/fstab 以避免上述情况)。

如果系统已经可启动,则无需再次安装 GRUB,如果是尚未完整安装的新硬盘,则需要确保它知道在哪里找到内核,因此简单的 grub-install hd0(或任何硬盘)就可以了。

然后,重新启动并祈祷。

答案3

该线程中描述的过程通常称为裸机恢复。顾名思义,它意味着从空硬盘开始恢复原始系统(通常在全新硬件上)。它有一些优点,最明显的是,您可以获得原始系统的精确副本,包括您可能忽略的更奇特目录中的文件。但裸机恢复也有一些缺点:

  1. 这会占用备份媒体的更多空间。您的备份磁带上可能会塞满 20 个相同的操作系统副本,并且您每晚的备份运行可能主要包括复制一些您可以在需要时轻松从 CD 重新安装的内容。
  2. 您的新服务器可能与旧机器不完全相同。也许您现在使用的是 SATA,而旧硬件使用的是 SCSI,也许显卡对于旧内核来说太新了,诸如此类。正如 Zoredache 所说,当今的库存内核很少出现此问题,但也许进行裸机恢复的最初原因是您的系统正在运行非库存自编译内核...
  3. 由于在恢复开始时您没有正在运行的操作系统,因此您需要第二个系统来启动该过程。如今,这几乎总是一些带有所有必需工具的 USB 或实时 CD,但我记得我们曾经为此目的创建救援软盘,祈祷它们在我们需要时能正常工作。

或者,您可以选择仅恢复非操作系统目录,例如所有主目录和应用程序目录。然后,恢复系统将分为两个部分:1. 在新机器上安装操作系统,最好使用自动安装方法,例如快速启动,然后是 2. 从备份介质恢复所需的用户和应用程序目录。这避免了裸机的缺点,但也有其自身的缺点:您必须能够定义备份目录。在较新的服务器上,这可能不是问题,但如果您的系统是某个旧系统,曾经由不再在公司工作的人设置,并且过去两年没人敢碰它,那么这可能是一个严重的问题。

答案4

据我所知,在另一台服务器上恢复一台服务器(即使是物理到虚拟或虚拟到物理)的唯一问题是启动系统。当系统启动时,一切都与以前相同,并且所有应用程序和服务器都应该正常工作。

为了启动系统,您可以构建必要的驱动程序,这些驱动程序大多与内核中的存储(SCSI、RAID、文件系统(如 ext4 等)有关。此解决方案需要重新编译内核,这可能并不简单。

另一个解决方案是使用初始 RAM 磁盘或 InitRD。您可以列出所需的驱动程序(即内核模块)并制作包含这些驱动程序的 initrd。尽管如此,这个解决方案需要一些洞察力。

如果你和我一样懒:D你可以使用以下步骤:

  1. 在目标位置(您要恢复备份的位置)安装与您获得的备份或映像尽可能相似的发行版。例如,如果您有 Centos 5.3 的备份,则应在目标位置安装 Centos 5.3 或(如果您没有 Centos 5.3)Centos 5.4;甚至 RHEL 5.4 也可以。但是,Slackware 13.1 或 Debian 5.3 可能不合适!

    • 我们唯一需要的是内核和 initrd;因此,您应该像备份系统一样保留影响它们(内核和 initrd)的内容。例如,您应该使用相同的文件系统(ext4、XFS 等)和相同的软件 RAID(RAID 0、RAID 1、RAID 5)(如果有)。
  2. 保留新安装系统的内核和 initrd 的副本。例如,使用以下命令从挂载在 /mnt/external_storage 上的外部存储上的 /boot 创建压缩的 tar 文件就足够了:tar czvf /mnt/external_storage/new_boot.tar.gz /boot

  3. 在目标上恢复您的备份或图像。
  4. 恢复从已安装系统复制的 /boot:

    • 使用 Live CD 启动
    • 挂载恢复系统的根文件系统;例如:mkdir -p /mnt/restored ; mount /dev/sda1 /mnt/restored
    • 从已安装的系统安装包含 /boot 副本的媒体;例如:mount /dev/sdb1 /mnt/external_storage
    • 恢复从已安装系统复制的 /boot;例如: cd /mnt/restored ; tar xzvf /mnt/external_storage/new_boot.tar.gz
  5. 如果需要,调整 lilo 或 grub 的配置。

  6. 如果存在,清理恢复系统的 /etc/blkid.tab;例如:> /mnt/restored/etc/blkid.tab
  7. 卸载文件系统并重新启动;例如: cd / ; umount /mnt/restored ; umount /mnt/external_storage ; reboot

上述程序是我们工作中已经使用一年的程序。

相关内容