启用共享磁盘

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

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

如果你正在查找有关已启用共享磁盘的托管磁盘的概念信息,请参阅 Azure 共享磁盘

先决条件

本文中的脚本和命令需要以下任一项:

  • Azure PowerShell 模块 6.0.0 或更高版本。

  • 最新版本的 Azure CLI。

限制

一般限制

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

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

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

超级磁盘

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

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

高级 SSD v2

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

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

高级 SSD

标准 SSD

支持的操作系统

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

磁盘大小

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

部署共享磁盘

将高级 SSD 部署为共享磁盘

若要部署启用了共享磁盘功能的托管磁盘,请使用新属性 maxShares 并定义大于 1 的值。 这会使该磁盘可在多个 VM 之间共享。

重要

共享磁盘不支持主机缓存。

仅当从所有 VM 中卸载了某个磁盘时,才能设置或更改 maxShares 的值。 有关 maxShares 的允许值,请参阅磁盘大小

  1. 登录到 Azure 门户。

  2. 搜索并选择“磁盘”。

  3. 选择“+ 创建”以创建新的托管磁盘。

  4. 填写详细信息并选择相应的区域,然后选择“更改大小”。

    “创建托管磁盘”窗格的屏幕截图,其中“更改大小”已突出显示。

  5. 选择所需的高级 SSD 大小和 SKU,然后选择“确定”。

    磁盘 SKU 的屏幕截图,其中已突出显示高级 LRS 和 ZRS SSD SKU。

  6. 继续部署,直到转到“高级”窗格。

  7. 对于“启用共享磁盘”,请选择“是”,然后选择所需的“最大共享”的量。

    “高级”窗格的屏幕截图,其中“启用共享磁盘”已突出显示并设置为“是”。

  8. 选择“查看 + 创建” 。

将标准 SSD 部署为共享磁盘

若要部署启用了共享磁盘功能的托管磁盘,请使用新属性 maxShares 并定义大于 1 的值。 这会使该磁盘可在多个 VM 之间共享。

重要

共享磁盘不支持主机缓存。

仅当从所有 VM 中卸载了某个磁盘时,才能设置或更改 maxShares 的值。 有关 maxShares 的允许值,请参阅磁盘大小

  1. 登录到 Azure 门户。

  2. 搜索并选择“磁盘”。

  3. 选择“+ 创建”以创建新的托管磁盘。

  4. 填写详细信息并选择相应的区域,然后选择“更改大小”。

    “创建托管磁盘”窗格的屏幕截图,其中“更改大小”已突出显示。

  5. 选择所需的标准 SSD 大小和 SKU,然后选择“确定”。

    磁盘 SKU 的屏幕截图,其中已突出显示标准 SSD LRS 和 ZRS SKU。

  6. 继续部署,直到转到“高级”窗格。

  7. 对于“启用共享磁盘”,请选择“是”,然后选择所需的“最大共享”的量。

    “高级”窗格的屏幕截图,其中“启用共享磁盘”已突出显示并设置为“是”。

  8. 选择“查看 + 创建” 。

将超级磁盘部署为共享磁盘

若要部署启用了共享磁盘功能的托管磁盘,请将 maxShares 参数更改为大于 1 的值。 这会使该磁盘可在多个 VM 之间共享。

重要

仅当从所有 VM 中卸载了某个磁盘时,才能设置或更改 maxShares 的值。 有关 maxShares 的允许值,请参阅磁盘大小

  1. 登录到 Azure 门户。

  2. 搜索并选择“磁盘”。

  3. 选择“+ 创建”以创建新的托管磁盘。

  4. 填写详细信息,然后选择“更改大小”。

  5. 对于“磁盘 SKU”,请选择“超级磁盘”。

    磁盘 SKU 的屏幕截图,其中“超级磁盘”已突出显示。

  6. 选择所需的磁盘大小,然后选择“确定”。

  7. 继续部署,直到转到“高级”窗格。

  8. 对于“启用共享磁盘”,请选择“是”,然后选择所需的“最大共享”的量。

  9. 选择“查看 + 创建” 。

    “高级”窗格的屏幕截图,其中“启用共享磁盘”已突出显示。

共享现有磁盘

若要共享现有磁盘或更新它可以装载到的 VM 数量,请将 maxShares 参数设置为 Azure PowerShell 模块或 Azure CLI。 如果要禁用共享,也可以将 maxShares 设置为 1。

重要

共享磁盘不支持主机缓存。

仅当从所有 VM 中卸载了某个磁盘时,才能设置或更改 maxShares 的值。 有关 maxShares 的允许值,请参阅磁盘大小。 在分离磁盘之前,请先记下重新附加它时要使用的 LUN ID。

PowerShell

$datadiskconfig = Get-AzDisk -DiskName "mySharedDisk"
$datadiskconfig.maxShares = 3

Update-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $datadiskconfig

CLI

#Modifying a disk to enable or modify sharing configuration

az disk update --name mySharedDisk --max-shares 5 --resource-group myResourceGroup

将 Azure 共享磁盘与 VM 配合使用

使用 maxShares>1 部署共享磁盘后,可以将该磁盘装载到一个或多个 VM。

注意

共享磁盘不支持主机缓存。

如果要部署超级磁盘,请确保它符合必要的要求。 有关详细信息,请参阅使用 Azure 超级磁盘


$resourceGroup = "myResourceGroup"
$location = "chinanorth"

$vm = New-AzVm -ResourceGroupName $resourceGroup -Name "myVM" -Location $location -VirtualNetworkName "myVnet" -SubnetName "mySubnet" -SecurityGroupName "myNetworkSecurityGroup" -PublicIpAddressName "myPublicIpAddress"

$dataDisk = Get-AzDisk -ResourceGroupName $resourceGroup -DiskName "mySharedDisk"

$vm = Add-AzVMDataDisk -VM $vm -Name "mySharedDisk" -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0

update-AzVm -VM $vm -ResourceGroupName $resourceGroup

支持的 SCSI PR 命令

将共享磁盘装载到群集中的 VM 后,可以使用 SCSI PR 建立仲裁以及在磁盘中进行读取/写入操作。 使用 Azure 共享磁盘时,可以使用以下 PR 命令:

若要与磁盘进行交互,请从 persistent-reservation-action 列表开始:

PR_REGISTER_KEY 

PR_REGISTER_AND_IGNORE 

PR_GET_CONFIGURATION 

PR_RESERVE 

PR_PREEMPT_RESERVATION 

PR_CLEAR_RESERVATION 

PR_RELEASE_RESERVATION 

使用 PR_RESERVE、PR_PREEMPT_RESERVATION 或 PR_RELEASE_RESERVATION 时,请提供下列 persistent-reservation-type 之一:

PR_NONE 

PR_WRITE_EXCLUSIVE 

PR_EXCLUSIVE_ACCESS 

PR_WRITE_EXCLUSIVE_REGISTRANTS_ONLY 

PR_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY 

PR_WRITE_EXCLUSIVE_ALL_REGISTRANTS 

PR_EXCLUSIVE_ACCESS_ALL_REGISTRANTS 

使用 PR_RESERVE、PR_REGISTER_AND_IGNORE、PR_REGISTER_KEY、PR_PREEMPT_RESERVATION、PR_CLEAR_RESERVATION 或 PR_RELEASE-RESERVATION 时,还需要提供 persistent-reservation-key。

后续步骤

如果希望使用 Azure 资源管理器模板来部署磁盘,可使用以下示例模板: