为什么使用 Hyper V 的 VM 上的快照数量有最大值?

为什么使用 Hyper V 的 VM 上的快照数量有最大值?

Hyper-V 有一个虚拟机上最多有 50 个快照,我很好奇为什么。

Windows Server 2012R2 中的虚拟机和 Hyper-V 的要求和限制

快照 50 - 实际数量可能较低,具体取决于可用存储空间。每个快照都存储为 .avhd 文件,会占用物理存储空间。

我从来没有达到过这个数字(也不会达到),但我很好奇这个数字是否有原因。

答案1

您首先要使用虚拟硬盘 (VHD),第一个 VHD 是操作系统的全新安装。创建快照时,它会从 VHD 创建一些内容:.xml 文件中的 VM 配置副本、任何保存状态文件和差异磁盘 (.AVHD)。AVHD 将成为所有写入操作的新工作磁盘,并且此 AVHD 是快照之前工作磁盘的子磁盘(对于第一个快照,父磁盘是 VHD)。

在目录中创建虚拟机时,会创建两个子目录 - \Snapshots 和 \Virtual Machines。Snapshot 最初为空,而 Virtual Machines 包含原始 XML 配置文件,该文件使用唯一的 GUID(全局唯一标识符)作为文件名。目录用于创建保存状态文件 (.VSV) 和内存文件 (.bin)。该目录也使用与其名称相同的 GUID。

写入几个文件,制作新的快照,重复该过程。现在您处于第二个快照中,我们将其称为 .AVHD(2)。要引用对原始 .VHD 的最近更改,您的 AVHD(2) 会查看 VHD(1)(AVHD(1) is now known as VHD(1) that is Read-Only, parent to the current AVHD, and this process continues)并读取这些更改。但是,要读取比 VHD(1) 更旧的更改,您当前的 AVHD 必须返回到原始 VHD。

让我们进行更改,拍摄快照,然后再进行更改。现在我们已拍摄了第 50 张快照,耶!这意味着要引用文件系统的更改,我们现在需要回顾 VHD(49)。更改在 VHD(49) 中吗?不。让我们再回顾一下……48、47、46……?不。要查找旧磁盘(例如 VHD(7))上的更改,您需要先查看其他 43 个快照,因为它不知道更改的确切位置。这非常耗费资源,并且会使读取这样简单的事情占用大量磁盘空间 - 因此快照不适用于生产机器(以及各种其他原因)。

总结当您创建多个快照时,虚拟机必须先查看每个快照,直到找到它要查找的快照。如果您正在创建第 50 个快照,则它必须先查看其他 49 个快照才能找到原始 VHD。这很快就会变得非常低效,并且会降低磁盘速度。我无法找到 50 个快照的记录来源,因此这似乎是为了提高效率而随意设定的数字。来源

相关内容