LUN 对象
[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
lun (逻辑单元号) 对象为由硬件提供程序创建并由子系统显示的可寻址存储空间的逻辑单元建模。 每个 LUN 由至少一个 LUN 丛组成,后者又由一个或多个驱动器的盘区组成。
VDS 支持五种 LUN 类型:简单、跨区、条带、镜像和带状。 简单、跨和条带化的 LUN 是非容错的;镜像 LUN 和奇偶校验 LUN 具有容错能力。 本部分的其余部分介绍每个 VDS LUN 类型。
- 简单 LUN 是一种非容错 LUN,由单个驱动器的单个连续驱动器范围组成。 连续范围可以包含单个块范围或链接在一起的多个块范围。
- 跨 LUN 是一种非容错 LUN,由多个驱动器中的多个不连续区组成。 数据以线性方式写入第一个驱动器上的每个盘区,直到所有第一个驱动器盘区都已填充,然后写入第二个驱动器上的每个盘区,依此推移。 跨 LUN 在由各种大小驱动器组成的子系统中提供驱动器空间的高效利用。
- 条带 LUN 是一种非容错 LUN,由来自多个驱动器的多个交错的连续盘区组成。 条带化 LUN 使用 RAID-0 配置,以便数据在贡献驱动器上的盘区之间以循环方式“条带化”。 条带 LUN 最适合大小、型号和制造商相同的驱动器。
- 镜像 LUN 是容错 LUN,可通过将数据复制到多个 LUN 丛中来提供灾难恢复。 镜像 LUN 中的每个 plex 都包含存储在原始 plex 上的数据的一个副本。 每个丛驻留在单独的驱动器上。 写入镜像 LUN 的所有数据都会同时写入其每个 plex。 如果其中一个提供驱动器发生故障,该驱动器上的 plex 将不可用,但系统继续使用不受影响的 plex 或 plexes 运行。 镜像 LUN 可以具有任意数量的丛。
- 使用奇偶校验 LUN 进行条带化是容错 LUN,通过跨三个或更多驱动器间歇性地条带奇偶校验数据来提供灾难恢复。 如果其中一个提供驱动器发生故障,则可以从剩余数据和奇偶校验重新创建丢失的数据。
VDS 支持四种模型,应用程序可以通过这些模型创建 LUN:显式定向、部分定向、自动定向和特定于供应商的 LUN。 所有硬件提供程序都必须支持显式和部分定向的 LUN 创建,强烈建议支持自动创建 LUN。 (特定于供应商的 LUN 创建不在本指南的范围内。)
显式定向 LUN 创建使调用方能够指定 LUN 的所有属性。 通过部分定向 LUN 创建,调用方可以仅指定特别感兴趣的属性,然后允许提供程序选择其余属性。 Automagic LUN 创建涉及使调用方只需指定 LUN 类型和大小以及一组“automagic 提示” (预定义的 LUN 属性首选项) ,然后允许提供程序自动创建 LUN。
VDS 支持对提供此功能的子系统进行 LUN 屏蔽。 所有 LUN 都显示到运行提供程序的计算机。 通过 LUN 取消屏蔽,调用方可以将所选 LUN“取消屏蔽”到网络上的其他计算机。 如果取消对计算机的 LUN 的掩码,则计算机有权访问该 LUN。 对 LUN 进行掩码的计算机不会。
未屏蔽的 LUN 向本地主机公开 IVdsLun 和 IVdsDisk 接口。 可以使用 IVdsDisk 将 LUN 添加到软件提供程序包、创建和删除卷、分配驱动器号等。 有关对磁盘执行的操作的详细信息,请参阅 Disk 对象。
将 LUN 取消到目标计算机或从目标计算机屏蔽后,在该计算机上的 LUN 可见性可能不会更改,直到执行总线重新扫描。 目标计算机上的 VDS 应用程序通过调用 IVdsService::Reenumerate 启动总线重新扫描。 启动总线重新扫描由 VDS 应用程序负责,而不是硬件提供商。
支持多路径 I/O (MPIO) 的硬件提供程序可以在 LUN 和本地主机之间的路径上设置负载均衡策略。 支持此功能的 LUN 向本地主机公开 IVdsLunMpio 接口。
使用 IVdsSubSystem::CreateLun 方法创建新的 LUN 对象。 可以通过调用也由 IVdsSubSystem 公开的 QueryLuns 方法来查询特定子系统显示的 LUN。 调用方可以通过从 QueryLuns 返回的枚举中选择所需的 LUN 对象来获取指向特定 LUN 的指针。 使用 LUN 对象,可以设置 LUN 状态;查询所有活动控制器、丛和自动提示;扩展和收缩 LUN;添加和删除 plexes;设置掩码;应用提示;并删除 LUN。
除了对象标识符、名称和序列号之外,LUN 对象属性还包括 LUN 类型、大小、状态、运行状况、转换状态和标志;取消掩码列表;和重新生成优先级设置。
下表列出了相关的接口、枚举和结构。
类型 | 元素 |
---|---|
始终由此对象公开的接口 | IVdsLun |
始终由此对象在 VDS 1.1 和 2.0 光纤通道提供程序中公开的接口 | IVdsLunControllerPorts |
始终由此对象在 VDS 1.1 和 2.0 iSCSI 提供程序中公开的接口 | IVdsLunIscsi |
此对象可能公开的接口* |
IVdsMaintenance、 IVdsLunMpio、 IVdsLunNaming 和 IVdsLunNumberWindows Server 2008、Windows Vista 和 Windows Server 2003: 不支持 IVdsLunNumber 接口。 |
关联的枚举 | VDS_LUN_FLAG 、 VDS_LUN_STATUS和 VDS_LUN_TYPE |
关联的结构 | VDS_LUN_INFORMATION、 VDS_LUN_PROP和 VDS_LUN_NOTIFICATION |