1 个脚本设置。

1 个脚本设置。

我有两台服务器,A 和 B。我想将服务器 A 克隆到 B。A 运行 Linux,它们都是远程的,我无法对它们进行物理访问

解决这个问题的最佳方法是什么?

答案1

至少有三种不同的方法可以做到这一点。

1 个脚本设置。

此选项主要适用于具有适当文档的大型公司,并且可能扩展到具有 PXE 启动和 puppet 或类似设置的设置。

基本上,您在服务器 B 上重复配置服务器 A 的相同步骤。

如果您的设置足够大,那么这会非常有效(例如,您正在运行 100 台服务器,并且想要启动服务器 101。PXE 启动,告诉您的 puppet 配置它需要是 $type 的服务器,并在一小时后回来。完成!)。

设置工作量很大,但之后就完美了。而且,由于需要进行大量设置工作,复制一次设置可能不值得。

2 文件系统复制。

您可以将所有文件从服务器 A 复制到服务器 B,保留其权利和用户。rsync可能是实现此目的的最佳工具。

为此,您需要准备具有类似设置的目标服务器(例如复制分区设置),然后 rsync 大部分文件。这里棘手的部分是您不想 rsync 某些文件(例如跳过 /proc 和 /dev),并且您需要在服务器 B 上有一些东西来接收 rsync 文件。

最后,您可能希望从不同的磁盘启动服务器 B,或者使用 ILO/DRAC/.. 从桌面上的 liveCD iso 映像启动,使其磁盘保持空白并准备好接收 rsync 文件。

3 复制磁盘。

这与复制文件系统不同。这要容易得多,而且可能要快得多,但原始磁盘访问(例如使用 dd)会忽略所有文件系统更改。这意味着您真的不想复制正在运行的文件系统。

为了帮助您更轻松地理解这一点,请想象一本书。这本书有一个索引和四个故事。书的其余部分是空白的,这也很好地显示在书籍索引中。

现在我们开始复制。我们复制索引。我们复制故事 1,我们复制...
** 稍等片刻,让我在这里添加一个新故事并更改索引**
我们复制第 2、3、4 和 5 号站点...

我们现在有一本 q 书,其索引显示了四个故事(不是五个,因为我们在写第 5 个故事和五个故事之前复制了它)......一本腐败的书。

如果您使用原始磁盘访问来复制正在运行的系统,则可能会发生类似的事情。因此,在使用原始磁盘复制之前,请确保操作系统处于脱机状态。要么启动其他系统(例如从第二个磁盘、从本地 CD 或通过网络(PXE、DRAC 等)),然后进行复制。

[su] 上的大量帖子中已经详细介绍了如何执行此操作。

答案2

克隆远程 Linux 机器

bash 脚本备份图像-1.0.sh自动执行远程 Linux 机器的磁盘克隆过程。它使用命令dd以及sshgzip命令来复制和压缩远程磁盘,并通过 SSH 连接将它们动态发送到本地磁盘。

使用 backup-images-1.0.sh 将远程磁盘克隆到本地磁盘的示例,该示例由 Radovan Brezula 编写,他编写了 backup-images-1.0.sh。

使用以下示例将本地磁盘克隆到远程磁盘dd

dd if=/path/to/disk/image ibs=4096 conv=notrunc,noerror | (ssh 132.183.12.128 dd of=/remote-archive/test/remote-archive-test.img obs=4096) 
  • ibs=4096一次最多读取 4096 个字节

  • conv=notrunc,noerror不截断输出文件并在读取错误后继续

  • obs=4096一次写入 4096 个字节

答案3

我相信 rsync 是解决方案。不过,我不确定在 rsync 会话期间是否所有文件都可写...

您是否考虑过对服务器 A 上的分区进行 dd 克隆并将其传输到服务器 B?这听起来有点疯狂,但也许是最后的手段?

答案4

对于磁盘映像,我喜欢克隆,但您需要物理访问才能从磁盘启动才能使其工作。老实说,我认为您无法进行完全无人值守的远程全系统复制。rsync 只能帮您到这里。如果两者都已安装完整系统,并且它们在其他方面完全相同,那么您可以在主机 B 上安装与主机 A 上相同的应用程序。然后只需将必要的配置文件从 A 复制到 B。您不一定需要复制一切

相关内容