将linux备份恢复到新硬件

我正在看在这个 serverfault问题的指示,以恢复服务器的备份到新的硬件。 我对整个过程有点困惑,并有一些我很想回答的具体问题。

如果遵循定义的备份过程,那么这显然与将物理驱动器取出并放入目标机器相同?

不同的硬件设备会发生什么情况,在目标机器上进行备份还原后,是否需要手动设置原来不存在的硬件?

使用旧系统的完整备份进行干净的裸安装和复制是什么问题?

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

最后,我真的很想在移植到新硬件时保留所有安装的程序和configuration(包括像apache,bind等),并且安装程序处理操作系统和驱动程序问题。 这完全可行吗?

谢谢

如果遵循定义的备份过程,那么这显然与将物理驱动器取出并放入目标机器相同?

很多。 如果新系统接受相同types的驱动器,那么您可能只需将驱动器移到其他位置即可,而且大多数情况下都不需要其他工作。

不同的硬件设备会发生什么情况,在目标机器上进行备份还原后,是否需要手动设置原来不存在的硬件?

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

对于Linux来说,没有GUI的服务器最容易中断的事情是存储。 因此,如果您的旧盒子是IDE,而您的新盒子是SCSI或SATA,则需要更改您的fstab,boot-loader等以反映新的分区。

用于台式机的系统有点棘手,因为video/audio/ wifi设备往往不太受支持,但即使这样,系统仍然会很容易启动,你只需要调整使用那些软件的configuration设备。

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

不是,它只是在那里使新系统上的分区相同。 您可以完全修复新驱动器,不过您可以在复制文件之后调整boot-loader和fstab,以反映新的分区结构。

如果硬盘驱动器已经安装了目标操作系统,那么通常只需要在其顶部进行恢复并重新启动即可,但是您必须确保grub.conf和/ etc / fstab没有驱动器标签或UUID在那里(如果他们这么做的话,通常只需指定设备名称,以备日后再次恢复时更容易)。 我会从恢复中排除/引导(也可能是/ etc / fstab,以避免上述)。

如果系统已经可以启动,则不需要再次安装GRUB,如果它是一个没有完全安装的新硬盘,则需要确保它知道在哪里find内核,所以简单的grub-install hd0 (或硬盘驱动器)应该这样做。

然后,重新启动并交叉手指。

该线程中描述的过程通常称为裸机还原 。 正如名字所说,这意味着从一个空的硬盘开始恢复原始系统(通常在全新的硬件上)。 它有一些优点,最显着的是你得到一个原始的精确副本,包括更多异国情调的目录中的文件,否则你可能会忽略。 但裸机恢复也有一些缺点:

  1. 它在备份媒体上占用更多的空间。 您的备份磁带可能会被20个相同的操作系统副本堵塞,而您每晚的备份运行可能主要包括复制的内容,如果需要可以轻松地从CD重新安装。
  2. 您的新服务器可能与旧机器不同。 也许你现在有了旧的硬件有SCSI的SATA,也许显卡对于旧的内核来说太新了,那种东西。 正如Zoredache所说,今天的股票内核很less出现这个问题,但是也许最初的理由是,你的系统正在运行一个非股票自编译的内核。
  3. 由于您在还原开始时没有运行的操作系统,您需要第二个系统来启动该进程。 现在,这几乎总是一些USB或者带有所有必要工具的现场CD,但是我还记得那些为了这个目的而制作救援软盘的日子,当我们需要它们的时候,我们的手指越过我们的手指。

或者,您可以select仅恢复非操作系统目录,例如所有家庭和应用程序目录。 然后,恢复系统成为一个由两部分组成的过程:1.在新机器上安装操作系统,最好使用像Kickstart这样的自动安装方法,然后2.从备份介质中恢复所需的用户和应用程序目录。 这避免了裸机的缺点,但是也带来了一个缺点:您必须能够定义备份目录。 在一个新的服务器上,这可能不成问题,但是如果你的系统是那个已经不在公司的人build立起来的老东西了,而且过去两年谁也不敢碰,那可以是严重的问题。

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

为了启动系统,你可以build立必要的驱动程序,这些驱动程序主要与内核中的存储(SCSI,RAID,ext4等文件系统等)有关。 这个解决scheme需要重新编译内核,这可能不是微不足道的。

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

如果你像我一样懒:D你可以使用下面的过程:

  1. 在目的地(您想要恢复备份的位置)上,尽可能安装与您的备份或映像类似的分发。 作为一个例子,如果你有一个Centos 5.3的备份,你应该在目的地上安装Centos 5.3或(如果你没有Centos 5.3的话)Centos 5.4; 即使是RHEL5.4也能做到。 但是,Slackware 13.1或Debian 5.3可能并不适合!

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

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

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

  6. 清除已恢复系统的/etc/blkid.tab(如果存在) 例如:> /mnt/restored/etc/blkid.tab
  7. 卸载文件系统并重新启动; 例如:cd /; umount / mnt /还原; umount / mnt / external_storage; 重启

上述程序就是我们现在使用一年以上的程序。