将整个 Centos 服务器复制到另一个

将整个 Centos 服务器复制到另一个

我花了很长时间安装当前的 Centos 专用服务器 (OVH、Kimsufi)。我想将其移动到另一台服务器,该服务器将具有不同的硬件,但操作系统保持不变。

我的问题是:有没有一种简单的方法可以将整个系统原封不动地复制到新服务器,而不会弄乱其现有的硬件设置?克隆整个磁盘是不可能的,因为新服务器将具有不同的硬件(但磁盘大小将保持不变)。

那么是否可以只复制某些文件夹?例如 /etc、/home、/usr、/var,所有已安装和配置的内容都驻留在这些文件夹中,还是这仍会破坏新服务器?我尚未创建任何自定义根文件夹。

答案1

对于 Redhat 衍生系统(包括 CentOS),您的硬件配置主要位于 /etc/modprobe.conf、/etc/sysconfig/hwconf、初始 ramdisk 映像(/boot/initrd-[kernel-version].img)和 /etc/udev 目录(这是存储持久设备名称的地方)。

但是,您可能还想记录系统调整列表。为此,您可以使用 RPM 数据库为您提供已修改的配置文件列表(它存储任何软件包的原始安装配置文件的 MD5 总和,您可以将其与文件系统中的现有文件进行比较以生成已修改内容的列表)。此外,列出文件系统中存在但不在 RPM 数据库中的所有内容。最后,列出已安装的所有软件包,可能将其分为两个列表 - 操作系统提供的软件包和第三方软件包。这应该为您提供了一组需要放入灾难恢复文档的最少文件,同时帮助您在需要时克隆服务器。

答案2

如果您的硬件坏了,您将如何从备份中恢复它?您至少应该知道您的配置文件在哪里,并且您的情况中的一种途径可能正在解决这个问题。(您重视调整的事实意味着这些不会全部位于默认位置)

或者说,这是虚拟化如何带来极大好处的一个很好的例子。如果您使用类似 vmware 转换器的东西,您可以为您的服务器创建一个虚拟机,然后将其复制或移动到任何硬件上。

答案3

dd对于简单的磁盘布局,使用克隆硬盘没有任何问题,正如 Kevin 和其他人所建议的那样。但如果您的分区布局更复杂,这可能会有所帮助。

最近我完成了这项工作,并且使用的是 CentOS 系统,我发现最好的方法是在新硬件上安装一个骨架系统,从 RO 媒体启动新硬件,转储旧系统并在新系统上恢复(在骨架安装之上),在恢复的系统上调整一些特定于硬件的设置,就这样。

更详细地:

  1. 确保您现有的系统完全是最新的(yum update)。
  2. 在新硬件上安装相同版本和架构的最小 CentOS 安装。您需要在相同的挂载点上保留相同数量的分区,尽管它们的大小可以不同,位于不同的设备上等。
  3. 使现有系统静止(即启动到单用户并启动网络)。
  4. 从救援媒体(安装媒体,处于救援模式)启动新系统,并挂载最近安装的分区。在网络上为其指定一个临时地址。确保 root 可以ssh进入。
  5. 对于新/旧系统对上的每个分区:dumpe2fs 0f - /partition | ssh root@newbox "cd /partition; restore2fs rf - ."
  6. 在新系统上运行grub{,2}-install /dev/sda或适当运行。
  7. 在新系统上删除/etc/udev/rules.d/70-persistent-net.rules。确保新系统上的内容/etc/fstab与新硬件一致。
  8. 重新启动新系统(网络不会启动)。
  9. 登录新系统,查看出现的网卡,确保的内容/etc/sysconfig/network-scripts/ifcfg-*与新硬件上的接口名称和MAC地址一致。
  10. 重启。解决所有剩余问题。享受一杯当之无愧的饮料。

简而言之,就是这样。如果X在旧硬件上运行,您可能也必须修复它,但为什么要X在服务器上运行呢?

答案4

看一眼启动,RHEL/CentOS(以及 Fedora)的自动安装系统。它列出了要安装的软件包(可以通过 获得yum list installed,可能需要一些修改)和其他配置,并且可以在脚本部分添加本地配置。也许现在它不会有太大帮助,但保持 kickstart 文件更新将为下一次安装(或当您需要克隆安装时)节省大量工作。

相关内容