是否在VMWare快照中永久运行会降低性能?


18

我了解VMWare KB对长时间运行的快照不满意,主要是由于两件事(我认为)

  • 拍摄大量快照可以填充数据存储。快照只是增量文件。假设您有一个50 Gig VMDK,快满了,然后进行快照。在快照中,您每翻转一次。您的增量文件也将约为50 GB。再次快照,翻转位,另一个50 Gig增量文件。这些会很快失去控制。

  • 提交大快照会带来风险。合并快照时,您会将增量更改写入原始VMDK。这需要花费时间,并且冒着发生某些事情的风险,即您只是破坏了VMDK。

他们的警告似乎合乎逻辑。

话虽这么说,从快照VMDK永久运行我的机器固有地不好吗?我要使我的树如下:

  • 基础
    • 快照1
      • 快照2
      • 你在这里

安装和配置基本系统后,将立即执行Snap 1和Snap 2。这些是我计划经常刷新的机器,因此我将使树看起来像下面这样:

  • 基础
    • 快照1
      • 你在这里
      • 快照2

删除Snap2并重新创建Snap2。

由于以下原因,我看不到这可能有什么影响:

  • 由于我只是安装了一个基本映像并在没有办法填充数据存储区后立即获取了增量数据。假设我的基本映像只有10 GB(在50 GB精简配置的磁盘上),即使我的增量每翻转一位,我的总使用量就可能是60 GB(10 GB基本VMDK已锁定+ 50 GB的增量)快照VMDK文件)。假设我没有再创建任何快照。

  • 由于我的用例不要求合并快照,因此在合并增量时不会冒错误的风险。当我回到Snap1并删除Snap2时,驻留在Snap2中的所有增量都将被删除。

  • 存储负载完全相同,因此我应该获得相同的IOPS。我知道某些文件(主要是系统文件)将在原始VMDK上存在,而其他文件(所有在基数之后的文件)将驻留在增量中,但我看不到ESXI会如何处理。所有文件都位于同一物理数据存储上,因此性能应等同于引用原始VMDK中没有快照的所有内容。

有什么想法吗?ESXI 5.5,数据存储为RAID DAS。

我没有vCenter许可证,因此无法进行模板和克隆。

测试结果

我今天早上开始进行一些测试。这是结果。有性能损失,但我不确定为什么。

快照之前: 快照前

快照后: 拍后


不确定-随着时间的流逝,快照会越来越分散。最后,它们将本质上是不同的副本。在通过快照保留大量磁盘后,将快照转换为完全独立的卷。怎么样?通常,我使用来自第三台VM的dd,但在大多数情况下,出于这种异端见解,我几乎被钉在十字架上。:-)但是:它会起作用,并且会有效
彼得-恢复莫妮卡2014年

@PeterHorvath-那是我喜欢听到的东西。聪明,hacky,有效的准系统解决方案。如果您不介意,您可以给我写一下您在pastebin或其他方面所做的事情吗?您是否将VMDK和快照一起DD?
VM_Storage_Inception 2014年

如果我需要更频繁地执行此操作,可以使用脚本来完成。但是事实并非如此,在大多数情况下,我甚至都不使用snapshpts,因为它们运行缓慢。
peterh-恢复莫妮卡2014年

Answers:


17

是的,长时间运行的快照会对性能产生影响。将增量VMDK合并回原始磁盘文件具有更大的含义。这可能会导致VM操作系统无响应或其他不良行为。

VMware 在vCenter中内置了模板和克隆功能。您需要600美元的vSphere Essentials许可证才能启用此功能。

您可以创建自己喜欢的VM,然后将其克隆到模板。然后,该模板可用于从“ Golden Master”映像生成新的虚拟机

在此处输入图片说明

这使您可以具有“干净状态”,而且还可以从该主映像创建长期运行的或永久的VM。无需快照。


有趣的是,我会研究一下它的工作原理。不幸的是,我没有vCenter许可证,并且如果我描述的快照使用性能没有任何性能隐患,我不希望我的组织机构花掉600美元。而且,模板制作和克隆似乎与采用OVA并重新部署它没有什么不同。删除快照似乎要快得多,即使不是“ Official VMWare认可的方法”,我也无法从逻辑上看到对性能的影响。
VM_Storage_Inception 2014年

