首先我要说一个显而易见的事实:我很笨。
我目前正在家里对在虚拟机上运行的生产服务器(具体来说是 bitnami redmine/svn 堆栈)进行一些预定的维护。
当我的虚拟磁盘大小达到最大值时,我正在备份 SVN 存储库(我们的存储库太大,这是维护工作)。我检查了 VSphere,发现我的虚拟机已关闭,并显示类似“vmname-00001.vmdk 没有空间”的消息。请尝试清除数据存储上的某些文件,然后重试。
现在,我对虚拟机了解得不够多,但我假定这意味着我的虚拟机正在使用vmname-000001.vmdk
。我浏览了数据存储区并准备删除相关-0000n.vmdk
文件,但我决定“我对虚拟机了解不够,我可能不应该这样做。”... 就在那时,TeamViewer 出现故障,文件还是被删除了。好家伙。
所以现在我的虚拟机无法启动,因为它缺少其他-00000n.vmdk
文件。我收到的错误是The System cannot find the file specified
。
我能否仅使用最后剩余的-000001.vmdk
文件来运行虚拟机?文件上的时间戳-000001.vmdk
是昨天的,其他-00000n.vmdk
文件的时间戳是去年的(如果相关的话)。
答案1
正如评论中所说;您可以编辑虚拟机的 VMX 文件并将其指向基础磁盘。
但是从您所说的快照来看,它们已经过时了。因此,一旦完成此操作,虚拟机中的数据可能已经太旧而无法使用。但是,您可以恢复您备份的任何内容。至少您可以避免从头开始重建生产服务器。
要重新启动并运行你的虚拟机:
vmname.vmx
使用数据存储浏览器下载 VMX 文件(名称应为)在修改之前,请先复制一份,以防万一。
查找包含 的行
vmname-00001.vmdk
。例如
scsi0:0.fileName = "vmname-00001.vmdk"
将其更改为
scsi0:0.fileName = "vmname.vmdk"
(vmname.vmdk
基础磁盘的名称)如果您的虚拟机有多个磁盘,则应该有其他以 开头的行
scsiX:Y.filename=
。请注意,X
和Y
对于每行都是唯一的,基本磁盘名称也是如此。对每个磁盘重复步骤 4,并相应地替换值。保存 VMX 文件并将其重新上传到 ESX 服务器。
现在您的虚拟机应该可以启动了。
注意:在继续操作之前,请确保您确实没有 vmname-00XX.vmdk 文件。按照此过程操作将使这些文件变得无用。