VMware vSphere Web Services SDK编程指南(十)- 10 Storage
10 Storage虚拟机使用虚拟磁盘存储操作系统、程序文件及其他数据。一个虚拟磁盘是一个大的物理文件,或一个文件集,可以被复制、归档及备份。要存储并操作虚拟磁盘文件,主机需要专用的存储空间。ESX/ESXi 支持多种方式存储。由 vCenter 服务器系统管理的主机可以共享存储。
10 Storage
虚拟机使用虚拟磁盘存储操作系统、程序文件及其他数据。
一个虚拟磁盘是一个大的物理文件,或一个文件集,可以被复制、归档及备份。
要存储并操作虚拟磁盘文件,主机需要专用的存储空间。ESX/ESXi 支持多种方式存储。
由 vCenter 服务器系统管理的主机可以共享存储。
本章包括以下主题:
■ 10.1 Storage 管理对象
■ 10.2 Storage 简介
■ 10.3 选择要使用的 Storage API
■ 10.4 配置磁盘分区
■ 10.5 创建及管理 Datastores
■ 10.6 配置 iSCSI 存储
■ 10.7 创建及管理 Datastores
■ 10.8 管理 VMFS 卷拷贝(Resignaturing)
■ 10.9 管理诊断分区
■ 10.10 示例代码参考
任何类型的网络附加存储都需要在 VMkernel 中完整的网络配置,以支持对存储介质的基于网络的访问。
10.1 Storage 管理对象
可以通过 HostSystem 托管对象访问支持存储管理的对象。
■ HostStorageSystem
HostSystem.storageSystem 属性是一个到 ESX/ESXi 系统的 HostStorageSystem 的托管对象引用,HostStorageSystem 是一个低级接口,主要用于配置物理存储,详见 配置磁盘分区。
■ HostDatastoreSystem
HostSystem.datastoreSystem 属性是一个到 HostDatastoreSystem 托管对象的托管对象引用,HostDatastoreSystem 方法可以创建、配置、扩展及删除 datastores。
虽然 HostStorageSystem 支持物理存储的访问和配置,但 HostDatastoreSystem 支持通过卷(这是宿主机可以用于虚拟机的卷,Datastore 托管对象)来访问和配置逻辑存储。详见 创建和管理 Datastores。
■ HostDatastoreBrowser
该对象提供访问一个或多个数据存储的内容,数据存储中的项是包含配置、虚拟磁盘和与虚拟机相关联的其他数据的文件。
■ Datastore
Datastore 托管实体提供用于挂载 datastores、浏览 datastores及获取有关 datastores信息的方法。详见 创建和管理 Datastores。
■ HostDiagnosticPartition
该对象支持创建和查询 ESX/ESXi 主机上的诊断分区。详见 管理诊断分区。
10.2 Storage 简介
VMware vSphere 存储架构由抽象层组成,这些抽象层隐藏并管理物理存储子系统的复杂性和差异,如下图 10.1 所示:
图 10.1 存储架构
10.2.1 虚拟机如何访问存储
虚拟机为其操作系统、应用软件和其他数据文件使用虚拟磁盘。
一个虚拟磁盘在 datastore 上存储为一个 vmdk 文件,虚拟磁盘从虚拟机的操作系统隐藏物理存储层。
无论你的主机使用哪种存储设备,虚拟磁盘总是作为本地 SCSI 设备出现在虚拟机中。因此,您可以运行在虚拟机中不被认证为特定存储设备的操作系统,例如,在虚拟机中 SAN。
当一个虚拟机连接到它的存储于 datastore 中的虚拟磁盘,它发送 SCSI 命令,因为数据存储可以存在于不同类型的物理存储中,根据 ESX/ESXi 主机连接到物理存储设备所使用的协议,这些命令被打包成其它的形式。
对于运行在每个虚拟机上的应用程序和客户操作系统,存储子系统作为虚拟 SCSI 控制器连接到一个或多个虚拟 SCSI 磁盘上,如图 10.1 头部所示。
这些控制器只有 SCSI 类型的控制器可以被虚拟机查看及访问,包括继承于 VirtualSCSIController 的下列对象:
■ ParaVirtualSCSIController
■ VirtualBusLogicController
■ VirtualLsiLogicController
■ VirtualLsiLogicSASController
虚拟机访问存储的精确程度取决于主机的设置。图 10.2 Storage API Architecture 给出了不同可能性的一个概览。
图 10.2 Storage API Architecture
10.2.2 Datastores
datastore 是一个可管理的存储实体,通常用作虚拟机文件(日志文件、脚本、配置文件、虚拟磁盘等)的存储库,vSphere 提供两种类型的 Datastores,VMFS 和 NAS。
■ 如果要使用一个 NAS 卷,使用 CreateNasDatastore 将它挂载,使用 RemoveDatastore 取消挂载。这两个命令是特定于主机的,你必须在希望挂载或卸载数据存储的每个主机上调用 create 和 remove 方法。
■ 要创建一个 VMFS 数据存储,调用 CreateVmfsDatastore,传入任何现有的磁盘,作为调用结果,磁盘使用 VMFS 进行格式化,并且 datastore 被挂载到所有 ESX/ESXi 主机上,当下一次进行重新扫描时,磁盘是可见的。
当在 VMFS datastore 上调用 RemoveDatastore ,该 datastore 被销毁。在重新扫描之后,该 datastore 不再可用于任何 ESX/ESXi 系统。
与 NAS datastores 相比,不必调用方法来创建和删除每个主机上的数据存储。
在启动和重新扫描主机总线适配器之后,ESX/ESXi 主机自动地在连接的逻辑单元号(Logical Unit Numbers , LUNs)上发现 VMFS 卷。
当你创建一个 VMFS datastore 时,datastore 标签基于 VMFS 卷标签。如果和现有 datastore 冲突,则通过追加后缀来使标签变得惟一,VMFS 卷标签仍然不变。
销毁 VMFS datastore 可以删除组成 VMFS 卷的分区。
Datastores 可以跨多个物理存储设备,单个 VMFS 卷可以包含物理主机上的本地 SCSI 磁盘阵列中一到多个 LUNs、一个光纤通道 SAN 磁盘场,或 iSCSI SAN 磁盘场。
ESX/ESXi 系统检测添加到任何物理存储子系统的新的 LUN。当用户查询可用设备列表,新发现的设备就包括在内。
可以在现有的 VMFS 卷上扩展存储容量,而不需要关闭物理主机或存储子系统。
如果 VMFS 卷中的任何一个 LUN 都失败或不可用,那么只有在该 LUN 上有数据的虚拟机才会受到影响,一个例外是具有跨越卷(多范围卷)的第一个范围的 LUN。所有其它的虚拟机的虚拟磁盘都驻留在其他 LUN 上,继续正常运行。
10.3 选择要使用的 Storage API
HostStorageSystem APIs 级别很低,可以执行 VMFS 的配置操作,它们需要了解分区细节和 VMFS 的范围组成。它们不强制 VMFS 的最佳实践,比如分区对齐和优化 VMFS 块大小,它们允许在同一 LUN 上不同的数据存储混合分区,并添加分区,即使在大多数情况下扩展是可取的。
HostDatastoreSystem APIs 主要用于管理 VMFS 卷,不要求对存储系统有深入的了解,但强制最佳实践。
下图 10.3 存储 API 给出了不同 API 的一个概览,并用表显示了哪些任务通常与哪个 API 一起执行。
图 10.3 Storage APIs
Storage API Overview
托管对象 | 任务 | 查阅 |
HostStorageSystem | 关联独立主机的低级操作,如调整或更新磁盘分区 | 磁盘分区配置 |
HostStorageSystem | 多路径管理 | 多路径管理 |
HostStorageSystem | iSCSI 存储设置及配置 | iSCSI 存储配置 |
HostDatastoreSystem | 创建及管理 VMFS datastores、远程 datastores | 创建及管理 datastores |
HostDatastoreSystem HostStorageSystem | 管理 VMFS 卷拷贝(resignature or force mount) | 管理 VMFS 卷拷贝 |
HostDiagnosticSystem | 创建及管理诊断分区 | 管理诊断分区 |
10.4 配置磁盘分区
HostStorageSystem 管理低级的存储组件包括 HBAs、SCSI LUNs、文件系统卷等。在创建、扩展或扩大一个 VMFS 文件系统。
■ ComputeDiskPartitionInfo – 根据指定的磁盘布局计算磁盘分区信息
服务器使用 HostDiskPartitionLayout 对象指定的布局为特定的磁盘计算一个新的 HostDiskPartitionInfo 对象。
在 HostDiskPartitionLayout 对象内部,你可以为分区指定块范围列表,及可选的块总数和大小。当更新一个磁盘分区时,就可以使用 HostDiskPartitionSpec 里的这些信息。
■ ComputeDiskPartitionInfoForResize – 计算磁盘分区信息,以支持调整给定分区的大小
将调整的磁盘分区信息作为 HostDiskPartitionInfo 对象返回,当调整磁盘分区时,就可以使用 HostDiskPartitionSpec 里的这些信息。
■ RetrieveDiskPartitionInfo – 允许指定一组标识磁盘的设备路径名,并为每个磁盘返回一个 HostPartitionInfo 对象数组。
■ UpdateDiskPartitions – 更改一个磁盘分区(通过提供一个分区规范 HostDiskPartitionSpec 及设备名称)
当为主机更新磁盘分区后,必须使用如下其中一种方法执行一次扫描,完整的扫描可能会花一段比较长的时间。
■ RefreshStorageSystem – 刷新存储信息和设置以获取更改,但不会显式地发出命令以发现新设备
■ RescanAllHba – 对新存储设备的所有主机总线适配器进行重新扫描,这种方法可能需要很长时间
■ RescanHba – 对新设备扫描一个特定的主机总线适配器
HostStorageSystem 方法也用于设置 iSCSI 存储。
10.5 多路径管理
vSphere Storage 文档包含关于如何使用多路径进行故障转移和负载平衡的信息,可以使用 vSphere Client、esxcli 命令或使用如下所列命令管理多路径。
使用 HostStorageSystem.multipathStateInfo 属性访问 HostMultipathStateInfo 数据对象,该对象描述了一个给定主机上多路径状态的运行信息。
■ EnableMultipathPath – 为设备启用一个禁用的路径
使用 HostMultipathStateInfoPath 或 HostMultipathInfoPath 中的 pathname。
■ QueryPathSelectionPolicyOptions – 获得一组路径选择策略选项
这些选项决定了由本地多路径管理的设备可以使用的路径。
一个 HostMultipathInfo 数据对象标识通过本地多路径管理的设备。
■ QueryStorageArrayTypePolicyOptions – 获得存储阵列类型策略选项的集合
这些选项决定了一个由本地多路径管理的设备可以使用的存储阵列类型策略。
一个 HostMultipathInfo 数据对象标识通过本地多路径管理的设备。
■ SetMultipathLunPolicy – 为 LUN 更新路径选择策略
指定 LUN 使用 HostMultipathInfoLogicalUnit 对象中的 LUN UUID。
■ DisableMultipathPath – 为设备禁用一个启用的路径
使用 HostMultipathStateInfoPath 或 HostMultipathInfoPath 中的 pathname。
更多推荐
所有评论(0)