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