6

备份 VMWare 服务器 (1.0.x) 的最佳方法是什么?有问题的虚拟机是我们的开发环境,与主网络隔离运行(因此您不能只是将数据从虚拟服务器复制到真实服务器)。

映像文件通常在使用中,并且在服务器运行时被锁定,因此很难在机器运行时备份这些文件。

目前:我离开时手动暂停服务器,并有一个计划任务在午夜运行,以将图像复制到远程 NAS。

有没有更好的方法来做到这一点,理想情况下不必记住暂停虚拟机?

4

5 回答 5

5

VMWare 服务器包含命令行工具“vmware-cmd”,可用于执行几乎任何可以通过控制台执行的操作。

在这种情况下,您只需在开始备份之前将“vmware-cmd susepend”添加到脚本中,并在备份完成后添加“vmware-cmd start”。

我们使用 vmware-server 作为构建系统的一部分,以提供一个已知的环境来运行自动数据库升级,因此我们最终将回滚状态作为每个构建的一部分(由 CruiseControl 驱动),并且发现这个接口非常可靠.

Usage: /usr/bin/vmware-cmd <options> <vm-cfg-path> <vm-action> <arguments>
       /usr/bin/vmware-cmd -s <options> <server-action> <arguments>

  Options:
    Connection Options:
       -H <host>       specifies an alternative host (if set, -U and -P must also be set)
       -O <port>       specifies an alternative port
       -U <username>   specifies a user
       -P <password>   specifies a password
    General Options:
       -h More detailed help.
       -q Quiet. Minimal output
       -v Verbose.

  Server Operations:
    /usr/bin/vmware-cmd -l 
    /usr/bin/vmware-cmd -s register <config_file_path>
    /usr/bin/vmware-cmd -s unregister <config_file_path>
    /usr/bin/vmware-cmd -s getresource <variable>
    /usr/bin/vmware-cmd -s setresource <variable> <value>

  VM Operations:
    /usr/bin/vmware-cmd <cfg> getconnectedusers
    /usr/bin/vmware-cmd <cfg> getstate
    /usr/bin/vmware-cmd <cfg> start <powerop_mode>
    /usr/bin/vmware-cmd <cfg> stop <powerop_mode>
    /usr/bin/vmware-cmd <cfg> reset <powerop_mode>
    /usr/bin/vmware-cmd <cfg> suspend <powerop_mode>
    /usr/bin/vmware-cmd <cfg> setconfig <variable> <value>
    /usr/bin/vmware-cmd <cfg> getconfig <variable>
    /usr/bin/vmware-cmd <cfg> setguestinfo <variable> <value>
    /usr/bin/vmware-cmd <cfg> getguestinfo <variable>
    /usr/bin/vmware-cmd <cfg> getid
    /usr/bin/vmware-cmd <cfg> getpid
    /usr/bin/vmware-cmd <cfg> getproductinfo <prodinfo>
    /usr/bin/vmware-cmd <cfg> connectdevice <device_name>
    /usr/bin/vmware-cmd <cfg> disconnectdevice <device_name>
    /usr/bin/vmware-cmd <cfg> getconfigfile
    /usr/bin/vmware-cmd <cfg> getheartbeat
    /usr/bin/vmware-cmd <cfg> getuptime
    /usr/bin/vmware-cmd <cfg> getremoteconnections
    /usr/bin/vmware-cmd <cfg> gettoolslastactive
    /usr/bin/vmware-cmd <cfg> getresource <variable>
    /usr/bin/vmware-cmd <cfg> setresource <variable> <value>
    /usr/bin/vmware-cmd <cfg> setrunasuser <username> <password>
    /usr/bin/vmware-cmd <cfg> getrunasuser
    /usr/bin/vmware-cmd <cfg> getcapabilities
    /usr/bin/vmware-cmd <cfg> addredo <disk_device_name>
    /usr/bin/vmware-cmd <cfg> commit <disk_device_name> <level> <freeze> <wait>
    /usr/bin/vmware-cmd <cfg> answer
于 2008-09-16T09:33:43.620 回答
2

Worth looking at rsync? If only part of a large image file is changing then rsync might be the fastest way to copy any changes.

于 2009-02-16T01:18:48.840 回答
1

I found an easy to follow guide for backing up VM's in vmware server 2 here: Backup VMware Server 2

于 2010-01-25T02:58:38.217 回答
0

如果我没记错的话,VMWare Server 有一个脚本接口,可以通过 Perl 或 COM 获得。您可以使用它在运行备份之前自动暂停虚拟机。

如果您的备份软件支持卷影复制,那也可能会起作用。

于 2008-09-16T09:24:35.250 回答
0

There is a tool called (ahem) Hobocopy which will copy locked VM files. I would recommend taking a snapshot of the VM and then backing up the VMDK. Then merge the snapshot after the copy is complete.

于 2008-09-24T18:57:54.217 回答