Pack 对象
[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口被 Windows 存储管理 API取代。
包对象为磁盘组、由基本或动态软件提供程序管理的磁盘和卷集合建模。 提供程序可以包含多个包对象。
使用 API,应用程序可以将 VDS 定向到包中添加一个或多个磁盘,将磁盘绑定到卷,还可以选择将磁盘作为单元在主机之间移动。 不能将现有卷导入包。
注意
包中的成员身份并不意味着磁盘在性能、媒体、互连协议或其他特征方面的一致性。
磁盘对象要么未分配,要么由 VDS 管理,要么是一个包的成员。 基本软件提供程序可以包含零个或多个包,每个包都包含一个基本磁盘。 提供程序对基本磁盘上的卷数没有限制。 动态提供程序可以在每个包中具有多个动态磁盘的零个或多个包。 此提供程序根据逻辑磁盘管理器 (LDM) 数据库的一兆字节大小限制磁盘上的卷数。 由于卷至少有一个 plex 和一个磁盘区,包的最大卷数约为 1000。 最大数目随着磁盘数上升而下降。
除了磁盘对象,包还可以包含一个或多个硬件提供程序实现的一个或多个 LUN 对象。 对于 Windows 内核,LUN 只是另一个磁盘。 (LUN 对象必须解掩到正在执行提供程序程序的计算机。当磁盘为 LUN 时,LUN 对象同时公开 IVdsLun 和 IVdsDisk 接口。 pack 对象使用 IVdsDisk(而不是 IVdsLun)枚举包中的 LUN。 有关 LUN 的更详细说明,请参阅 LUN 对象。
下图显示了一个包含两个成员的包:一个磁盘和一个 LUN。 应用程序可以将这些对象添加到联机包,并从由轴表示的基础磁盘和驱动器盘区创建卷。
使用 IVdsSwProvider::CreatePack 方法创建新的 pack 对象。 调用方可以通过从 IVdsSwProvider:: QueryPacks 方法返回的枚举中选择所需的包对象来获取指向特定包的指针。 使用 Pack 对象,可以添加、删除或替换包的成员。 将磁盘对象添加到包时,VDS 将初始化磁盘以取消绑定所有现有卷。 相比之下,LUN 会在添加到包时保留所有绑定详细信息。 如果从包中删除最后一个磁盘,则当调用方释放对对象的最后一个引用时,VDS 会删除该包对象。
对象属性包括对象标识符、名称、包状态和标志。 联机包可用于配置和使用,脱机包不可用。 VDS 支持任意数量的联机和脱机包。
Windows Server 2003: 一次仅支持一个联机包。
VDS 在包中强制实施联机磁盘仲裁。 仲裁确定包是否可以具有联机状态,并阻止多个主机向同一包授予联机状态。 如果包中的联机磁盘数低于仲裁(n/2 + 1),VDS 将联机包脱机。
下表列出了相关的接口、枚举和结构。
类型 | 元素 |
---|---|
此对象始终公开的接口 | IVdsPack 和 IVdsPack2*。 |
关联的枚举 | VDS_PACK_FLAG 和 VDS_PACK_STATUS。 |
关联的结构 | VDS_PACK_PROP 和 VDS_PACK_NOTIFICATION。 |
*Windows Server 2003: 在 Windows Vista 之前不支持此接口。
相关主题