启用共享磁盘
适用于:✔️ 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 超级磁盘。
共享超级磁盘时,它们有以下附加限制:
- 只可对 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 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 之间共享。
将标准 SSD 部署为共享磁盘
若要部署启用了共享磁盘功能的托管磁盘,请使用新属性 maxShares
并定义大于 1 的值。 这会使该磁盘可在多个 VM 之间共享。
将超级磁盘部署为共享磁盘
若要部署启用了共享磁盘功能的托管磁盘,请将 maxShares
参数更改为大于 1 的值。 这会使该磁盘可在多个 VM 之间共享。
重要
仅当从所有 VM 中卸载了某个磁盘时,才能设置或更改 maxShares
的值。 有关 maxShares
的允许值,请参阅磁盘大小。
共享现有磁盘
若要共享现有磁盘或更新它可以装载到的 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。
$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 资源管理器模板来部署磁盘,可使用以下示例模板: