使用vzdump克隆/备份/恢复OpenVZ虚拟机
版本1.0
作者:Falko Timme
vzdump是OpenVZ VM的备份和恢复实用程序。 本教程将介绍如何使用vzdump克隆/备份/还原虚拟机。
我不会保证这将为您工作!
1初步说明
本教程中使用了两个OpenVZ服务器:
-
server1.example.com:IP
192.168.0.100
-
server2.example.com:IP
192.168.0.101
(两者都使用Debian Etch,并根据本教程设置: 在Debian Etch上安装和使用OpenVZ - 但它也适用于任何其他发行版。)
我正在运行虚拟机,主机名为test.example.com
,IP地址为192.168.0.102
,而server1.example.com上为VEID 102
,我想备份该机器并将其还原到server2.example.com上
。
我们可以在server2.example.com
上进行恢复,而无需更改(例如,相同的IP地址和主机名),但是在这种情况下,我们必须在server1.example.com
上停止虚拟机, 否则
IP地址和主机名将会冲突; 第二种可能性是在server2.example.com
上恢复它,但是使用vzctl set
命令更改一些参数,如IP地址和主机名 - 在这种情况下,我们可以运行两个虚拟机(原来的一个在server1.example.com
和克隆在server2.example.com上
)。 这是克隆VM的好方法。
2准备OpenVZ服务器
首先我们必须安装一个依赖关系的vzdump和rsync。 在Debian上,命令如下:
server1 / server2:
apt-get install vzdump rsync
3创建VM的备份
(本章仅适用于server1!)
在server1.example.com上
,我想使用VEID 102
创建我的VM的备份。 看一眼
man vzdump
学习如何使用vzdump
。
要备份服务器上的所有虚拟机,您可以使用类似的
vzdump --compress --dumpdir /home/backup --stop --all
--compress
意味着:压缩转储文件(结果为.tgz
)。
--dumpdir
指定要存储转储的目录。 如果不指定dumpdir,那么它默认为/ vz / dump
或/ var / lib / vz / dump
(取决于您的分发)。
--stop
停止VM,创建备份,然后重新启动。 如果您使用--stop,
您的虚拟机可能会在几分钟后关闭
。 一个更快的解决方案是使用...
- 悬浮
:它暂停虚拟机; 然后将VM通过rsync复制到临时目录。 之后,VM将恢复正常,这样它只会停留几秒钟,然后使用临时目录中的副本创建转储。 如果您不能承受长时间的停机时间,我建议使用这个。
您也可以忽略--stop
和 - 悬挂
并转储正在运行的虚拟机。 在大多数情况下,这没有问题,但是转储可能不一致,因此请注意!
- 将
创建所有可用虚拟机的转储。 如果要仅转储特定的VM,请使用VM的VEID
替换。
要在/ home / backup
中创建VM 102
的转储,并在备份
期间停止VM,请使用
vzdump --compress --dumpdir /home/backup --stop 102
要在默认目录( / vz / dump
或/ var / lib / vz / dump
)中创建转储
,请使用
vzdump --compress --stop 102
输出可以如下所示:
server1:/vz/dump# vzdump --compress --stop 102
INFO: starting backup for VPS 102 (/var/lib/vz/private/102)
INFO: starting first sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp9009
INFO: stopping vps
Stopping container ...
Container was stopped
Container is unmounted
INFO: final sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp9009
INFO: restarting vps
Starting container ...
Container is mounted
Adding IP address(es): 192.168.0.102
Setting CPU units: 1000
Configure meminfo: 65536
Set hostname: test.example.com
File resolv.conf was modified
Container start in progress...
INFO: vps is online again after 15 seconds
INFO: Creating archive '/var/lib/vz/dump/vzdump-102.tgz' (/var/lib/vz/dump/tmp9009/102)
Total bytes written: 340428800 (325MiB, 11MiB/s)
INFO: backup for VPS 102 finished successful (1.37 minutes)
server1:/vz/dump#
要停止,但暂停VM,请使用
vzdump --compress --suspend 102
这是一个示例输出:
server1:~# vzdump --compress --suspend 102
INFO: starting backup for VPS 102 (/var/lib/vz/private/102)
INFO: starting first sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp10842
INFO: suspend vps
Setting up checkpoint...
suspend...
get context...
Checkpointing completed succesfully
INFO: final sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp10842
INFO: resume vps
Resuming...
INFO: vps is online again after 4 seconds
INFO: Creating archive '/var/lib/vz/dump/vzdump-102.tgz' (/var/lib/vz/dump/tmp10842/102)
Total bytes written: 340428800 (325MiB, 24MiB/s)
INFO: backup for VPS 102 finished successful (1.57 minutes)
server1:~#
备份后,看看转储目录...
ls -l /vz/dump/
...你应该看到一个.tgz
文件:
server1:~# ls -l /vz/dump/
total 147864
-rw-r--r-- 1 root root 1170 2008-11-20 17:40 vzdump-102.log
-rw-r--r-- 1 root root 151249685 2008-11-20 17:40 vzdump-102.tgz
server1:~#
您现在可以将转储复制到其他OpenVZ服务器,例如使用scp(将该副本/vz/dump/vzdump-102.tgz
复制到server2.example.com上的/ home
目录
):
scp /vz/dump/vzdump-102.tgz root@192.168.0.101:/home
4恢复虚拟机
(本章仅适用于server2!)
在server2.example.com上
,您现在可以按如下方式还原VM
vzdump --restore /home/vzdump-102.tgz 250
...其中250
是恢复的虚拟机的新VEID - 您可以使用server2.example.com上未使用的任何VEID
- 如果在server2.example.com
上未使用,您甚至可以再次使用102
。
如果您不想修改VM的设置(例如IP地址,主机名),可以立即启动, 但是请确保原始虚拟机在server1.example.com上停止,否则会导致IP地址冲突:
vzctl start 250
如果要同时运行两个VM(原始和克隆), 则必须在启动克隆之前更改克隆的IP地址和主机名 。
要设置新的主机名,请像这样运行sonething:
vzctl set 250 --hostname test2.example.com --save
要设置新的IP地址,我们必须先删除原来的一个...
vzctl set 250 --ipdel 192.168.0.102 --save
...然后设置一个新的:
vzctl set 250 --ipadd 192.168.0.250 --save
之后我们可以开始克隆:
vzctl start 250
5链接
- OpenVZ: http : //wiki.openvz.org/