VMware vSphere Web Services SDK编程指南(十)- 10.7 创建及管理 Datastores

10.7 创建及管理 Datastores


本章包括以下主题:

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 示例代码参考

本节从第7节开始。


10.7 创建及管理 Datastores

每个数据存储都是一个逻辑容器,类似于逻辑卷上的文件系统,其中主机放置虚拟磁盘文件和其他虚拟机文件。数据存储隐藏了物理存储设备的细节,并为存储虚拟机文件提供统一的模型存储虚拟文件。

HostDatastoreSystem 托管对象提供了创建和管理数据存储的方法,所有的 HostDatastoreSystem 方法需要一个到 HostDatastoreSystem 的托管对象引用,当创建后返回一个 Datastore 对象的引用。

HostDatastoreSystem 可以让你创建、扩展、查询和删除或更新数据存储。通过调用 ConfigureDatastorePrincipal 还可以配置数据存储负责人,所有相关的虚拟机文件 I/O 都在该用户下执行。

VMFS 配置任务通常执行如下:

1 调用 QueryAvailableDisksForVmfs 获取用于保存 VMFS 数据存储的磁盘子集

    QueryAvailableDisksForVmfs 获取可以被用于包含 VMFS 数据存储区的磁盘列表,你可以提供一个数据存储名称来获取磁盘列表,这些磁盘包含指定的 VMFS 数据存储区。
    该操作不返回当前被 VMFS 数据存储使用的磁盘,也不返回被 RDMS 引用的管理 LUNs 及磁盘。RDM 磁盘不能用于 VMFS 数据存储。

2 获取关于配置选项的信息(通过调用下列的其中某个方法,传入所选磁盘)

    ■ QueryVmfsDatastoreCreateOptions – 获取在磁盘上创建一个新的 VMFS 数据存储的有关配置信息

    ■ QueryVmfsDatastoreExpandOptions – 获取关于扩展现有 VMFS 数据存储分区的选项信息

    ■ QueryVmfsDatastoreExtendOptions – 获取关于磁盘扩展现有的 VMFS 数据存储的选项信息

3 如果需要,调用 HostStorageSystem.ComputeDiskPartitionInfo 改变磁盘分区布局,然后调用 HostStorageSystem.UpdateDiskPartition 调整分区大小

4 调用 CreateVmfsDatastore、ExtendVmfsDatastore 或 ExpandVmfsDatastore 来完成 VMFS 的配置操作

10.7.1 访问 Datastores

下面的 Datastore 托管对象类图说明了如何访问或指定数据存储,可查阅 Datacenter Inventory 了解更多有关托管对象的层级结构信息。

    ■ 每个 Datacenter 托管对象拥有一个 datastore 属性,其包含一组 datastore。

    ■ 每个 Datacenter 托管对象拥有一个 datastoreFolder 属性,它是一个到 folder 的引用,其包含该 datacenter 的 datastore。

    ■ 每个 Datacenter 托管对象拥有一个 hostFolder 属性,它是一个到 folder 的引用,其包含该数据中心的计算资源、主机和集群,每个 HostSystem 或 ComputeResource 拥有一个 datastore 属性,它是一组 Datastore 托管对象。

Datastore 托管对象

这里写图片描述

10.7.2 创建或修改一个 VMFS Datastore

datastore 是一个可管理的存储实体,通常用作虚拟机文件(包括日志文件、脚本、配置文件、虚拟磁盘等)的存储库。

VMFS 是 VMware 为虚拟机设计的一个专用文件系统,VMFS 非常适合存储一小部分大型数据文件,比如虚拟磁盘,这些文件主要用于单个主机。
VMFS 不同于其他的文件系统格式如 FAT16/FAT32 等,因此它可以被通过连接到同一 SAN LUN 的多个主机来访问它。

你可以在任何基于 SCSI 的主机能够访问的存储设备上设置 VMFS datastore,VMFS 卷创建、扩展及扩张需要首先进行分区操作和 VMFS 卷操作。

设置磁盘分区

设置磁盘分区包含以下任务:

  1. 调用 HostStorageSystem.RetrieveDiskPartitionInfo 获取现有分区相关信息

  2. 调用 HostStorageSystem.ComputeDiskPartition,传入所需磁盘布局,服务器为指定的磁盘计算一个新的分区信息对象,表示所需布局,并返回可以在 HostDiskPartitionSpec 中使用的 HostDiskPartitionInfo 对象,您可以将它传递到 UpdateDiskPartitions。

  3. 调用 HostStorageSystem.UpdateDiskPartitions,传入 HostDiskPartitionSpec 进行分区更新。

