共享 Azure 托管磁盘

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

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 可启用共享磁盘。 共享磁盘可以附加到单个 VMSS 实例,但不能在 VMSS 模型中定义或自动部署。

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

超级磁盘

超级磁盘有自己单独的与共享磁盘无关的限制列表。

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

高级 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 每装载一个 VM,该费用随之增加。 有关详细信息,请参阅托管磁盘定价

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

共享超级磁盘的四个性能限制是 diskMBpsReadWrite、diskIOPSReadOnly、diskMBpsReadWrite 和 diskMBpsReadOnly。 可以将每个性能限制配置为更改磁盘的性能。 共享超级磁盘的性能按以下方式计算:总预配 IOPS (diskIOPSReadWrite + diskIOPSReadOnly) 和总预配吞吐量 MBps (diskMBpsReadWrite + diskMBpsReadOnly)。

磁盘大小

目前,只有超级磁盘、高级 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 构建,可为部署在高可用环境中的应用程序启用群集通信。 一些常见的群集文件系统包括 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. 群集中的所有节点现在都可以从磁盘中读取。 只有一个节点代表群集中的所有节点将结果写回磁盘。

超级磁盘预留流

超级磁盘提供两个额外的限制(总共有四个限制)。 因此,超级磁盘预留流可以按前面部分所述工作,也可以更精细地限制和分配性能。

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

性能限制

高级 SSD 性能限制

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

超级磁盘性能限制

超级磁盘具有独特的功能,允许你通过公开可修改的属性并允许对其进行修改来设置性能。 默认情况下,只有两个可修改的属性,但共享的超级磁盘具有两个额外属性。

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

* 仅适用于共享超级磁盘

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

  • DiskIOPSReadWrite/DiskIOPSReadOnly:
    • 300 IOPS/GiB 的 IOPS 限制,每个磁盘最高可达 160 K IOPS
    • 最小值为 100 IOPS
    • DiskIOPSReadWrite + DiskIOPSReadOnly 至少为 2 IOPS/GiB
  • DiskMBpsRead Write/DiskMBpsReadOnly:
    • 单个磁盘对应于每个预配 IOPS 的吞吐量限制为 256 KiB/秒,每个磁盘的最大吞吐量为 2000 MBps。
    • 对于每个预配的 IOPS,每个磁盘的最低保证吞吐量为 4KiB/s,总体基线最低为 1 MBps

示例

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

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

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

CSV 双节点超级性能示例

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

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

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

四节点 Linux 群集

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

四节点超级限制示例

超级共享磁盘定价

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

后续步骤

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