VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解-阿里云开发者社区

开发者社区> 云计算> 正文

VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解

简介: 目录 目录 前文列表 虚拟磁盘文件 VMDK 用户可以创建的虚拟磁盘类型 VixDiskLib 中支持的虚拟磁盘类型 虚拟机文件类型 前文列表 VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析 虚拟磁盘文件 VMDK 虚拟磁盘文件(VMDK File) 后缀为 .vmdk,是虚拟机的存储卷,Guest OS File System 储存在 VMDK File,而 VMDK File 又会以文件的形式储存在物理磁盘设备上。

目录

前文列表

VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析

虚拟磁盘文件 VMDK

虚拟磁盘文件(VMDK File) 后缀为 .vmdk,是虚拟机的存储卷,Guest OS File System 储存在 VMDK File,而 VMDK File 又会以文件的形式储存在物理磁盘设备上。VMDK File 支持两种物理磁盘类型:

  • 托管磁盘(Managed Disk):托管磁盘通常指的是 File System Format 为 VMFS 的物理存储设备,能够支持使用光纤、iSCSI 或 SAS 来连接到 ESX/ESXi Host 的存储网络(SAN),也能够支持网络挂载存储(NAS),甚至能够直接挂载到 ESX/ESXi Host 上。在 vCenter 体系中,VMDK File 会被储存于共享的 Datastore 之上,再由 vCenter 管理着这些存储簇(Storage Clusters),这令 vCenter 能够支持在 ESX/ESXi Host 之间迁移虚拟机而不需要移动 VMDK 文件;在 ESX/ESXi Host 体系中,VMDK File 通常存放在物理存储设备的某个 /vmfs/volumes 目录中。
    这里写图片描述

  • 寄宿磁盘(Hosted Disk):寄宿磁盘没有特定的 File System Format 要求,所谓寄宿,即适应 Host 原生的磁盘类型。在 Worksation 体系中,寄宿磁盘会适应 Host File System,而将 VMDK File 储存于本地磁盘之上。

NOTE:需要注意的是 VDDK 对两种不同类型的磁盘设备的操作函数也是有所区别的,对于托管磁盘,VDDK 应用程序可以利用高级传输接口函数通过 SAN 而不是 LAN 来执行大多数 I/O 操作,以此来提高程序性能,并保护网络带宽。

用户可以创建的虚拟磁盘类型

在创建一个虚拟磁盘时,会进行两个操作:分配空间、置零。

  • 厚置备延迟置零(Lazy Zeroed Thick):默认的磁盘创建格式,创建磁盘时会直接从磁盘分配所需空间,但不会即时擦除磁盘上保留的数据,而是在虚拟机执行 I/O 操作时按需要将其置零。简单来说,就是立即完全分配指定的磁盘空间给虚拟机,但延迟对该磁盘空间进行清零操作.

    • 特性:磁盘性能较好,创建时间短,适合于做池模式的虚拟桌面。
  • 厚置备置零(Eager Zeroed Thick):创建支持群集功能(E.G. FaultTolerance)的厚磁盘格式,创建磁盘时,直接从磁盘分配空间并立即对物理设备上保留的数据置零。所以当虚拟机有 I/O 操作时,就能够直接执行。简单来说,就是立即完全分配指定的磁盘空间给虚拟机, 并立即清零磁盘空间, 所需时间较长。

    • 特性:磁盘性能最好,创建时间长,适合于做跑运行繁重应用业务的虚拟机。
  • 精简置备(Thin):创建磁盘时,占用磁盘的空间大小根据实际使用量计算,即用多少分多少,提前不分配空间,对磁盘保留数据不置零,且最大不超过划分磁盘的大小。简单来说,就是按实际磁盘使用量动态增长分配磁盘空间,但最大不能超过指定的最大磁盘分配空间。

    • 特性:当有 I/O 操作时,需要先分配空间,再将空间置零,最后才能执行 I/O 操作。当有频繁 I/O 操作时,磁盘性能会有所下降,I/O 不频繁时,磁盘性能较好;创建时间短,适合于对磁盘 I/O 不频繁的业务应用虚拟机。

VixDiskLib 中支持的虚拟磁盘类型

:VixDiskLib,即虚拟磁盘库,提供了管理虚拟磁盘的系统调用接口。