创建 VMFS Datastore

创建 VMFS Datastore 包含下列任务:

1 配置和安装你的存储所需的任何第三方适配器并通过调用 HostStorageSystem.RescanAllHba 扫描适配器;

2 调用 HostDatastoreSystem.QueryAvailableDisksForVmfs 查询有关可以用来包含VMFS数据存储的磁盘的信息;

    该方法过滤现有 VMFS 当前正在使用的磁盘,除非 VMFS 使用的磁盘是被扩展的磁盘。它还将过滤出 RDMs 所引用的管理 LUN 和磁盘,这些磁盘 LUN 也不适合 VMFS 使用。
    该方法返回一个 HostScisiDisk 对象数组。

3 调用 HostDatastoreSystem.QueryVmfsDatastoreCreateOptions 查询创建一个新的 VMFS datastore 相关选项信息,返回一个允许你访问相配的 UUID 的 VmfsDatastoreCreateOption 数据对象数组;

4 (可选)如果没有适合你的 VMFS 卷的分区,你必须先创建分区,使用 HostStorageSystem 中的 ComputeDiskPartitionInfo 和 UpdateDiskPartitions 方法;

5 创建数据存储;

■ 调用 HostDatastoreSystem.CreateVmfsDatastore 创建一个 VMFS 数据存储,该方法携带一个由 partition、HostVmfsSpec 及 可选的 extent 组成的 VmfsDatastoreCreateSpec 数据对象。其中 HostVmfsSpec 指定 VMFS 的块大小、扩展、主版本及卷名称。

■ 调用 HostDatastoreSystem.CreateNasDatastore 创建一个基于 datastore 的附加网络。

之后你可以调用下面某个方法扩展 VMFS datastore:

■ 首先调用 QueryVmfsDatastoreExpandOptions ,然后调用 ExpandVmfsDatastore 扩展一个现有的 VMFS datastore,通过使用 VmfsDatastoreExpandSpec 数据对象(其包含扩展和分区信息的名称)提供的规范。
  如果需要的话,ExpandVmfsDatastore 会将数据存储的大小增加到为数据存储提供的完整大小。

■ 首先调用 QueryVmfsDatastoreExtendOptions,然后调用 ExtendVmfsDatastore 扩展一个现有的 VMFS datastore,通过使用 VmfsDatastoreExtendSpec 数据对象提供的规范。

10.7.3 删除和更新 Datastores

■ RemoveDatastore – 从主机中删除一个数据存储

■ UpdateLocalSwapDatastore – 为该主机选择 localSwapDatastore,对这个设置的任何更改都会影响虚拟机,这些虚拟机随后会从这个主机的挂起状态启动或恢复,或者在启动时迁移到这个主机上。当前在主机上已启动的虚拟机不受影响。

10.7.4 用 HostStorageSystem 管理 VMFS Datastores

在大多数情况下,数据存储方法适合于创建和管理 VMFS 数据存储,但下列这些情况使用 HostStorageSystem 代替:

■ AttachVmfsExtent – 扩展一个 VMFS,通过附加一个磁盘分区来扩展

■ ExpandVmfsExtent – 扩展一个磁盘分区为规范指定的 VMFS 范围

■ FormatVmfs – 根据传入的 HostVmfsSpec,在磁盘分区上格式化一个新的 VMFS,返回一个代表新的 VMFS 文件系统的HostVmfsVolume,HostVmfsVolume 包含块大小、磁盘的 VMFS 扩展的名称列表及其他包含 UUID 的信息。

    该命令是一个低级的 API,你可以显式地用于分区磁盘,大多数情况下, 使用 Datastore VMFS 命令更适合。

■ RescanVmfs – 重新扫描新的 VMFS 实例

■ UpgradeVmfs – 将 VMFS 升级到当前的 VMFS 版本

更新和升级

■ HostStorageSystem.UpdateScsiLunDisplayName – 更新与 SCSI LUN 相关联的可变显示名称,使用 LUN UUID 标识要更新的 SCSI LUN

■ HostStorageSystem.UpgradeVmLayout – 遍历所有已注册的虚拟机
    对于每个虚拟机,升级布局并记录事件,当方法被调用时,VirtualMachineFileLayout 数据对象中的信息是正确的。




原文:
VMware vSphere 6.5 Documentation Center:Creating and Managing Datastores