为了回应您的编辑,您能否指出我的文章或解释对性能的影响?我看不出有任何假设可以按照我的描述使用它们。另外,我永远也不会将快照整合回原始的VMDK。
VM_Storage_Inception 2014年

我想我想了解您为什么一直坚持围绕旨在用于短期访问的功能进行设计。
ewwhite 2014年

@VM_Storage_Inception-几乎听起来像是您要穷人的方法来使用VMWare已停产的产品Lab Manager。
TheCleaner 2014年

5
有时,购买正确的解决方案很有意义。您花了更多的精力和时间在询问解决方法上,而不仅仅是购买vSphere Essentials许可证(600美元),这将为您提供受支持的模板/克隆选项。
ewwhite 2014年

4

ewwhite的答案是正确的,但只是为了进一步扩展性能或降低性能,请考虑以下情形:

您创建一个VM。从vmdk进行虚拟读取将读取一个相同大小的物理磁盘。非常坦率的。

现在,假设您为虚拟机制作了快照。现在,对于每个虚拟读取,您将需要进行2次物理读取,其中一项是从基本vmdk读取的,另一项是从增量vmdk读取的,因为您需要同时获取这两种信息才能获取当前状态。您现在的物理磁盘读取次数是原来的两倍。

对于两个快照,您要做的是读取的三倍,依此类推。如果您有很多快照,则可以看到这是相当大的性能损失。它不一定会导致性能下降n倍(由于缓存,未更改的部分等),但这不是一个好习惯。


我几乎可以确定快照使用的是“哪个块在哪个文件中”表。因此,读取一个块只会导致从相应文件中读取一个块。当然,读取多个块可能会导致访问多个文件,这意味着如果您不是从SSD上运行,则移动磁盘头会受到惩罚,但是磁盘块访问的总数不应更改。
Guntram Blohm

1
据我了解,快照仅存储原始磁盘中的更改。如果存储文件A,然后创建快照,然后再次更改文件A,则只有对该文件的更改才会写入快照。因此,您需要同时读取原始VMDK和快照以获取整个文件。否则,每个快照将只是原始磁盘的完整副本,而不是原始磁盘的完整副本。
tfrederick74656 2014年

可能是正确的,但是您需要读取的块总数保持不变(例如,快照中的10个块和基础磁盘中的100个块)。ESXi首先检查现有快照以查找所需的块,直到最终获得正确的快照(或基础磁盘)为止。可能会有轻微的损失,因为当根本没有快照时,系统可能会完全跳过该快照遍历部分。此外,长时间运行的快照文件可能会严重碎片化。
Dirk Trilsbeek 2014年

对N个快照执行N次读取的虚拟磁盘快照系统将是非常愚蠢的实现。我怀疑这是在VMWare中实现的方式。只需创建一个索引文件即可完成简单的优化,该文件存储了模拟驱动器的每个块所在的磁盘文件。假设您有一个512GB的虚拟磁盘,其块大小为4kB,则只需一个64 MB的索引即可确定在恒定时间内最多有16个虚拟磁盘文件中的哪个包含一个块。
Lie Ryan

1
基于serverfault.com/questions/430138中的答案,我必须不同意。我一直认为快照是二进制算术的结果,而不仅仅是新数据的集合。因此,如果基本VMDK中有位01010101,则进行快照,然后将这些位更改为10101010,则增量将包含11111111(指示原始文件中的每个位都已更改,而不是10101010的新值)。尽管我同意以上评论,但VMDK应该是原始文件。索引将存储在哪里?我从未在任何VMWare技术酒吧中看到过这种情况。
tfrederick74656 2014年

0

VMware ESX快照仅供短期使用。

长时间使用和大量IO可能导致VM冻结。如果您遇到写IO比快照合并更大/更快的情况,ESX将冻结VM以保护数据。随着时间快照的碎片化和ESX进行内部整合,您可能会遇到定期冻结的情况。

您可以通过ssh手动执行VM模板。将包含vmdk,vmx等的VM文件夹复制到新的一个文件夹。在新复制的VM的vmx文件中,更改UID和MAC地址。

VMware提供了产品Linked Clone,您正在尝试这样做。他们说它有潜在的性能问题。实际上,过一会儿您将重新掌握VM。 https://www.vmware.com/support/ws5/doc/ws_clone_typeofclone.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.