Pack 对象

[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

pack 对象为磁盘组、磁盘集合以及由基本或动态软件提供程序管理的卷建模。 提供程序可以包含多个包对象。

使用 API,应用程序可以指导 VDS 将一个或多个磁盘添加到包中,将磁盘绑定到卷,并选择性地将磁盘作为一个单元在主机之间移动。 无法将现有卷导入包。

注意

包中的成员身份并不意味着磁盘在性能、媒体、互连协议或其他特征方面保持一致性。

 

磁盘对象要么未分配,由 VDS 管理,要么正好是一个包的成员。 基本软件提供程序可以包含零个或多个包,每个包都包含一个基本磁盘。 提供程序对基本磁盘上的卷数没有限制。 动态提供程序可以包含零个或多个包,每个包中有多个动态磁盘。 此提供程序根据逻辑磁盘管理器的一兆字节大小限制磁盘上的卷数, (LDM) 数据库。 假设一个卷至少有一个 plex 和一个磁盘盘区,一个包的最大卷数约为 1000。 最大数量会随着磁盘数量的增加而下降。

除了磁盘对象,包还可以包含由一个或多个硬件提供程序实现的一个或多个 LUN 对象。 对于 Windows 内核,LUN 只是另一个磁盘。 (LUN 对象必须取消屏蔽到执行提供程序程序的计算机。) 当磁盘为 LUN 时,LUN 对象公开 IVdsLunIVdsDisk 接口。 pack 对象使用 IVdsDisk 而不是 IVdsLun 枚举包中的 LUN。 有关 LUN 的更详细说明,请参阅 LUN 对象

下图显示了包含两个成员的包:磁盘和 LUN。 应用程序可以将这些对象添加到联机包,并从轴表示的基础磁盘和驱动器盘区创建卷。

此图显示了应用程序正在添加的磁盘和 LUN 的“Pack”,以创建由“驱动器”和“心轴”表示的卷。

使用 IVdsSwProvider::CreatePack 方法创建新的 pack 对象。 调用方可以通过从 IVdsSwProvider:: QueryPacks 方法返回的枚举中选择所需的 pack 对象来获取指向特定包的指针。 使用 pack 对象,可以添加、删除或替换包的成员。 将磁盘对象添加到包时,VDS 会初始化磁盘以取消绑定所有现有卷。 相比之下,LUN 在添加到包时会保留所有绑定详细信息。 如果从包中删除最后一个磁盘,则当调用方释放对该对象的最后一个引用时,VDS 会删除 pack 对象。

对象属性包括对象标识符、名称、包状态和标志。 联机包可供配置和使用,脱机包不可用。 VDS 支持任意数量的联机和脱机包。

Windows Server 2003: 一次仅支持一个联机包。

VDS 在包中强制执行联机磁盘的仲裁。 仲裁确定包是否可以具有联机状态,并阻止多个主机向同一包授予联机状态。 如果包中的联机磁盘数低于仲裁 (n/2 + 1) ,则 VDS 会将联机包脱机。

下表列出了相关的接口、枚举和结构。

类型 元素
始终由此对象公开的接口 IVdsPackIVdsPack2*。
关联的枚举 VDS_PACK_FLAGVDS_PACK_STATUS
关联的结构 VDS_PACK_PROPVDS_PACK_NOTIFICATION

 

*Windows Server 2003: 在 Windows Vista 之前,不支持此接口。

软件提供程序对象

LUN 对象

IVdsLun

IVdsDisk