10.8 管理 VMFS 卷拷贝及诊断分区
本章包括以下主题:
■ 10.1 Storage 管理对象
■ 10.2 Storage 简介
■ 10.3 选择要使用的 Storage API
■ 10.4 配置磁盘分区
■ 10.5 多路径管理
■ 10.6 配置 iSCSI 存储
■ 10.7 创建及管理 Datastores
■ 10.8 管理 VMFS 卷拷贝(Resignaturing)
■ 10.9 管理诊断分区
■ 10.10 示例代码参考
本节从第8节开始。
10.8 管理 VMFS 卷拷贝(Resignaturing)
默认情况下,ESX/ESXi 主机挂载所有的 VMFS 数据存储,在 LUN 上的分区中创建的每个 VMFS 数据存储都有一个惟一的UUID,存储在文件系统的超级块中。此外,源 LUN 的 LUN ID 是惟一的,并存储在 VMFS 元数据中。
当一个 LUN 被复制或作为一个副本时,产生的 LUN 副本与原来的 LUN 相同,每个字节都是一样的,因此,如果原始 LUN 包含一个带有 UUID X 的 VMFS 数据存储,那么 LUN 副本似乎包含一个相同的 VMFS 数据存储,或者一个 VMFS 数据存储拷贝,使用的是相同的UUID X。
ESX/ESXi 能够确定一个 LUN 是否包含 VMFS datastore 副本,并认为该副本没有得到解决,并且不会自动挂载它。
要使在 LUN 副本上的数据可用,你可以强制挂载副本,如果你确定原始文件没有使用,或者您可以重新签名副本。当你执行数据存储签名时,需考虑以下几点:
■ 数据存储的签名是不可逆转的,因为它覆盖了原始的VMFS UUID。
■ 包含你重新签名的 VMFS 数据存储的 LUN 副本不再被视为 LUN 副本,而是作为独立的数据存储出现,与副本的源没有任何关系。
■ 只有在所有的区段都是联机的情况下,跨数据存储才可以被重新签名。
■ 这一过程是崩溃和容错性的,如果进程被中断,您可以稍后重新开始。
■ 你可以挂载新的 VMFS 数据存储,而不存在其 UUID 与其他任何数据存储的 UUID 发生冲突的风险,比如在 LUN 快照的层次结构中的父类或子类。
重新签名未解决的卷最容易的方法就是通过使用 HostDatastoreSystem.ResignatureUnresolvedVmfsVolume_Task 方法,该方法分配一个新的 DiskUUID 给 VMFS 卷,但是保持它的内容完整,该方法支持跨主机的安全卷共享,并在大多数情况下是合适的。
你也可以使用低级 HostStorageSystem 方法来查找、强制挂载或卸载未处理的卷:
■ HostStorageSystem.QueryUnresolvedVmfsVolume – 获取未挂载 VMFS 卷的列表
为了跨主机共享卷,VMFS 卷被绑定到它的底层块设备存储。当执行一个低级的块副本被拷贝或移除 VMFS 卷,复制的卷是未绑定的。
■ HostStorageSystem.ResolveMultipleUnresolvedVmfsVolumes – 重新签名或强制挂载未绑定的 VMFS 卷
该方法以一个 HostUnresolvedVmfsResolutionSpec 数据对象作为输入,HostUnresolvedVmfsResolutionSpec.resolutionSpec 属性是一个包含HostUnresolvedVmfsResolutionSpecVmfsUuidResolution 枚举的 HostUnresolvedVmfsResolutionSpec 数据对象数组,该枚举值为forceMount 和 resignature。
■ UnmountForceMountedVmfsVolume – 卸载强制挂载的 VMFS 卷
当执行一个低级的块副本被拷贝或移除 VMFS 卷,复制的卷是未解析的。为了使 VMFS 卷可用,将应用一个解析操作。作为解析操作的一部分,你可能决定保留原始的 VMFS UUID。一旦应用了该解决方案,就将 VMFS 卷挂载在主机上以供其使用。
该方法允许你卸载 VMFS 卷,如果该卷没有被任何已注册的虚拟机使用的话。
10.9 管理诊断分区
主机必须有一个诊断分区(dump 分区)来存储用于调试的核心 dump ,并使用由 VMware 提供的技术支持。在(http://kb.vmware.com/kb/1004128 )上的 VMware 知识库文章说明了如何在 ESXi 中为紫色屏幕错误收集诊断分区。
建议为每个主机提供100MB的诊断分区,如果不只一个 ESX/ESXi 主机使用相同的 LUN 作为诊断分区,那么 LUN 必须被分区,所有的 ESX/ESXi 主机才能够访问它。
每个 ESX/ESXi 主机需要 100MB 空间,所以 LUN 的大小决定了多少服务器能够共享它,每个 ESX/ESXi 主机被映射到一个诊断槽。
如果服务器共享一个诊断分区,VMware 建议磁盘空间至少 16 个插槽(1600 MB)。
你可以用 FibreChannel 或硬件 iSCSI 建立一个 SAN LUN, SAN LUN 不支持通过一个软件 iSCSI 启动程序访问。
注意:如果两个主机共享诊断分区失败并将核心转储(core dumps)保存到相同的槽位中,那么核心转储可能会丢失。要收集核心转储数据,在主机失败后立即重新启动主机并提取日志文件。
如果另一主机在你收集第一台主机的诊断数据之前失败,那么第二台主机不保存 core dump。
10.9.1 获取诊断分区信息
HostDiagnosticSystem 托管对象允许你用下列几种方式获取信息:
■ 从 HostDiagnosticSystem.activePartition 属性获取 HostDiagnosticPartition 对象,以检查活动分区的属性
■ 调用 HostDiagnosticPartition.QueryAvailablePartition 方法获取可用的诊断分区列表,按适当的次序
■ 调用 HostDiagnosticPartition.QueryPartitionCreateOptions 方法获取拥有足够空间来包含特定类型的诊断分区的磁盘列表,按适当的次序返回。
10.9.2 创建诊断分区
创建一个针对分区需要使用其中一个查询方法找到合适的分区,然后获取一个创建规范,并执行实际的创建。
创建诊断分区
1 调用 HostDiagnosticPartition.QueryAvailablePartition 或 HostDiagnosticPartition.QueryPartitionCreateOptions 查询合适的分区
2 调用 HostDiagnosticPartition.CreateDiagnosticPartition,传入一个 HostDiagnosticPartitionCreateSpec,其包含诊断类型、id、存储类型等信息。
如果成功,该方法将创建分区,并在活动参数中指定分区为活动分区;
如果失败,诊断分区可能存在,但即使分区是活动的,也不会激活诊断分区。
10.10 示例代码参考
vSphere Web Services SDK (SDK\vsphere-ws\java\JAXWS\samples\com\vmware\)有一些在本章讨论主题的示例应用程序。Java 对应的程序为:
■ scsilun\SCSILunName.java
■ httpfileaccess\GetVMFiles.java
原文:
VMware vSphere 6.5 Documentation Center:Managing VMFS Volume Copies (Resignaturing)
VMware vSphere 6.5 Documentation Center:Managing Diagnostic Partitions
VMware vSphere 6.5 Documentation Center:Sample Code Reference