共用方式為

启用共享磁盘

适用于:✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 灵活规模集 ✔️ 统一规模集

本文介绍如何为Azure托管磁盘启用共享磁盘功能。 使用 Azure 共享磁盘,可以将托管磁盘同时附加到多个虚拟机(VM),从而能够将群集应用程序部署或迁移到 Azure。

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

先决条件

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

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

  • Azure CLI的最新版本。

限制

一般限制

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

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

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

Ultra Disks

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

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

高级 SSD v2

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

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

高级 SSD

  • 仅可对数据磁盘启用,不可对 OS 磁盘启用。
  • 主机缓存不适用于高级 SSD。maxShares>1
  • 磁盘突发不适用于带有maxShares>1的高级 SSD。
  • 在使用 Azure 共享磁盘的可用性集或虚拟机规模集时,不会对共享数据磁盘强制实施存储故障域与虚拟机故障域对齐。
  • 使用 邻近放置组 (PPG) 时,共享一个磁盘的所有虚拟机都必须属于同一个 PPG。
  • 只有基本磁盘可用于某些版本的 Windows Server 故障转移群集,有关详细信息,请参阅 Failover 群集硬件要求和存储选项
  • Azure Site Recovery 在某些场景中受到支持。
  • Azure Backup可通过 Azure 磁盘备份获取。
  • 仅支持服务器端加密,不支持Azure Disk Encryption
  • 如果使用托管磁盘的区域冗余存储,则只能跨可用性区域共享。

标准 SSD

  • 仅可对数据磁盘启用,不可对 OS 磁盘启用。
  • 主机缓存不适用于标准 SSD。maxShares>1
  • 将可用性集和虚拟机规模集与Azure共享磁盘一起使用时,共享数据磁盘的故障域与虚拟机故障域的对齐不会被强制实施。
  • 使用 邻近放置组 (PPG) 时,共享一个磁盘的所有虚拟机都必须属于同一个 PPG。
  • 只有基本磁盘可用于某些版本的 Windows Server 故障转移群集,有关详细信息,请参阅 Failover 群集硬件要求和存储选项
  • Azure Site Recovery 在某些场景中受到支持。
  • Azure Backup可通过 Azure 磁盘备份获取。
  • 仅支持服务器端加密,不支持Azure Disk Encryption
  • 如果使用托管磁盘的区域冗余存储,则只能跨可用性区域共享。

支持的操作系统

共享磁盘支持多个操作系统。 请参阅受支持操作系统的概念文章的 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。 Ultra Disks 没有大小限制,任何大小的 Ultra Disk 都可以使用任何值maxShares,并且可以达到甚至包括最大值。

高级 SSD v2 系列

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

部署共享磁盘

将高级 SSD 部署为共享磁盘

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

重要

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

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

  1. 登录到Azure门户。

  2. 搜索并选择磁盘

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

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

    Azure门户的 Screenshot 显示“创建托管磁盘”窗格,其中突出显示了更改大小选项。

  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。

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

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

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

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

将Ultra Disk部署为共享磁盘

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

重要

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

  1. 登录到Azure门户。

  2. 搜索并选择磁盘

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

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

  5. 请为 磁盘 SKU 选择“超级磁盘”。

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

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

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

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

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

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

共享现有磁盘

若要共享现有磁盘或更新可以装载到的 VM 数,请使用Azure PowerShell模块或Azure CLI设置 maxShares 参数。 如果要禁用共享,也可以将 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 时,还需要提供持久保留密钥。

后续步骤

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