当我回滚到历史快照时,VMDK 备份文件内容发生变化

当我回滚到历史快照时,VMDK 备份文件内容发生变化

我有一台带有 20G 磁盘(磁盘 1)的虚拟机ubuntu20.04。我向 添加了另一块 50G 磁盘(磁盘 2)ubuntu20.04。当 VMWare 让我命名新的 50G 磁盘时,我为其命名50G以减少误读,因为默认名称以 等为后缀-001,这使我总是混淆哪些 vmdk 文件与我的新磁盘设备匹配。

安装好两个磁盘后,我拍摄了快照state-original

对磁盘 2 进行一些修改后,我备份了带有字符串的 vmdk 文件,50G因为我想在另一台虚拟机中使用新状态的磁盘 2,然后回滚到state-original

但是当我将磁盘 2 的备份 vmdk 文件添加到另一台虚拟机时ubuntu18.04,我发现它的内容与状态相同state-original

我想知道发生了什么?对原始文件的更改会对备份文件生效吗?

一张图片使这个过程更清楚。1、2、3、4 表示我所做事情的顺序。

在此处输入图片描述

答案1

.vmdkVMware Workstation 和 Player 对虚拟磁盘 ( ) 文件使用以下命名方案:

VIRTUAL_MACHINE_NAME-XXXXXX-sYYY.vmdk

其中VIRTUAL_MACHINE_NAME是虚拟机的名称(创建时),XXXXXX是增量磁盘编号,并YYY标识“磁盘范围”(将虚拟磁盘拆分为多个文件时的磁盘片段)。

作为一个具体的例子,考虑以下一组.vmdk文件:

Windows10.vmdk
Windows10-s001.vmdk
Windows10-s002.vmdk
Windows10-s003.vmdk
Windows10-000002.vmdk
Windows10-000002-s001.vmdk
Windows10-000002-s002.vmdk
Windows10-000002-s003.vmdk

这里我有一个名为“Windows10”的虚拟机的磁盘文件。这些文件的存在-s###表明虚拟机使用分割磁盘,磁盘被分成 3 个部分。.vmdk没有-s###后缀的文件是磁盘描述符文件;它们包含分割磁盘的元数据,并且是非常小的文本文件。 Windows10.vmdk是与文件相对应的磁盘描述符Windows10-s###.vmdkWindows10-000002.vmdk是文件的磁盘描述符Windows10-000002-s###.vmdk。(当然,如果您使用单片磁盘而不是分割磁盘,则不会有单独的磁盘描述符和磁盘范围文件;它们将合并为一个.vmdk文件。)

的存在Windows10-000002.vmdk表明已对虚拟机进行了快照。 Windows10.vmdk(及其相应的范围)是根据磁盘;它存储拍摄快照时虚拟机磁盘的状态。 Windows10-00002.vmdk(及其相应的磁盘范围)是增量磁盘存储来自前一个磁盘的更改(在本例中为基础磁盘,但如果您拍摄多个快照,则可能会出现增量磁盘链)。修改任何非叶磁盘都将损坏链中后面的所有磁盘,因此非叶磁盘应被视为不可变的。

当您将虚拟磁盘添加到另一台虚拟机时,您应该:

  • 选择磁盘描述符文件,而不要选择磁盘范围(-s###)文件。
  • 仅选择一个叶.vmdk文件。通常(但并非总是)这将是最高的增量磁盘编号。如果您有多个快照,您可以检查虚拟机设置 > 硬盘以查看当前正在写入的虚拟磁盘的文件名。

相关内容