3

我每天或晚上都在尝试将虚拟机恢复到以前的快照。不幸的是,我还没有找到任何方法来按照我想要的方式做到这一点。

以下是我尝试过但不适合的一些事情:

- snapshot.action=autoRevert --> The VM has to HALT, REBOOT doesn't work the same. I don't want to power on my VM manually.

- snapshot.action=autoRevert on a running snapshot. I tried this, thinking it might work and resolve the first issue. But when i HALT my VM, the snapshot is reverted but the VM is placed in a suspended state...

- PowerCLI script : I don't want to have a Windows machine running just for this little thing.

- NonPersistent disk : same thing as the first issue : VM needs to HALT, not REBOOT.

我怎么能简单地做到这一点?我以为我可以做这些事情并在我的 linux VM 上放置一个 cron 来每天晚上重新启动。

4

1 回答 1

8

过去,我设置了脚本,通过我的 ESXi 主机上的 SSH 服务器将虚拟机恢复为特定快照。启用 sshd 后,您可以通过 SSH 远程运行 vim-cmd。这是在 ESXi 4.x 上,但我认为在较新的版本中也可以这样做。

问题是我必须启用所谓的“技术支持模式”才能运行 sshd,如 VMware KB 中所述:kb.vmware.com/kb/1017910

我使用的过程是首先通过运行以下命令查找相关 VM 的 ID:

vim-cmd vmsvc/getallvms

然后,您可以通过将其 ID 传递给此命令来查看 VM 的快照树(此示例使用 ID 为 80 的 VM):

vim-cmd vmsvc/get.snapshotinfo 80

最后,您可以使用 SSH 客户端通过将 VM 和快照 ID 传递给“snapshot.revert”来远程将 VM 还原为任意快照:

ssh root@YOUR_VMWARE_HOST vim-cmd vmsvc/snapshot.revert VM_ID 0 SNAPSHOT_ID

要注意的另一件事是,您可以在 ESXi 服务器和运行脚本的机器之间设置公钥身份验证,这样后者就不必使用密码。

这种方法的唯一烦恼是我没有立即看到在重新启动之间保留 ESXi 服务器上的 authorized_keys 文件的方法 - 如果必须重新启动 ESXi 服务器,则必须在公钥验证之前重建其 authorized_keys 文件将再次工作。

于 2013-02-04T00:13:48.083 回答