共享 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 超级磁盘。
共享超级磁盘时,它们有以下附加限制:
- 只可对 Windows Server 故障转移群集的某些版本使用基本磁盘;有关详细信息,请参阅故障转移群集硬盘要求和存储选项。
- 不能跨可用性区域共享。
高级 SSD v2
高级 SSD v2 托管磁盘有自己单独的与共享磁盘无关的限制列表。 有关这些限制,请参阅高级 SSD v2 限制。
共享高级 SSD v2 磁盘时,它们有以下附加限制:
- 只可对 Windows Server 故障转移群集的某些版本使用基本磁盘;有关详细信息,请参阅故障转移群集硬盘要求和存储选项。
- 不能跨可用性区域共享。
高级 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 磁盘加密。
- 如果使用托管磁盘的区域冗余存储,则只能跨可用性区域共享。
操作系统要求
共享磁盘支持多个操作系统。 有关支持的操作系统,请参阅 Windows 或 Linux 部分。
计费影响
共享磁盘时,计费可能会根据磁盘类型受到两种不同的影响。
对于共享的高级 SSD 磁盘,除了磁盘层的成本外,还有一项额外费用,SSD 每装载一个 VM,该费用随之增加。 有关详细信息,请参阅托管磁盘定价。
超级磁盘对于装载的每个 VM 不收取额外的费用。 将按为磁盘配置的总 IOPS 和 MB/s 计费。 通常,一个超级磁盘有两个性能限制,它们决定了磁盘的总 IOPS/MB/s。 但是,当配置为共享超级磁盘时,会公开另外两个性能限制(总共四个)。 这两个额外的限制允许通过额外付费来提高性能,并且每个计量都有一个默认值,这可提高磁盘的性能和成本。
共享超级磁盘的四个性能限制是 diskIOPSReadWrite、diskMB/sReadWrite、diskIOPSReadOnly 和 diskMB/sReadOnly。 可以将每个性能限制配置为更改磁盘的性能。 共享超级磁盘的性能按以下方式计算:总预配 IOPS (diskIOPSReadWrite + diskIOPSReadOnly) 和总预配吞吐量 MB/s (diskMB/sReadWrite + diskMB/sReadOnly)。
确定总预配 IOPS 和总预配吞吐量后,可以在定价计算器中使用它们来确定超级共享磁盘的成本。
磁盘大小
目前只有超级磁盘、高级 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_scsi 和 sg_persist 之类的实用工具来处理预留和注册。
永久预留流
下图演示了一个示例 2 节点群集数据库应用程序,该应用程序使用 SCSI PR 启用从一个节点到另一个节点的故障转移。
流程如下所示:
- 在 Azure VM1 和 VM2 上运行的群集应用程序均注册了其读取或写入磁盘的意图。
- 然后,VM1 上的应用程序实例将使用独占预留以写入磁盘。
- 已在 Azure 磁盘上强制执行此预留,并且数据库现在可以独占方式写入磁盘。 从 VM2 上的应用程序实例进行的任何写入都不会成功。
- 如果 VM1 上的应用程序实例关闭,则 VM2 上的实例现在可以启动数据库故障转移和磁盘接管。
- 现在,已在 Azure 磁盘上强制执行此预留,并且该磁盘将不再接受来自 VM1 的写入。 它将只接受来自 VM2 的写入。
- 群集应用程序可以完成数据库故障转移并处理来自 VM2 的请求。
下图说明了另一个常见的群集工作负载,该工作负载由多个节点组成,这些节点从磁盘读取数据以运行并行进程,例如机器学习模型训练。
流程如下所示:
- 所有 VM 上运行的群集应用程序均注册了其读取或写入磁盘的意图。
- 然后,VM1 上的应用程序实例将使用独占预留以写入磁盘,同时开放其他 VM 的磁盘读取。
- 将在 Azure 磁盘上强制执行此预留。
- 群集中的所有节点现在都可以从磁盘中读取。 只有一个节点代表群集中的所有节点将结果写回磁盘。
超级磁盘和高级 SSD v2 预留流
超级磁盘和高级 SSD v2 托管磁盘都提供两个额外的工作负荷调控器,每个磁盘总共有四个工作负荷调控器。 因此,此预留流可以按前面部分所述工作,也可以更精细地限制和分配性能。
性能限制
高级 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。
- 对于 100 GiB 及更小的磁盘,基线最低 IOPS 为 100。
- 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
限制。
无群集共享卷的双节点群集
以下是未使用群集共享卷的 2 节点 WSFC 的示例。 使用此配置时,只有一个 VM 对磁盘具有写入访问权限。 这会导致 ReadWrite
限制专用于主 VM,ReadOnly
限制专用于辅助 VM。
四节点 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。
后续步骤
如果你有兴趣为托管磁盘启用和使用共享磁盘,请参阅我们的文章:启用共享磁盘
如果有其他问题,请参阅常见问题解答的共享磁盘部分。