共享 Azure 托管磁盘

Azure 共享磁盘是 Azure 托管磁盘的一项新功能,可同时将托管磁盘附加到多个虚拟机 (VM)。 通过将托管磁盘附加到多个 VM,可以向 Azure 部署新的群集应用程序或迁移现有的群集应用程序。

工作原理

群集中的 VM 可以根据群集应用程序使用 SCSI 永久预留 (SCSI PR) 选择的预留来读取或写入其附加的磁盘。 SCSI PR 是一种行业标准,可供本地存储区域网络 (SAN) 上运行的应用程序利用。 在托管磁盘上启用 SCSI PR,可以将这些应用程序按原样迁移到 Azure。

共享托管磁盘提供了可以从多个 VM 进行访问的共享块存储,这些存储作为逻辑单元号 (LUN) 公开。 然后,会将 LUN 从目标(磁盘)提供给发起程序 (VM)。 这些 LUN 看起来像直接附加存储 (DAS) 或 VM 的本地驱动器。

共享托管磁盘本身并不提供可以使用 SMB/NFS 访问的完全托管的文件系统。 需要使用群集管理器(如 Windows Server 故障转移群集 (WSFC) 或 Pacemaker)来处理群集节点通信和写入锁定。

限制

一般限制

共享磁盘具有常规限制,适用于任何磁盘类型的所有共享磁盘。 此外,还有额外限制,仅适用于特定类型的共享磁盘。 以下列表是常规限制列表:

  • 目前,只有超级磁盘、高级 SSD 和标准 SSD 可用作共享磁盘
  • 共享磁盘可以附加到单个虚拟机规模集,但不能在虚拟机规模集模型中定义或自动部署
  • 如果不解除分配共享磁盘所附加到的全部 VM,或者不从所有这些 VM 中分离共享磁盘,则无法扩展共享磁盘
  • 共享磁盘不支持写入加速器
  • 共享磁盘不支持主机缓存

已启用共享磁盘的每个托管磁盘还受到以下限制(按磁盘类型组织):

超级磁盘

超级磁盘有自己单独的与共享磁盘无关的限制列表。 有关超级磁盘限制,请参阅使用 Azure 超级磁盘

共享超级磁盘时,它们有以下附加限制:

高级 SSD

  • 仅可对数据磁盘启用,不可对 OS 磁盘启用。
  • 主机缓存不适用于采用 maxShares>1 的高级 SSD 磁盘。
  • 磁盘突发不适用于采用 maxShares>1 的高级 SSD 磁盘。
  • 通过 Azure 共享磁盘使用可用性集或虚拟机规模集时,不会对共享数据磁盘强制实施与虚拟机容错域的存储容错域对齐
  • 使用 邻近放置组 (PPG) 时,共享一个磁盘的所有虚拟机都必须属于同一个 PPG。
  • 只可对 Windows Server 故障转移群集的某些版本使用基本磁盘;有关详细信息,请参阅故障转移群集硬盘要求和存储选项
  • Azure Site Recovery 支持尚不可用。
  • Azure 备份通过 Azure 磁盘备份提供。
  • 仅支持服务器端加密,目前不支持 Azure 磁盘加密

标准 SSD

  • 仅可对数据磁盘启用,不可对 OS 磁盘启用。
  • 主机缓存不适用于采用 maxShares>1 的标准 SSD。
  • 通过 Azure 共享磁盘将可用性集与虚拟机规模集一起使用时,不会对共享数据磁盘强制实施与虚拟机容错域的存储容错域对齐
  • 使用 邻近放置组 (PPG) 时,共享一个磁盘的所有虚拟机都必须属于同一个 PPG。
  • 只可对 Windows Server 故障转移群集的某些版本使用基本磁盘;有关详细信息,请参阅故障转移群集硬盘要求和存储选项
  • Azure Site Recovery 支持尚不可用。
  • Azure 备份通过 Azure 磁盘备份提供。
  • 仅支持服务器端加密,目前不支持 Azure 磁盘加密

操作系统要求

共享磁盘支持多个操作系统。 有关支持的操作系统,请参阅 WindowsLinux 部分。

磁盘大小

目前,只有超级磁盘、高级 SSD 和标准 SSD 可启用共享磁盘。 不同的磁盘大小可能具有不同的 maxShares 限制,设置 maxShares 值时不能超过此限制。

对于每个磁盘,你可以定义一个 maxShares 值,该值表示可同时共享该磁盘的最大节点数。 例如,如果计划设置节点数为 2 的故障转移群集,可以设置 maxShares=2。 最大值是一个上限。 只要节点数低于指定 maxShares 值,节点就可以加入或退出群集(装载或卸载磁盘)。

