共享 Azure 托管磁盘

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

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

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

工作原理

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

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

限制

一般限制

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

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

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

超级磁盘

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

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

高级 SSD v2

高级 SSD v2 托管磁盘有自己单独的与共享磁盘无关的限制列表。 有关这些限制,请参阅高级 SSD v2 限制

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

高级 SSD

标准 SSD

操作系统要求

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

计费影响

共享磁盘时,计费可能会根据磁盘类型受到两种不同的影响。

对于共享的高级 SSD 磁盘,除了磁盘层的成本外,还有一项额外费用,SSD 每装载一个 VM,该费用随之增加。 有关详细信息,请参阅托管磁盘定价

无论是共享超级磁盘还是共享高级 SSD v2 磁盘,都不会对它们所装载的每个虚拟机收取额外费用。 将按为磁盘配置的总 IOPS 和 MB/s 计费。 通常,超级磁盘和高级 SSD v2 具有两个性能限制,它们决定了磁盘的总 IOPS/MB/s。 但当配置为共享磁盘时,会公开另外两个性能限制(总共四个)。 这两个额外的限制允许通过额外付费来提高性能,并且每个计量都有一个默认值,这可提高磁盘的性能和成本。

共享超级磁盘和共享高级 SSD v2 磁盘的四个性能限制是 diskIOPSReadWrite、diskMB/sReadWrite、diskIOPSReadOnly 和 diskMB/sReadOnly。 可以将每个性能限制配置为更改磁盘的性能。 共享超级磁盘高级 SSD v2 磁盘的性能按以下方式计算:总预配 IOPS (diskIOPSReadWrite + diskIOPSReadOnly) 和总预配吞吐量 MB/s (diskMB/sReadWrite + diskMB/sReadOnly)。

确定总预配 IOPS 和总预配吞吐量后,可以在定价计算器中使用它们来确定超级共享磁盘和高级 SSD v2 共享磁盘的成本。

磁盘大小

目前只有超级磁盘、高级 SSD v2、高级 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 的任何值,上限为最大值(包括最大值)。

高级 SSD v2 范围

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

示例工作负载

Windows

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

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

Linux

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

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

永久预留流

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

由 Azure VM1、VM2 和它们之间共享的磁盘组成的双节点群集。由群集上运行的某个应用程序处理对磁盘的访问。

流程如下所示:

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

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

四节点 VM 群集,每个节点注册写入意图,应用程序进行独占预留以正确处理写入结果

流程如下所示:

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

超级磁盘和高级 SSD v2 预留流

超级磁盘和高级 SSD v2 托管磁盘都提供两个额外的工作负荷调控器,每个磁盘总共有四个工作负荷调控器。 因此,此预留流可以按前面部分所述工作,也可以更精细地限制和分配性能。

描述预留持有者、注册者和其他人的 `ReadOnly` 或 `Read/Write` 访问权限的表的图像。

性能限制

高级 SSD 性能限制

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

超级磁盘和高级 SSD v2 性能工作负荷调控器

超级磁盘和高级 SSD v2 都具有独特的功能,允许你通过公开可修改的属性来设置性能,并允许你修改它们。 默认情况下,只有两个可修改的属性,但共享超级磁盘和共享高级 SSD v2 托管磁盘还有另外两个属性。 超级磁盘和高级 SSD v2 在每个附加的 VM 中拆分这些属性。 有关容量、IOPS 和吞吐量分布的工作原理的一些示例,请参阅示例部分。

Attribute 说明
DiskIOPSReadWrite(读/写磁盘 IOPS) 所有装载具有写入访问权限的共享磁盘的 VM 所允许的 IOPS 总数。
DiskMB/sReadWrite(读/写磁盘吞吐量) 所有装载具有写入访问权限的共享磁盘的 VM 所允许的总吞吐量 (MB/s)。
DiskIOPSReadOnly*(只读磁盘 IOPS) 所有以 ReadOnly 方式装载共享磁盘的 VM 所允许的 IOPS 总数。
DiskMB/sReadOnly*(只读磁盘吞吐量) 所有以 ReadOnly 方式装载共享磁盘的 VM 所允许的总吞吐量 (MB/s)。

