在这一系列的第一部分中,我们从硬件角度了解了什么是虚拟机。在本部分中,TechTarget中国的特约虚拟化专家Eric Siebert将介绍ESX主机上虚拟机文件的组成。与虚拟机相关的文件有很多,它们位于主机上虚拟机的目录里。
如果你使用像WinSCP或者Datastore Browser这样内置在VI Client里的文件浏览器在ESX主机上查看虚拟机的根目录,会看见与虚拟机相关的文件清单。多数文件以虚拟机的真实名字开头,基于这个文件的类型,有不同的文件扩展。除非你的虚拟机处于某种状态,否则不能看见所有可能的文件类型。例如,当虚拟机开启时只出现.vswp文件,当虚拟机暂停时只出现.vmss文件。
那么组成虚拟机的所有这些文件是什么?它们有什么用?下面我们详细讨论这些文件类型。
.nvram文件:这个小型文件包括虚拟机启动过程一部分的Phoenix BIOS。它类似于拥有BIOS芯片的物理服务器,能够设置硬件配置选项。一台虚拟机也应该在NVRAM文件里有虚拟BIOS。当虚拟机首次启动时,按F2键可以访问BIOS。不管虚拟机的硬盘配置发生了什么变化,都会保存在NVRAM文件里。这个文件是二进制的,如果删除的话,在虚拟机启动时会自动地重新创建。
.vmx文件:这个文件包括虚拟机所有配置信息与硬件设置。不管你对虚拟机的设置作了何种编辑,所有的信息都会以文本形式保存在这个文件里。这个文件包括与虚拟机有关的多种信息,如特殊硬件配置(例如RAM大小、网络接口卡信息、硬盘驱动信息和串行与并行信息),高级能源与资源设置、VMware工具选项以及能源管理选项。虽然你可以直接编辑这个文件修改虚拟机配置,但不推荐你这样做,除非你清楚自己要怎么做。如果你直接对这个文件进行编辑,最好首先对文件进行备份。
VMDK文件:所有的虚拟磁盘由两个文件组成,一个与虚拟磁盘大小相等的大型数据文件和一个小型文本磁盘描述文件,这个描述文件描述虚拟磁盘文件的大小与形状,也包括指向大型数据文件,还有虚拟磁盘驱动扇区数、磁头数、柱面数及磁盘适配器的信息。多数情况下,这些文件与其相关的数据文件的名字相同(例如myvm_1.vmdk和myvm_1-flat.vmdk)。你可以通过检查文件里的Extent Description区域将描述性文件与数据文件匹配。
三种不同类型的虚拟磁盘数据文件能用于下面的虚拟机中:
–flat.vmdk文件:这是个默认的大型虚拟磁盘数据文件,创建于你添加虚拟硬盘驱动到虚拟机时,而不是RDM。当使用厚磁盘时,这个文件的大小相当于你创建虚拟硬盘驱动时所指定的大小。
–delta.vmdk文件:这些虚拟磁盘数据文件只用于创建虚拟机快照时。当创建了快照,对原始flat.vmdk的所有写入都停止,并变成只读;然后这些对虚拟磁盘的更改将写入delta文件。这些文件的初始大小是16MB,然后随着对虚拟机虚拟硬盘的更改需要而以16MB的速度增长。因为这些文件是虚拟磁盘所作更改的位图,一个单一delta.vmdk文件不能超过原始flat.vmdk文件的大小。每为虚拟机创建一个快照就会生成一个delta文件,并且它们的文件名以数字递增(如myvm-000001-delta.vmdk和myvm-000002-delta.vmdk)。当快照融合到原始–flat.vmdk文件后再删除时,这些文件将自动删除。
-rdm.vmdk文件:这是RDM映射文件,用来管理RDM设备的映射信息。映射文件作为一般磁盘文件呈现给ESX主机,可用于一般的文件系统操作。不过,对于虚拟机,存储虚拟化层将映射设备作为虚拟SCSI设备呈现。映射文件的元数据包括映射设备的位置(名称解析)和映射设备的锁定状态。如果你作了目录列表,那么可以看见这些文件在VMFS占用的磁盘空间与其所映射的实际LUN的大小的一样的,不过事实上,它们只是以这样的方式呈现而已,实际上非常小。每在虚拟机上创建一个RDM就会生成一个-rdm.vmdk文件。
.vswp file:在启动虚拟机时,如果ESX主机由于过量使用而消耗光其物理内存时,会创建一个内存交换文件代替物理主机内存。这些文件的大小等于分配给虚拟机的内存大小,再减去任何内存预留(默认是0),例如,4GB虚拟机预留1GB,将创建3GB交换文件。这些文件通常创建在虚拟机里,不过只有当主机耗尽所有物理内存时才使用。由于虚拟机内存读或写入磁盘没有物理主机RAM快,如果虚拟机开始使用这个文件的话,性能会有所降低。这些文件会占用VMFS卷上非常大的磁盘空间,因此要确保有足够的可用空间,这是因为如果没有足够的空间创建这个文件的话,虚拟机启动不了。当虚拟机关闭或暂停时,这些文件将删除。
.vmss文件:这个文件用于虚拟机暂停时,保存虚拟机的存储内容,以便在重新开始时继续运行。这个文件的大小与分配给虚拟机的RAM的大小相同。当虚拟机再次运行时,这个文件的内容将写回主机服务器的物理内存,不过,这个文件不会自动删除,除非关闭虚拟机(操作系统重启不管用)。当虚拟机再次暂停时,如果先前的暂停文件存在的话,这个文件将再次使用而不会删除和重新创建。当暂停虚拟机时,这个文件删除的话,那么虚拟机将正常启动,而不是从暂停状态启动。
.vmsd文件:这个文件与快照一起使用,用于存储元数据和其他活动在虚拟机里的每个快照的信息。这个文本文件在创建快照之前的初始大小是0字节,并在每次创建或删除快照时更新信息。这些现有文件中只有一个文件不管快照运行的数量,因为所有信息都更新在这个单一文件。在这个文件里的快照信息由VMDK的名字与每个快照所使用的vmsn文件、显示名和描述以及快照的用户ID组成。一旦删除所有快照,这个文件保留了旧快照信息,不过憎加了新快照所使用的快照UID。它也重新命名第一个快照为“Consolidate Helper”,假设用于整合备份。
.vmsn文件:这个文件与快照一起使用,用于存储虚拟机在进行快照时的状态。每在虚拟机上创建一个快照就会生成一个.vmsn文件,在删除快照时,文件自动删除。这个文件的大小基于你是否选择在快照里存储虚拟机的内存状态。如果你选择要存储内存状态,那么这个文件比分配给虚拟机的RAM大得多,因为整个存储内容,包括空内存都复制到这个文件。如果你选择不存储快照的内存状态,那么这个文件非常小(小于32KB)。当然,在暂停虚拟机时,这个文件的情况类似于.vmss。
.log文件:这些文件创建来用于存储虚拟机的日志信息,并常常用于故障检查。在虚拟机目录里,有大量的这样的文件。当前的日志文件通常命名为vmware.log,往下的六个旧的日志文件也保留着,名字以数字结尾(如vmware-2.log)。在虚拟机关闭或重新启动时,或者如果日志文件达到了所限制的最大值,就会创建一个新的日志文件。所保留的日志文件的数量和所限制的最大值都定义为虚拟机高级配置参数(log.rotateSize和log.keepOld)。
.vmxf文件:这是一个附加配置文件,不用于ESX,用于与Workstation兼容的目的。这个文件是文本格式,Workstation用来聚合虚拟机(VM teaming),将多个虚拟机分配成一组,作为一个单一对象开启或关闭、暂停或恢复它们。
上面的内容包含了所有与虚拟机相关的文件,阅读本文章后,将会对虚拟机的组成有更好的理解。现在你可以查看各种组成虚拟机的文件。你可能会发现VMFS卷上有一些未适当清理的旧数据。在你开始删除任何文件之前要小心谨慎,确保你要删除的文件不再需要或用到。