注意

仅当磁盘与所有节点分离时,才能设置或编辑 maxShares 值。

高级 SSD 范围

下表说明了按高级 SSD 大小得出的 maxShares 的最大允许值:

磁盘大小 maxShares 限制
P1、P2、P3、P4、P6、P10、P15、P20 3
P30、P40、P50 5
P60、P70、P80 10

磁盘的 IOPS 和带宽限制不受 maxShares 值的影响。 例如,无论 maxShares = 1 还是 maxShares > 1,P15 磁盘的 IOPS 上限都为 1100。

标准 SSD 范围

下表说明了按标准 SSD 大小得出的 maxShares 的最大允许值:

磁盘大小 maxShares 限制
E1、E2、E3、E4、E6、E10、E15、E20 3
E30、E40、E50 5
E60、E70、E80 10

磁盘的 IOPS 和带宽限制不受 maxShares 值的影响。 例如,无论 maxShares = 1 还是 maxShares > 1,E15 磁盘的 IOPS 上限都为 500。

超级磁盘范围

maxShares 最小值为 1,maxShares 最大值为 15。 超级磁盘没有大小限制,任何大小的超级磁盘都可以使用 maxShares 的任何值,上限为最大值(包括最大值)。

示例工作负载

Windows

Windows Server 2008 和更高版本支持 Azure 共享磁盘。 大多数基于 Windows 的群集基于 WSFC 进行构建,它处理群集节点通信的所有核心基础结构,使应用程序能够利用并行访问模式。 WSFC 根据 Windows Server 的版本启用 CSV 和非 CSV 的选项。 有关详细信息,请参阅创建故障转移群集

WSFC 上运行的热门应用程序包括:

Linux

支持 Azure 共享磁盘的版本包括:

Linux 群集可以利用群集管理器,例如 Pacemaker。 Pacemaker 基于 Corosync 构建,可为部署在高可用环境中的应用程序启用群集通信。 一些常见的群集文件系统包括 ocfs2gfs2。 可以使用基于 SCSI 永久预留 (SCSI PR) 和/或 STONITH 块设备 (SBD) 的聚类分析模型,以便仲裁对磁盘的访问。 使用 SCSI PR 时,可以使用 fence_scsi 和 sg_persist 之类的实用工具来处理预留和注册。

永久预留流

下图演示了一个示例 2 节点群集数据库应用程序,该应用程序利用 SCSI PR 启用从一个节点到另一个节点的故障转移。

Two node cluster. An application running on the cluster is handling access to the disk

流程如下所示:

  1. 在 Azure VM1 和 VM2 上运行的群集应用程序均注册了其读取或写入磁盘的意图。
  2. 然后,VM1 上的应用程序实例将使用独占预留以写入磁盘。
  3. 已在 Azure 磁盘上强制执行此预留,并且数据库现在可以独占方式写入磁盘。 从 VM2 上的应用程序实例进行的任何写入都不会成功。
  4. 如果 VM1 上的应用程序实例关闭,则 VM2 上的实例现在可以启动数据库故障转移和磁盘接管。
  5. 现在,已在 Azure 磁盘上强制执行此预留,并且该磁盘将不再接受来自 VM1 的写入。 它将只接受来自 VM2 的写入。
  6. 群集应用程序可以完成数据库故障转移并处理来自 VM2 的请求。

下图说明了另一个常见的群集工作负载,该工作负载由多个节点组成,这些节点从磁盘读取数据以运行并行进程,例如机器学习模型训练。

Four node VM cluster, each node registers intent to write, application takes exclusive reservation to properly handle write results

流程如下所示:

  1. 所有 VM 上运行的群集应用程序均注册了其读取或写入磁盘的意图。
  2. 然后,VM1 上的应用程序实例将使用独占预留以写入磁盘,同时开放其他 VM 的磁盘读取。
  3. 将在 Azure 磁盘上强制执行此预留。
  4. 群集中的所有节点现在都可以从磁盘中读取。 只有一个节点代表群集中的所有节点将结果写回磁盘。

性能限制

高级 SSD 性能限制

对于高级 SSD,磁盘 IOPS 和吞吐量是固定的,例如,P30 的 IOPS 为 5000。 无论磁盘是在 2 个 VM 还是 5 个 VM 之间共享,此值都保持不变。 磁盘限制可以通过单个 VM 达到,也可以在两个或多个 VM 中进行划分。

后续步骤

如果你有兴趣为托管磁盘启用和使用共享磁盘,请参阅我们的文章:启用共享磁盘