分类: 虚拟化
2017-11-01 16:50:24
本文通过对快照技术介绍,让大家了解wmware虚拟化快照生成的内容和存在的形式,并介绍了vmware快照的最佳实践。最后,通过一个简单的例子让大家理解快照是如何工作的。
【正文】
快照是指保存特定时间点的虚拟机状态和数据。
状态包括虚拟机的电源状态(例如,开启电源、关闭电源、暂停)。
数据包括组成虚拟机的所有文件。这包括磁盘、内存和其他设备(例如虚拟网络接口卡)。
1) 生成快照时虚拟机的状态。
2) 包括虚拟机的客户机操作系统的文件和内存的状态。
3) 包括虚拟机及其虚拟硬件的设置和配置。
4) 作为一组文件存储在与组成虚拟机的其他文件相同的目录中。
5) 应在测试内容包含未知或潜在有害影响时生成。
6) 并非是可靠的备份和恢复方法。如果包含虚拟机的文件丢失,则其快照文件也将丢失。
7) 对虚拟机的性能会造成不利影响。这取决于快照存在的时间长短,以及生成快照后虚拟机及其客户机操作系统的变化大小。不建议长期基于快照运行生产虚拟机。
8) 会占用与虚拟机本身一样多的磁盘空间。如果允许有多个快照,则磁盘空间的使用量也会随着快照数量的增加而增加。
快照类型 |
产品 |
单个 |
ESX 2.x 和更低版本 |
多个 |
ESX 3.x 和更高版本 Workstation 5.x 和更高版本 |
快照操作 |
作用 |
获取 |
捕获虚拟机及其客户机操作系统的当前状态。 |
恢复 |
将虚拟机及其客户机操作系统恢复到生成快照时的状态。如果有多个快照,则将使用刚好在当前状态之前生成的快照。 警告:所有当前数据都将永久丢失。 |
删除(快照管理器) |
虚拟机的状态更改为当前状态(即,生成快照后所做的更改将保存到基础磁选择要盘)。删除的快照可在显示所有现有快照的图表中进行选择。 |
转至(快照管理器) |
虚拟机及其客户机操作系统的状态切换到任意选择快照在其生成时的状态。选择要切换到的快照可在显示所有现有快照的图表中进行选择。 |
每个虚拟磁盘的 .vmdk 和 -delta.vmdk 文件集合将在生成快照时与该虚拟机连接。这些文件可称为子磁盘、重做日志或增量链接。
CreateSnapshot:创建新的虚拟机快照。作为一个副作用,该操作将更新当前快照。
RemoveSnapshot:移除快照并删除任何关联的存储。
RemoveAllSnapshots:移除所有与虚拟机关联的快照。如果虚拟机没有任何快照,则此操作将成功返回。
RevertToSnapshot:将虚拟机的执行状态更改为此快照的状态。这等同于使用 vSphere/VI Client GUI 时快照管理器下的“转至”选项。
Consolidate:合并重做日志的层次结构。
9) 创建、移除或恢复虚拟机快照的请求将使用 VMware API 从客户端发送到服务器;
10) 该请求将转发到当前托管存在问题的虚拟机的 VMware ESX 主机;
11) 如果快照包括内存选项,则 ESX 主机会将虚拟机内存写入磁盘;
12) 如果快照包括静默选项,则 ESX 主机将请求客户机操作系统通过 VMware Tools 静默磁盘;
13) ESX 主机对虚拟机快照数据库(.vmsd 文件)进行了相应的更改,并且这些更改反映在虚拟机的快照管理器中。
静默:如果
注意:静默表示暂停或改变在计算机上运行的进程的状态,特别是可能会在备份过程中修改存储在磁盘上的信息的状态,以保证一致的可用备份。
ESX 主机调用了与虚拟磁盘 API 功能类似的功能对子磁盘(-delta.vmdk 和 .vmdk 文件)和磁盘链进行更改。手动操作单个子磁盘或任意快照配置文件可能会影响磁盘链。由于可能会导致数据丢失,VMware 不建议手动修改磁盘链。
快照不是原始 VMDK 磁盘文件的完整副本。如果删除基础磁盘,快照文件将毫无用处。
这可以防止快照变得过大,以致删除快照/提交快照到原始虚拟机磁盘时引起问题。在创建快照,对虚拟机进行更改,然后确认虚拟机处于正常工作状态后立即删除/提交快照。
对于电子邮件和数据库服务器等高事务量虚拟机上使用的快照要格外用心。这些快照会很快增大,充满数据存储空间。
快照只应在备份过程期间存在。
确认执行 Storage vMotion 之前不存在任何快照(通过命令行)。如果存在快照,则在执行 Storage vMotion 之前删除它们。
新增了3个文件 win2003-000001-delta.vmdk、win2003-000001.vmdk、win2003-Snapshot1.vmsn。
对虚拟机磁盘的变更操作将写入到win2003-000001-delta.vmdk里,win2003.vmdk保持不变。
对比这两个文件可以发现在win2003.vmdk中记录着
CID=c6ad598b,parentCID=ffffff。
在win2003-000001.vmdk中记录着
CID=ec642271,parentCID=c6ad598b。
win2003-000001.vmdk的磁盘链指向win20003.vmdk。
我们可以发现整合后的vmdk文件的CID值发生了变化。