3 虚拟磁盘接口
VMWare提供磁盘布局选项,这里将要讨论动态库中封装的数据结构。
VMDK文件位置
在ESX/ESXi主机上,虚拟机磁盘(VMDK)文件通常存放在共享存储设备的某个/vmfs/volumes中。在vSphere Client上,可以从主机和簇的库中查看存储卷,它们的名字通常是datastore1,datastore2。如果要查看VMDK文件,选择通用(Summary)>资源(Resources)> 数据存储(Datastore),右键点击“浏览数据存储(Browse Datastore)”,然后选择一个虚拟机。
对于工作站(VMWare Workstation),VMDK文件存在和虚拟机配置(VMX)文件相同的目录下,例如Linux系统中的“/path/to/disk”,或者Windows系统中的“C:\My Documents\My VirtualMachines”。
VMDK文件作为虚拟机的物理磁盘,大部分内容都存储了虚拟机的数据,仅有一小部分用于VMDK文件的本身开销。
虚拟磁盘类型
在虚拟磁盘库中定义了如下这些磁盘类型:
单片稀疏型 VIXDISKLIB_DISK_MONOLITHIC_SPARSE只包含一个虚拟磁盘文件并能够动态扩展的虚拟磁盘。这是主机磁盘(hosted disk)的默认类型,在第五章中的例子中也只用到这种类型。
单片平面型 VIXDISKLIB_DISK_MONOLITHIC_FLAT只包含一个虚拟磁盘文件,提前分配存储空间的虚拟磁盘。创建这种磁盘需要较多的时间,并占用大量空间,但是可能会提供比稀疏型磁盘更好的性能。
分片稀疏型 VIXDISKLIB_DISK_SPLIT_SPARSE可扩展的虚拟磁盘,整个磁盘被分为多个2GB大小的关联文件。这些文件可以增大到2GB,然后在新的文件中继续扩展。这种类型可以在老的文件系统上使用。
分片平面型 VIXDISKLIB_DISK_SPLIT_FLAT提前分配空间的虚拟磁盘,并被分为多个大小为2GB的虚拟磁盘文件。这些从2GB开始,所以创建它们需要较长的时间,但是可以以2GB持续增长。
VMFS平面型VIXDISKLIB_DISK_VMFS_FLAT提前分配空间的虚拟磁盘,在ESX3或更新的平台上可用,也叫做厚型磁盘(thick disk),是一种管理磁盘(managed disk)。
VMFS稀疏型VIXDISKLIB_DISK_VMFS_SPARSE使用一种写时复制(copy-on-write, COW)机制来节省存储空间。
VMFS精简型VIXDISKLIB_DISK_VMFS_THIN这种类型假设需要尽可能多的空间,然后以此来扩展虚拟磁盘的大小。能够在ESX3以及更新的平台上使用,VDDK 1.1或更新的版本中支持,建议使用高版本的VDDK。
单片流优化 VIXDISKLIB_DISK_STREAM_OPTIMIZED单片、稀疏格式对数据流进行压缩。这种格式不支持随机读写。
持久化(Persistence)磁盘模式
在持久化磁盘模式中,数据将直接并永久地写入虚拟磁盘,尽管重新开机启动,数据还是会存储在虚拟磁盘中。
在非持久化(nonpersistent)模式下,对虚拟磁盘的任何修改,都将在虚拟机关机后失效。VMDK文件将恢复到原来的状态。
虚拟磁盘库中并没有封装这种区别,它是一个虚拟机的设置。
VMDK文件命名
表3-1展示了不同的虚拟磁盘类型。第一列关于“虚拟磁盘类型”,但是不包括VIXDISKLIB_DISK前缀。第三列给出了在工作站和ESX/ESXi主机上可能的VMDK文件名称。
表3-1. VMDK虚拟磁盘文件
API中的磁盘类型 | VMWare主机创建虚拟磁盘 | 主机上名称 |
MONOLITHIC_SPARSE | 在“选择磁盘类型”时,选择默认设置,不勾选任何选项,创建一个可根据需要空间大小动态增长的VMDK文件。<vmname>表示虚拟机的名称。在VMFS分区上,这是磁盘描述文件的名称。 |
<vmname>.vmdk |
MONOLITHIC_FLAT VMFS_FLAT VMFS_THIN |
如果勾选了“立即分配磁盘空间”,虚拟磁盘文件将会提前分配所有空间,不会动态增长。第一个VMDK文件很小,并指向一个大的文件,它的名称包含“flat”,但是没有数字序号。 同样在VMFS分区上,这个虚拟磁盘文件指向了虚拟磁盘数据文件, |