我今天遇到了一个问题。几个小时前,我将 esxi 从 4.0 更新到了 4.1 版本。我的目标是使用 ghettoVCB.sh 从我的虚拟机获取备份,即使虚拟机有快照。(在 4.0 版本中这根本不起作用)
为此,我下载了最新版本的 ghettoVCB(github)并将其解压。
重要文件(chmod 777)现在已解压到文件夹中:ghettoVCB-master,并且我编辑了VM_BACKUP_VOLUME
运行脚本后备份应位于的路径的行。
当我运行脚本并且没有虚拟机的快照时,虚拟机会在文件夹中“备份”:VM_BACKUP_VOLUME=/vmfs/volumes/datastore1/BACKUP
到目前为止,这有效。
但正如我所说,当有虚拟机快照时,我只会收到以下消息:
2013-06-13 15:21:54 -- info: ###### Final status: ERROR: No VMs backed up! ######
(如果至少有一个虚拟机无需快照即可备份)
和:
2013-06-13 15:19:46 -- info: ###### Final status: ERROR: All VMs failed! ######
(如果所有虚拟机都有快照。)
我在网上看到,在 ghettoVCB.conf 和 ghettoVCB.sh 中配置以下内容:将 0 改为 1:
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=1
但这并不会改变任何事情。
答案1
你读了...吗文档此功能有什么用?它不会备份快照,但会整合快照,然后备份虚拟机,因此您可能不想使用它:
但是,我决定支持此用例,因为最近我注意到,一些支持具有现有快照的虚拟机的商业备份解决方案只是在备份之前整合所有快照。如果启用此功能,它将整合虚拟机上的所有现有快照在运行备份之前。
如果这真的是你想要的,VMWare 社区有一个主题它描述了一个与您的问题类似的问题,并建议对脚本进行代码更改以解决问题:
# elif ls "${VMX_DIR}" | grep -q "\-delta\.vmdk" > /dev/null 2>&1; then
# if [ ${ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP} -eq 0 ]; then
# logger "info" "Snapshot found for ${VM_NAME}, backup will not take place\n"
# VM_FAILED=1
# fi
elif [[ -f "${VMX_PATH}" ]] && [[ ! -z "${VMX_PATH}" ]]; then
if ls "${VMX_DIR}" | grep -q "\-delta\.vmdk" > /dev/null 2>&1; then
if [ ${ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP} -eq 1 ]; then
logger "info" "Snapshot found for ${VM_NAME}, consolidating ALL snapshots now (this can take awhile) ...\n"
$VMWARE_CMD vmsvc/snapshot.removeall ${VM_ID} > /dev/null 2>&1
else
logger "info" "ERROR: Snapshot found for ${VM_NAME}, backup will not take place\n"
exit 1
fi
fi
答案2
我从您的帖子中了解到,您正在尝试使用无法识别任何虚拟机的 ghettoVCB 备份虚拟机。因此,您提供的配置很好,只需进行一些修改:
** 您如何运行 ghetto 脚本**
解决方案:
创建一个文件并插入虚拟机名称:
假设虚拟机名称为
1. test1
2. test2
然后,在 ghetto 目录中:
vi backup
test1
test2
现在运行保存并关闭文件并运行以下命令:
./ghettoVCB.sh -f backup -d dryrun
这里 -f 表示备份我们之前创建的备份文件中列出的特定虚拟机。而 -d dryrun 将查找列出的虚拟机,看它们是否存在,是否可以备份。输出将类似于
-- 信息:###### 最终状态:OK,仅进行一次试运行。######
现在您可以继续运行以下命令进行备份:
./ghettoVCB.sh -f backup
您的备份将从这里开始并在给定的目的地保存快照。