* 仅适用于共享超级磁盘和共享高级 SSD v2 托管磁盘

以下公式说明了如何设置性能属性,因为这些属性是用户可修改的:

  • DiskIOPSReadWrite(读/写磁盘 IOPS):
    • 对于 100 GiB 及更小的磁盘,基线最低 IOPS 为 100。
      • 对于大于 100 GiB 的磁盘,可以设置的基线最低 IOPS 每 GiB 增加 1。 因此,可以为 101 GiB 磁盘设置的最低 DiskIOPSReadWrite 为 101 IOPS。
    • 可以为此属性设置的最大值由磁盘大小决定,公式为 300 * GiB,最大不超过 400,000。
  • DiskMB/sReadWrite(读/写磁盘吞吐量)
    • 此属性的最小吞吐量 (MB/s) 由 IOPS 决定,公式为 4 KiB/s/IOPS。 因此,如果 IOPS 为 101,则可以设置的最小值为 1 MB/s。
    • 可以为此属性设置的最大值由设置的 IOPS 量决定,公式为 256 KiB/秒/IOPS,最大不超过 10,000 MB/秒。
  • DiskIOPSReadOnly(只读磁盘 IOPS)
    • 此属性的最小基线 IOPS 为 100。 对于 DiskIOPSReadOnly,该基线不会因磁盘大小而增加。
    • 可以为此属性设置的最大值由磁盘大小决定,公式为 300 * GiB,最大不超过 400,000。
  • DiskMB/sReadOnly(只读磁盘吞吐量)
    • 此属性的最小吞吐量(MB/秒)为 1。 对于 DiskMB/sReadOnly,该基线不会随 IOPS 增大。
    • 可以为此属性设置的最大值由设置的 IOPS 量决定,公式为 256 KiB/秒/IOPS,最大不超过 10,000 MB/秒。

示例

以下示例描述了一些方案,这些方案具体说明了限制如何作用于共享超级磁盘。

使用群集共享卷的双节点群集

以下是使用群集共享卷的 2 节点 WSFC 的示例。 使用此配置,两个 VM 都可以同时对磁盘进行写入访问,这将导致 ReadWrite 限制将由两个 VM 共享,且不使用 ReadOnly 限制。

CSV 双节点超级性能示例

无群集共享卷的双节点群集

以下是未使用群集共享卷的 2 节点 WSFC 的示例。 使用此配置时,只有一个 VM 对磁盘具有写入访问权限。 这会导致 ReadWrite 限制专用于主 VM,ReadOnly 限制专用于辅助 VM。

CSV 双节点无 csv 超级磁盘示例

四节点 Linux 群集

下面是具有一个编写器和三个横向扩展读取器的 4 节点 Linux 群集的示例。 使用此配置时,只有一个 VM 对磁盘具有写入访问权限。 这会导致将 ReadWrite 限制专用于主 VM,而 ReadOnly 限制则由辅助 VM 共享。

四节点超级限制示例

共享超级磁盘和高级 SSD v2 定价

共享超级磁盘和高级 SSD v2 托管磁盘的定价依据均为:预配的容量、总预配 IOPS (diskIOPSReadWrite + diskIOPSReadOnly) 和总预配吞吐量 MB/s (diskMB/sReadWrite + diskMB/sReadOnly)。 每次额外的 VM 装载均不收取额外费用。 例如,配置为 diskSizeGB:1024、DiskIOPSReadWrite:10000、DiskMB/sReadWrite:600、DiskIOPSReadOnly:100、DiskMB/sReadOnly:1 的共享超级磁盘按 1024 GiB、10100 IOPS 和 601 MB/s 进行收费,而不管它是装载到 2 个 VM 还是 5 个 VM。

后续步骤

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

如果有其他问题,请参阅常见问题解答的共享磁盘部分。