虽然用户能够创建的虚拟磁盘类型只有 3 种,但在底层程序接口中会根据不同的应用场景(E.G. vCenter、ESX/ESXi) 提供多种磁盘类型参数,开发者可能按照实际情况选择相应的虚拟磁盘类型参数。

  • 寄宿磁盘(Hosted Disk)

    • 单片稀疏型 VIXDISKLIB_DISK_MONOLITHIC_SPARSE:只包含一个虚拟磁盘文件并能够动态扩展的虚拟磁盘。

    • 单片平面型 VIXDISKLIB_DISK_MONOLITHIC_FLAT:只包含一个虚拟磁盘文件,提前分配存储空间的虚拟磁盘。创建这种磁盘需要较多的时间,并占用大量空间,但是可能会提供比稀疏型磁盘更好的性能。

    • 分片稀疏型 VIXDISKLIB_DISK_SPLIT_SPARSE:可扩展的虚拟磁盘,整个磁盘被分为多个2GB大小的关联文件。这些文件可以增大到2GB,然后在新的文件中继续扩展。这种类型可以在较老的文件系统上使用。

    • 分片平面型 VIXDISKLIB_DISK_SPLIT_FLAT:提前分配空间的虚拟磁盘,并被分为多个大小为 2GB 的虚拟磁盘文件。这些从 2GB 开始,所以创建它们需要较长的时间,但是能够以 2GB 持续增长。

  • 托管磁盘(Managed Disk)

    • VMFS 平面型 VIXDISKLIB_DISK_VMFS_FLAT:提前分配空间的虚拟磁盘,在 ESX3 或更新的平台上可用,也叫做厚置备磁盘(Thick Disk)。

    • VMFS 稀疏型 VIXDISKLIB_DISK_VMFS_SPARSE:使用一种写时复制(Copy-on-Write, COW)机制来节省存储空间,这是虚拟机常用的快照磁盘类型。

    • VMFS 精简型 VIXDISKLIB_DISK_VMFS_THIN:这种类型假设需要尽可能多的空间,然后以此来扩展虚拟磁盘的大小。能够在 ESX3 以及更新的平台上使用,也叫做精简置备磁盘(Thin Disk)。。

    • 单片流优化 VIXDISKLIB_DISK_STREAM_OPTIMIZED:单片、稀疏格式对数据流进行压缩。这种格式不支持随机读写。

虚拟机文件类型

一台 VMware 虚拟机除了包含上述提到的 VMDK File 之外,还包含了各式各样、针对各种场景的配置文件或描述文件,以及特殊文件在 API 中的参数项。

后缀 描述 API 参数
[vmname].vmx 虚拟机配置文件
[vmname].vmdk 如果选择「动态分配磁盘」设置,会创建一个可根据需要空间大小动态增长的 VMDK File。此时该文件是实际的磁盘数据文件。[vmname] 表示虚拟机的名称。在 VMFS 分区上,这是磁盘描述文件的名称。除此之外,该文件还可能保存的是该虚拟机磁盘文件的元数据。 MONOLITHIC_SPARSE
[vmname]-flat.vmdk Extent description 文件,如果勾选了「立即分配磁盘空间」,虚拟磁盘文件将会提前分配所有空间,不会动态增长。第一个 VMDK File 很小(即上述的元数据文件),并指向一个大的 -flat.vmdk VMDK 文件,此时该文件保存的是虚拟机实际的虚拟磁盘数据。 MONOLITHIC_FLAT、VMFS_FLAT、VMFS_THIN
[vmname]-ctk.vmdk Change Tracking File 改变追踪文件,保存自上次快照以来的所发生改变的虚拟机数据块的信息。
[vmname].vmem 虚拟机的内存页面文件,存放虚拟机运行时的内存数据,在虚拟机运行或者崩溃时被创建
.vmss 虚拟机挂起时的状态信息文件
.vmsd 虚拟机快照的元数据文件,保存了如快照名、UID(Unique Identifier)、磁盘文件名等信息。在创建快照前,其 size 为 0byte
.vmtx 虚拟机模板文件
.nvram 虚拟机 bios 文件
.vswp 虚拟机交换文件
.log 虚拟机日志文件
[vmname]-s<###>.vmdk 如果只勾选「分割成 2GB 大小的文件」,虚拟磁盘文件将会在需要更多空间时才被扩展。第一个 VMDK File 很小,为元数据文件,并指向一系列的其他 VMDK 文件,它们在序号数字前都有一个 S 标志,表明是稀疏类型的(sparse)。VMDK 文件的数字依赖于所需要的磁盘大小。随着数据增长,将会在这个序列中新增更多的 VMDK File。 SPLIT_SPARSE
[vmname]-f<###>.vmdk 如果勾选「立即分配磁盘空间」和「将磁盘分成 2GB 大小的文件」两个选项,那么虚拟磁盘空间将会提前分配,不会动态扩展。第一个 VMDK File 是一个元数据文件,指向一系列的其他文件,这些文件在数字序号之前都有一个 f(flat) 前缀。数字由磁盘大小决定。 SPLIT_FLAT
[diskname]-<###>.vmdk 当给虚拟机创建快照时,会生成 redo-log 文件,也叫做子磁盘(child disk)或者差异链接(delta link)。快照文件中有序号数字,但是没有 f/s 前缀。针对原来的父磁盘或者更早的回写日志(即更早的快照)的数据修改,将会写进这些带编号的的 VMDK File 中。 MONOLITHIC_SPARSE、SPLIT_SPARSE
[vnname]Snapshot.vmsn 虚拟机快照的状态信息文件,用于保存创建快照时虚拟机的状态,包含了指向所有 VMDK File 的信息。这个文件的大小取决于创建快照时是否选择保存内存的状态。如果保存的话,那么这个文件会比分配给这个虚拟机的内存大小还要大几兆 n/a

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章