虚拟机服务器:备份图像的最佳方法
-
09-06-2019 - |
题
备份 VMWare 服务器 (1.0.x) 的最佳方法是什么?所讨论的虚拟机是我们的开发环境,并且与主网络隔离运行(因此您不能只是将数据从虚拟服务器复制到真实服务器)。
镜像文件通常在服务器运行时被使用和锁定,因此很难在机器运行时备份这些文件。
现在:当我离开时,我手动暂停服务器,并有一个在午夜运行的计划任务,以将图像自动复制到远程 NAS。
有没有更好的方法来做到这一点,理想情况下不必记住暂停虚拟机?
解决方案
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
其他提示
值得一看 rsync 吗?如果仅更改大型映像文件的一部分,则 rsync 可能是复制任何更改的最快方法。
我找到了一个易于遵循的指南,用于在 vmware server 2 中备份虚拟机: 备份 VMware 服务器 2
如果我没记错的话,VMWare Server 有一个脚本接口,可通过 Perl 或 COM 访问。您也许可以使用它在运行备份之前自动暂停虚拟机。
如果您的备份软件支持卷影复制,那么这也可能有效。
有一个名为(咳咳)Hobocopy 的工具,它可以复制锁定的虚拟机文件。我建议拍摄虚拟机快照,然后备份 VMDK。复制完成后合并快照。
不隶属于 StackOverflow