![如何在不停止 Linux 实时服务器的情况下克隆它?](https://linux22.com/image/640839/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%81%9C%E6%AD%A2%20Linux%20%E5%AE%9E%E6%97%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%85%8B%E9%9A%86%E5%AE%83%EF%BC%9F.png)
这是我目前的情况:+ 一个 Linux 服务器,包含几个无法停止的 Web 应用程序,无法对其进行物理访问,只能通过 ssh 进行访问。
这就是我所需要的:我需要将其复制到我的计算机上的虚拟机中,以便进行一些可能有风险的操作。
我尝试过的:我尝试dump
在实时服务器上运行此行命令:
dump -0aLf / | ssh user@backup-server dd of=/path/to/destination/data.dump
但它无法打开设备并/dev/
显示以下消息:
DUMP: Date of this level 0 dump: Mon Sep 1 16:52:14 2014
DUMP: Dumping /dev/vzfs (/) to /dev/tape
DUMP: Cannot open /dev/vzfs
DUMP: The ENTIRE dump is aborted.
我的问题:
- 我是否应该从 Dump 命令中排除 /dev/tree?如何做?
- 我应该运行另一个命令来制作这个副本吗?
答案1
您始终可以只执行 tar.gz。我曾这样做过来克隆系统。显然,您需要在目标系统上解压之前创建分区、格式化和挂载。此外,您还需要在源计算机上安装 grub,当然还需要 root 权限。
我通常单独列出每个分区并使用。--one-file-system
例如,假设您的系统有/
、、和不同的分区。您可以像这样制作整个系统的 tarball:/boot
/usr
/var
/tmp
tar --one-file-system -cjpf backup.tar.bz2 / /boot /usr /var"
此外/sys
,需要在目标系统中创建 、/dev
、/proc
。可以包含在 tarball 中,这不会造成任何损害。在这里您复制也只是因为它不是与 分开的分区,如果您不想复制它,您可以随时使用。通常我不介意它不是太大。/tmp
/dev
/var/tmp
/var
--exclude
除此之外,这将复制一个可能包含某些不一致的正在运行的系统(例如正在运行的数据库)。首次启动复制时的效果就像机器突然断电一样。
答案2
如果没有管理权限(即:root),你是无法克隆Linux服务器的。
看起来你正在尝试确保更改首先在单独的环境中进行测试(目前尚不存在)。问题是,此更改将触及哪些层?
如果您知道哪些组件将要更新/更改,您就知道要关注什么。假设这是一台运行 MySQL 5.1 的 CentOS 6 服务器,更改是升级到 MySQL 5.5(无论什么)。构建一台单独的 CentOS 6 机器,安装 MySQL 5.1,复制数据和配置,然后尝试升级和测试。
如果这台机器无法停止,你打算如何修补它?我希望你能。如果是这样,它可以被停止,只需要一些安排。你最好的选择是停止它,并考虑做一个 p2v 操作,这样你就可以在某个虚拟机中运行一个精确的系统来进行实验(如果需要,可以更容易地多次中断和恢复)。