我需要将我的 CentOS 服务器迁移到另一台具有相同系统发行版的服务器上。我还不知道硬件除了内存和 GHz 数量外还有多大区别(发布了关于此问题的单独问题)
我一直在原始服务器上手动编译了大量库,并将它们安装到标准位置,但没有保留记录:)。(没有人会因此解雇我——我只是浪费时间和金钱,并且希望能够学到一些东西)
迁移还将涉及移动用户资料、设置权限、文件 ACL。(这里是关于移动用户账户的问题,但没有关于 facl 的内容)
世界上有什么东西可以帮助我在新主机上重新创造出这头野兽吗?
是否有任何工具可以以更有序的方式实现这种迁移?(预防或者更活跃工具)
显然我不是系统管理员 - 但我希望学到更多。谢谢。
有一个类似问题关于迁移 Windows 服务器 - 就我而言是 Linux。
答案1
SystemRescueCD(http://www.sysresccd.org) 现在包括部分图像和档案归档。这两种工具都可以进行磁盘到磁盘、分区到分区或磁盘到映像到磁盘的复制(如 Symantec Ghost)。fsarchiver 稍新一些,具有一些更好的功能,但仅限命令行。partimage 有一个基于 curses 的 GUI,有一些缺陷,并且似乎目前没有维护,但仍然运行良好。这基本上允许您将完整的磁盘映像从旧磁盘传输到新磁盘。
如果您想要将配置和数据从旧服务器移动到新的干净服务器,您可能需要在 /etc 中编辑的任何内容、从任何数据库获取的转储以及任何其他应用程序数据。/etc/passwd、/etc/shadow 和 /etc/group 应该可以轻松传输。用户主目录也应该相对容易地传输。如果您的 ACL 在 ldap 中,我想您应该能够从一台服务器同步到另一台服务器。我不知道 facl,我从来没有看过它。
如果您只是使用磁盘映像方法,则需要确保旧机器的内核可以在新机器上运行。您可能需要启动 livecd(如 sysresccd)来修改和构建它,然后才能启动。
答案2
如果目标磁盘至少与原始磁盘一样大,那么您可以将它们连接到同一个系统上。然后执行dd /dev/sda /dev/sdb
,假设 sda 是原始磁盘,sdb 是目标磁盘。
如果没有,则将实时 CD 放入目标系统并设置文件系统,使其与原始主机上的文件系统相同。如果系统位于同一网络上,并且您相信没有人会窥探,则使用 FTP 将每个文件复制到新主机,否则使用 SFTP 或 SCP。您要检查的一件事是 /etc/fstab,以确保提到的任何磁盘标签都可以通过标签引用。
答案3
通常我会考虑使用 DD over Netcat 或 Partimage 来对系统进行映像处理,但您留言说您无法物理访问该设备。这使事情变得复杂,因为您无法在不冒数据不一致风险的情况下对任何内容进行映像处理(除非您将所有数据放在可以卸载的单独分区中)。
一种可能性是尝试将其转换为虚拟机。VMWare Converter 将毫无困难地创建正在运行的 Linux 系统的映像(从我将公告板系统转换为 ESXi 系统上的虚拟机时开始)。转换后,我只需调整网络系统(Ubuntu)。
但是,作为虚拟机,如果您希望将来使用系统做更多的事情,那么您以后在复制和重新部署系统时会获得更大的灵活性。
答案4
我一直在使用 Clonezilla 制作桌面映像,但绝对没有什么可以阻止它在任何机器上运行。
诀窍是获取具有足够空间来保存系统映像的附加存储或网络存储。如果是我,我会使用本地子网上的 NFS 来存储映像。
该过程的工作方式是关闭机器,然后插入 Clonezilla Live CD(假设您没有 clonezilla 服务器,这似乎是可能的,因为如果有的话您就不会问这个问题了)。Clonezilla 启动,然后让您选择是否要对分区或整个磁盘进行映像。您可能希望对整个磁盘进行映像,因为源和目标是相同的。它会询问您要将映像存储在何处,因此请选择 NFS 服务器,然后它应该设置网络并询问服务器和目录。输入这些后,它会通过网络将映像复制到 NFS 服务器。
当需要对新服务器进行映像处理时,只需执行与之前相同的操作,但要告诉 Clonezilla 您想要恢复映像,然后按照上述说明进行操作。