VMware vSphere是数据中心中最常见的虚拟化平台。它提供了各种企业功能来运行虚拟机(VMs)。为了提供与vsphere功能兼容的可靠有效的存储,VMware创建了自己的文件系统称为VMFS。
本博文介绍了VMware VMFS的功能,它如何与其他vsphere功能配合工作,以及VMFS用于存储VM文件和运行VM的优势。
什么是VMFS?
虚拟机文件系统(VMFS)是一种优化用于存储虚拟机文件的群集文件系统,包括VMware vSphere中的虚拟磁盘。它旨在使存储虚拟化对VM更加高效。VMFS是一种高性能可靠的专有文件系统,旨在在可扩展的环境中运行虚拟机(VMs)-从小型到大型和超大型数据中心。VMware vSphere的VMFS充当卷管理器,并允许您将VM文件存储在称为VMFS数据存储的逻辑容器中。
VMFS文件系统可以在基于SCSI的磁盘(直接连接的SCSI和SAS磁盘)以及通过iSCSI、光纤通道(FC)和以太网上的光纤通道(FCoE)访问的块存储上创建。VMFS在连接到ESXi服务器的磁盘上运行,而不是在运行VMware Workstation或VMware Player的计算机上。
VMFS版本
自版本一发布以来,VMware VMFS已有了显
- VMFS 1 用于 ESX Server 1.x。此版本的 VMware VMFS 不支持群集功能,仅用于单个服务器。不支持多个服务器的并发访问。
- VMFS 2 用于 ESX Server 2.x,有时也用于 ESX 3.x。VMFS 2 没有目录结构。
- VMFS 3 用于 ESXi Server 3.x 和 ESXi Server 4.x 中的 vSphere。在此版本中添加了对目录结构的支持。最大文件系统大小为 50 TB。最大逻辑单元编号(LUN)大小为 2 TB。ESXi 7.0 不支持 VMFS 3。
- VMFS 5 从 VMware vSphere 5.x 开始使用。卷(文件系统)大小增加到 64 TB,最大 VMDK 文件大小增加到 62。但是,ESXi 5.5 仅支持 VMDK 虚拟磁盘大小的最大为 2 TB。添加了 GPT 分区布局的支持。支持 GPT 和 MBR(先前的 VMFS 版本仅支持 MBR)。
- VMFS 6 在 vSphere 6.5 中发布,并在 vSphere 6.7、vSphere 7.0 和更新版本(如 vSphere 8)中使用。
VMFS 特性
VMware VMFS 专为存储大文件进行了优化,因为 VMDK 虚拟磁盘通常占用大量存储空间。VMFS 数据存储是使用 VMFS 文件系统在基于块的存储设备或 LUN 上存储文件的逻辑容器。数据存储运行在卷的顶部。可以使用一个或多个范围创建 VMFS 卷。范围依赖于底层分区。
VMware VMFS 块大小
VMFS 5 和 VMFS 6 使用 1 MB 的块大小。块大小对最大文件大小有影响,并定义了文件占用多少空间。您不能更改 VMFS 5 和 VMFS 6 的块大小。
VMware 利用 VMFS 6 和 VMFS 5 的子块分配来处理小目录和文件。子块有助于节省存储空间,因此当存储小于 1 MB 的文件时,它们不会占用整个 1 MB 块。VMFS 6 的子块大小为 64 KB,VMFS 5 的子块大小为 8 KB。
VMFS 6 引入了一个新的概念,用于使用小文件块和大文件块。不要将小文件块与默认的 1 MB 块混淆。VMFS 6 中小文件块(SFB)的大小为 1 MB。VMFS 6 还可以使用大文件块(LFB),其大小为 512 MB,以提高创建大文件的性能。 LFB 主要用于创建厚配置的磁盘和交换文件。不适合 LFB 的配置磁盘部分位于 SFB 上。SFB 用于 薄配置磁盘。
文件碎片化
碎片化是指一个文件的块在卷中分散,它们之间存在间隙。这些间隙可以是空的,也可以被属于其他文件的块占用。碎片化的文件会降低读写磁盘的性能。恢复性能需要进行碎片整理,即重新组织存储在磁盘上的数据片段,使它们放在一起(将文件使用的块连续地排列在一起)。这样,硬盘驱动器的磁头可以在没有额外磁头移动的情况下读写这些块。
VMware VMFS 不容易出现显著的文件碎片化。碎片化对 VMFS 的性能不相关,因为使用了大块。如上所述,VMware VMFS 块大小为 1 MB。例如,Windows 使用 4 KB 块用于 NTFS 文件系统,在硬盘驱动器上定期需要碎片整理。然而,存储在 VMFS 卷上的大多数文件是大文件,如虚拟磁盘文件、交换文件、安装镜像文件。如果文件之间存在间隙,则间隙也很大,当硬盘驱动器寻找用于存储文件的多个块时,这种影响是微不足道的。事实上,VMFS 卷无法进行碎片整理,也没有必要这样做。
不要在客户操作系统(OS)上运行磁盘碎片整理,用于客户操作系统的磁盘上。从客户操作系统进行碎片整理是没有帮助的。这是因为虚拟机的存储性能取决于物理存储阵列上的输入/输出(I/O)强度,多个虚拟机(包括VMDK文件的虚拟磁盘)存储在该存储阵列上,并且可以使用不同的I/O负载访问该存储阵列。此外,如果从客户操作系统开始对位于薄置备磁盘上的分区进行碎片整理,块会被移动,存储I/O负载会增加,并且这些薄置备磁盘的大小会增加。
对于链接克隆的虚拟机和具有快照的虚拟机进行碎片整理会导致重复日志的增加,从而占用更多的存储空间。如果您使用依赖于变更块跟踪的解决方案备份VMware虚拟机,碎片整理也会增加更改块的数量,备份时间会增加,因为需要备份更多的数据。在运行存储迁移以在数据存储之间移动虚拟机时,从客户操作系统进行碎片整理会产生负面影响。
数据存储扩展
A VMFS volume resides on one or more extents. Each extent occupies a partition, and the partition in turn is located on the underlying LUN. Extents provide additional scalability for VMFS volumes. When you create a VMFS volume, you use at least one extent. You can add more extents to an existing VMFS volume to expand the volume. Extents are different from RAID 0 striping.
- 如果检测到其中一个附加的扩展已下线,您可以确定卷的哪个扩展是离线的。只需输入以下命令:
vmkfstools -Ph /vmfs/volumes/iscsi_datastore/
结果显示有问题的逻辑单元的SCSI标识符(NAA ID)。
- 如果扩展中的一个失败,VMFS卷可以保持在线。但是,如果VM的虚拟磁盘上至少有一个块位于失败的扩展上,那么VM虚拟磁盘将变得无法访问。
- 如果VMFS卷使用的第一个扩展下线,整个VMFS数据存储将变为不活动,因为地址解析资源位于第一个扩展上。因此,如果没有其他解决方案来增加卷的大小,请使用VMFS扩展来创建和增加VMFS卷。
定期备份VMware vSphere以保护VM数据,并避免因具有存储VM文件的多个扩展的VMFS卷可能引起的问题。
日志记录
VMFS使用磁盘分布式日志来更新文件系统上的元数据。创建VMFS文件系统后,VMware VMFS分配存储空间来存储日志数据。日志记录用于跟踪尚未提交到文件系统的更改。
将写入文件系统元数据的日志更有可能在意外关闭或崩溃时恢复文件的最新版本。日志记录有助于重放自上次成功提交以重建VMFS文件系统数据的更改。日志记录文件系统不需要在失败后运行完整的文件系统检查以检查数据一致性,因为您可以检查日志。VMFS卷的根目录中有.sf文件来存储VMFS文件系统元数据。连接到VMFS数据存储的每个ESXi主机都可以访问此元数据以获取数据存储上每个对象的状态。
VMFS元数据包含文件系统描述符:块大小、卷容量、扩展数量、卷标签、VMFS版本和VMFS UUID。VMFS元数据对于VMFS恢复很有帮助。
目录结构
创建VM时,所有VM文件,包括VMDK虚拟磁盘文件,都位于数据存储的单个目录中。目录名称与VM名称相同。如果您需要将特定的VMDK文件存储在另一个位置(例如,另一个VMFS数据存储上),您可以手动复制一个VMDK文件,并在VM设置中打开虚拟磁盘以附加磁盘。结构化架构简化了备份和灾难恢复,因为应该将目录内容复制到VM备份中,以便在原始VM上丢失数据时进行恢复。
薄型配置
薄型配置是VMFS的一项功能,可优化存储利用率,并帮助节省存储空间。您可以在虚拟磁盘级别(对于VM的特定虚拟磁盘)设置薄型配置。当数据被写入薄型配置的虚拟磁盘时,虚拟磁盘的大小会动态增长。在任何时刻使用磁盘所需的存储空间是薄型磁盘的优势。
例如,您创建了一个大小为50 GB的薄型配置虚拟磁盘,但在这个虚拟磁盘上仅使用了10 GB的存储空间。在这种情况下,虚拟磁盘文件(*-flat.vmdk)的大小为10 GB。客户操作系统检测到磁盘的最大大小为50 GB,并将已使用的空间显示为10 GB。
您可以确保,如果尝试将薄配置的虚拟磁盘(.vmdk 和-flat.vmdk虚拟磁盘文件)复制到使用NTFS或ext4文件系统格式化的本地磁盘,则依赖于VMFS文件系统。复制虚拟磁盘后,虚拟磁盘大小等于最大配置的磁盘大小(而不是VMFS数据存储上薄配置的磁盘的实际大小)。
注意:VMware vSphere还支持在NFS文件系统上创建数据存储,包括共享数据存储,支持薄配置。
注意: VMware vSphere 还支持在NFS文件系统上创建数据存储,包括共享数据存储,支持薄配置。
自由空间回收
从VMFS 6和客户操作系统的自动空间回收(自动SCSI UNMAP)允许存储阵列从VMFS数据存储中回收未映射或已删除的磁盘块。在VMware vSphere 6.0和VMFS 5中,空间回收是通过esxcli storage vmfs unmap命令手动完成的。
空间回收允许您解决底层存储不知道文件在文件系统中被删除的问题,并且必须释放相应的物理存储空间(磁盘上的块)。此功能对于薄配置的磁盘特别有用。当客户操作系统在薄虚拟磁盘内删除文件时,此磁盘上使用的空间量会减少,并且文件系统不再使用相应的块。在这种情况下,文件系统会告诉存储阵列这些块现在是空闲的,存储阵列会取消分配选定的块,并且这些块可以用于写入数据。
让我们更仔细地看一下,在虚拟化和虚拟机中使用存储时数据是如何被删除的。想象一下有一个虚拟机,它有一个使用诸如NTFS、ext4或其他文件系统的虚拟磁盘的客户操作系统。薄配置的虚拟磁盘存储在一个具有VMFS文件系统的数据存储中。VMFS文件系统正在使用位于存储阵列上的底层分区和LUN。
- A file is deleted in the guest OS that operates with a file system (NTFS, for instance) on a virtual disk.
- 客户操作系统发起UNMAP。
- VMFS数据存储上的虚拟磁盘收缩(虚拟磁盘的大小减小)。
- ESXi发起UNMAP到物理存储阵列。
当从VMFS数据存储中删除或移动文件(VMDK文件、快照文件、交换文件、ISO映像等)时,当从客户操作系统中收缩分区时,以及当虚拟磁盘内的文件大小减小时,附加到VMFS数据存储的ESXi发出UNMAP。
从ESXi 6.5开始,VMware VMFS 6的自动UNMAP是异步的。自由空间回收不会立即发生,但空间最终会在无用户交互的情况下被回收。
异步UNMAP具有一些优势:
- 避免了硬件存储阵列的即时过载,因为UNMAP请求以恒定速率发送。
- 必须释放的区域被分批处理并一起取消映射。
- 对输入/输出性能和其他操作没有负面影响。
在以前的ESXi版本中,UNMAP是如何工作的?
- ESXi 5.0 – UNMAP是自动的和同步的
- ESXi 5.0 更新 1 – 使用命令行界面(CLI)中的 vmkfstools 执行 UNMAP 操作
- ESXi 5.5 和 ESXi 6.0 – 当在 ESXCLI 中运行时,手动 UNMAP 操作得到改进
- ESXi 6.0 – EnableBlockDelete 允许 VMFS 在虚拟机磁盘文件从虚拟机内 UNMAP 操作中缩小时自动发出 UNMAP 命令
快照和稀疏虚拟磁盘
您可以在 VMware vSphere 中对虚拟机进行快照以保存当前 VM 状态和虚拟磁盘状态。创建 VM 快照时,在 VMFS 数据存储上创建一个虚拟磁盘快照文件(一个 -delta.vmdk 文件)。快照文件称为增量磁盘或子磁盘,代表了在快照被拍摄时的 VM 当前状态与之前状态之间的差异
在 VMFS 数据存储上,增量磁盘是使用写时复制机制来节省存储空间的稀疏磁盘。根据底层 VMFS 数据存储的配置,有两种稀疏格式:VMFSsparse 和 SEsparse
- VMFSsparse 用于 VMFS 5 和小于 2 TB 的虚拟磁盘。这种快照技术建立在 VMFS 之上,因为在开始时重做日志为空,在拍摄快照后写入数据时增长。
- SEsparse用于VMFS 5上大于2 TB的虚拟磁盘,以及VMFS 6上的所有虚拟磁盘。该格式基于VMFSsparse格式,但具有一系列增强功能,如支持空间回收,允许ESXi虚拟化程序在通过客户操作系统删除数据或删除快照文件后对未使用的块执行UNMAP操作。
注意:在具有VMFS 6的ESXi 6.7中,对于SEsparse磁盘(精简配置磁盘的快照磁盘),由于VMFS文件系统上存在2 GB的死空间(数据已删除但未被回收),UNMAP将自动启动。如果您从客户操作系统中删除多个文件,例如四个512 MB文件,则将启动异步UNMAP。您可以通过按esxtop上的v启用VM视图,然后按f选择字段顺序,并按L显示UNMAP统计信息。默认值为2 GB,但您可以在CLI中更改它。在ESXi 7.0 U3中,VMFS报告的最大粒度为2 GB。
原始设备映射
将原始设备映射(RDM)磁盘集成到VMware VMFS结构中,为您在处理VM存储时提供更大的灵活性。在VMware vSphere中有两种RDM兼容性模式。
- 在虚拟兼容模式下的RDM磁盘。在VMFS数据存储上创建了一个VMDK映射文件(*-rdmp.vmdk),将存储阵列上的物理LUN映射到虚拟机上。使用这种方法将物理存储映射到VM时有一些特定性。
主要存储管理操作,如打开和其他SCSI命令会通过ESXi hypervisor的虚拟化层传递,但读和写命令会直接处理到存储设备,并绕过虚拟化层。
这意味着VM只能将映射的RDM SCSI磁盘作为存储设备使用,但大多数vSphere功能,如快照,是可用的。
- 在物理兼容模式下的RDM磁盘。ESXi主机在VMFS数据存储上创建映射文件,但SCSI命令直接处理到一个LUN设备,从而绕过了超级管理程序的虚拟化层(除了LUN报告命令)。这是一种较少虚拟化的磁盘类型。不支持VMware快照。
集群功能
- 集群和并发访问数据存储中的文件是VMware VMFS的另一个重要特性。与传统文件系统不同,VMware VMFS允许多个服务器同时读写文件数据。锁定机制允许多个ESXi主机同时访问VM文件而不会导致数据损坏。每个VMDK文件都会添加一个锁,以防止两个VM或两个ESXi主机同时向打开的VMDK文件写入数据。VMware在VMFS中支持两种文件锁定机制用于共享存储。
- 原子测试和设置(ATS)仅用于支持T10标准vStorage API for Array Integration(VAAI)规范的存储设备。这种锁定机制也称为硬件辅助锁定。该算法使用每个磁盘扇区的离散锁定。默认情况下,所有使用VMFS 5和VMFS 6格式化的新数据存储只有在底层存储支持此锁定机制并且不使用SCSI预留时,才仅使用ATS。对于通过使用多个扩展创建的数据存储,vCenter会过滤掉非ATS存储设备。
- ATS + SCSI 预留。如果ATS失败,则使用SCSI预留。与ATS不同,SCSI预留在需要保护元数据的适当操作时会锁定整个存储设备。操作完成后,VMFS释放预留,以便其他操作继续进行。从VMFS 3升级的数据存储继续使用ATS+SCSI机制。
VMware VMFS 6支持在vSphere中最多与32个ESXi主机共享VM虚拟磁盘文件(VMDK)。
支持vMotion和Storage vMotion
VMware vMotion 是一项功能,用于在 ESXi 主机之间实现虚拟机的实时迁移(迁移虚拟机的 CPU、RAM 和网络组件),而不会中断其操作。Storage vMotion 是一项功能,用于在不中断虚拟机运行状态的情况下,将虚拟机文件(包括虚拟磁盘)从一个数据存储迁移到另一个数据存储。VMFS 文件系统是使实时迁移工作的主要元素之一,因为多个 ESXi 主机从/向正在迁移的虚拟机的文件中读取/写入数据。
支持 HA 和 DRS
分布式资源调度器(DRS)、高可用性(HA)和容错是基于 VMFS 的文件锁定机制、实时迁移和集群功能而工作的。启用 HA 后,将在另一个 ESXi 主机上自动重新启动失败的虚拟机,并在使用 DRS 时启动虚拟机实时迁移以平衡集群。您可以同时使用HA 和 DRS。
支持 Storage DRS。支持在相同的数据存储集群中同时使用 VMFS 5 和 VMFS 6 来在数据存储之间迁移虚拟机文件。对于 VMware vSphere 存储 DRS,请使用同质存储设备。
增加 VMFS 卷
您可以在虚拟机运行时增加 VMFS 数据存储器的大小,并使用位于该数据存储器上的虚拟机文件。第一种方法是增加现有数据存储器使用的 LUN 的大小。增加 LUN 是在存储系统中进行的(而不是在 vSphere 中)。然后您可以扩展分区并增加 VMFS 卷。
您还可以通过将多个磁盘或 LUN 汇集在一起来增加 VMFS 卷的大小。在这种情况下,将添加 VMFS 扩展以增加 VMFS 卷。使用多个磁盘的扩展数据存储器也称为跨越数据存储器。必须使用同构存储设备。例如,如果数据存储器使用的第一个存储设备是 512n,则新添加的存储设备必须是 512n 块设备。此功能可以在最大支持的数据存储器大小高于最大 LUN 大小的情况下帮助规避最大 LUN 限制。
示例: LUN 的限制为 2 TB,并且您需要在单个 VM 数据存储器上创建具有 3 TB 虚拟磁盘的 VM。使用两个 2 TB 的扩展,每个允许您解决此问题。您必须使用 GPT 分区方案来创建大于 2 TB 的分区和数据存储器。
减少 VMFS 卷
不支持减少 VMFS 卷的大小。如果要减少 VMFS 卷的大小,需要将要减少的 VMFS 卷中的所有文件迁移到不同的 VMFS 数据存储器。然后,您需要删除要减少的数据存储器,并创建一个具有较小大小的新 VMFS 卷。当在创建的卷上准备好新的较小数据存储器时,请将 VM 文件迁移到此新数据存储器。
VMFS 数据存储器升级
您可以直接将VMFS 3升级到VMFS 5,无需迁移VM文件或重新创建新的VMFS 5数据存储。支持在运行VM时直接将VMFS 3升级到VMFS 5,无需关闭电源或迁移VM。升级后,VMFS 5将保留以前使用的所有VMFS 3特性。例如,块大小保持为64 KB而不是1 MB,MBR用于保留不大于2 TB的分区。
然而,不支持直接将VMFS 5和旧版本的VMFS数据存储升级到VMFS 6。您需要将要升级的数据存储中的文件迁移到安全位置,删除VMFS 5数据存储,创建新的VMFS 6数据存储,然后将文件复制回新的VMFS 6数据存储。
如果您将ESXi升级到ESXi 6.5或更高版本,则可以继续使用ESXi升级前创建的VMFS 3和VMFS 5数据存储。您无法在ESXi 6.5及更高版本的ESXi上创建VMFS 3数据存储。
阅读详细的VMFS 5 vs VMFS 6比较,了解如何升级到最新的VMFS版本。在某些情况下,您可以在Linux中挂载VMFS。
结论
VMware VMFS是一种可靠、可扩展和优化的文件系统,用于存储虚拟机文件。VMFS支持多个ESXi主机的并发访问、薄配置、原始设备映射、虚拟机实时迁移、日志记录、支持Advanced Format(包括512e和4Kn)的物理磁盘、GPT分区方案、虚拟机快照、空闲空间回收等其他有用的功能。由于1MB的块大小,最新的VMFS版本不容易因文件碎片而导致性能下降。在VMware vSphere中,将虚拟机文件存储在VMFS数据存储中是推荐的方式。
无论您使用什么文件系统来存储虚拟机,您都需要定期备份数据,以防止故障、停机或其他中断导致数据丢失。考虑使用NAKIVO Backup & Replication,这是一种解决方案,可以保护和快速恢复vCenter管理和独立ESXi工作负载。
Source:
https://www.nakivo.com/blog/all-you-need-to-know-about-vmware-vmfs/