適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集
本文說明如何啟用 Azure 管理磁碟的共用磁碟功能。 透過 Azure 共享磁碟,你可以同時將一個管理磁碟連接到多個虛擬機(VM),從而部署或遷移叢集應用程式到 Azure。
如果你想了解啟用共享磁碟的管理磁碟概念,請參考 Azure 共享磁碟。
必要條件
本文中的指令碼和命令需要:
- 6.0.0 版或更新版本的 Azure PowerShell 模組。
或
限制
一般限制
無論磁碟類型為何,共用磁碟都有適用於全部共用磁碟的一般限制。 也有僅適用於特定共用磁碟類型的其他限制。 下列清單是一般限制的清單:
- 目前,只能使用 Ultra 磁碟、進階 SSD v2、進階 SSD 和標準 SSD 作為共用磁碟
- 共用磁碟可以連結至個別虛擬機器擴展集,但無法在虛擬機器擴展集模型中定義或自動部署
- 共用磁碟不支援寫入加速器
- 共用磁碟不支援主機快取
每個已啟用共用磁碟的受控磁碟也會受限於下列限制,以下依磁碟類型分類:
Ultra Disks
超強光碟有其獨立的限制清單,與共享光碟無關。 關於 Ultra Disk 的限制,請參考 Using Azure Ultra Disks。
在共享超光碟時,它們有以下額外限制:
進階 SSD v2
進階 SSD v2 受控磁碟有所屬的個別限制清單,與共用磁碟無關。 若要了解這些限制,請參閱進階 SSD v2 限制。
在共用進階 SSD v2 磁碟時,其具有下列額外限制:
進階 SSD
- 只能在資料磁碟上啟用,無法在 OS 磁碟上啟用。
-
maxShares>1 的 Premium SSD 不提供主機快取。
-
maxShares>1 的 Premium SSD 不提供磁碟高載。
- 在將 Azure 共用磁碟與可用性組合或虛擬機器擴展集一起使用時,與虛擬機器錯誤網域相關的儲存錯誤網域對齊不會強制套用於共用資料磁碟。
- 使用鄰近放置群組 (PPG) 時,所有共用磁碟的虛擬機器都必須是相同 PPG 的一部分。
- 只有基本磁碟可以搭配某些版本的 Windows 伺服器容錯移轉叢集使用。如需詳細資訊,請參閱容錯移轉叢集硬體需求和儲存體選項。
- Azure Site Recovery 在 特定情境下是支援的。
- Azure 備份可透過 Azure 磁碟備份取得。
- 目前僅支援伺服器端加密,Azure 磁碟加密目前尚不支援。
- 僅當針對受控磁碟使用區域備援儲存體時,才能跨可用性區域共用。
標準 SSD
- 只能在資料磁碟上啟用,無法在 OS 磁碟上啟用。
-
maxShares>1 的 Standard SSD 不提供主機快取。
- 在將 Azure 共用磁碟與可用性組合及虛擬機器擴展集一起使用時,與虛擬機器錯誤網域相關的儲存錯誤網域對齊不會強制套用於共用資料磁碟。
- 使用鄰近放置群組 (PPG) 時,所有共用磁碟的虛擬機器都必須是相同 PPG 的一部分。
- 只有基本磁碟可以搭配某些版本的 Windows 伺服器容錯移轉叢集使用。如需詳細資訊,請參閱容錯移轉叢集硬體需求和儲存體選項。
- Azure Site Recovery 在 特定情境下是支援的。
- Azure 備份可透過 Azure 磁碟備份取得。
- 目前僅支援伺服器端加密,Azure 磁碟加密目前尚不支援。
- 僅當針對受控磁碟使用區域備援儲存體時,才能跨可用性區域共用。
受支援的作業系統
共用磁碟支援數個作業系統。 關於支援的作業系統,請參閱概念文章中的 Windows 與 Linux 章節。
磁碟大小
目前僅有超強磁碟、高級 SSD v2、高級 SSD 及標準 SSD 能啟用共用磁碟。 不同的磁碟大小可能會有不同的 maxShares 限制,您在設定 maxShares 時無法超過此值。
針對每個磁碟,您可以定義 maxShares 值,其代表可同時共用磁碟的節點數目上限。 例如,如果您打算設定有 2 個節點的容錯移轉叢集,您會設定 maxShares=2。 最大值是上界。 只要節點數目低於指定的 maxShares 值,節點就可以加入或離開叢集 (掛接或卸載磁碟)。
注意
只有在磁碟從所有節點中斷連結時,才能設定或編輯 maxShares 值。
進階 SSD 範圍
下表說明了 Premium SSD 尺寸允許的最大值為 maxShares:
| 磁碟大小 |
maxShares 限制 |
| P1、P2、P3、P4、P6、P10、P15、P20 |
3 |
| P30、P40、P50 |
5 |
| P60、P70、P80 |
10 |
磁碟的 IOPS 和頻寬限制不會受到 maxShares 值的影響。 例如,P15 磁碟的最大 IOPS 是 1100,不論 maxShares = 1 或 maxShares > 1 都一樣。
標準 SSD 範圍
下表說明了依標準 SSD 尺寸允許的最大 maxShares 值:
| 磁碟大小 |
maxShares 限制 |
| E1、E2、E3、E4、E6、E10、E15、E20 |
3 |
| E30、E40、E50 |
5 |
| E60、E70、E80 |
10 |
磁碟的 IOPS 和頻寬限制不會受到 maxShares 值的影響。 例如,E15 磁碟的最大 IOPS 是 500,不論 maxShares = 1 或 maxShares > 1 都一樣。
Ultra Disk 範圍
maxShares 的最小值為 1,maxShares 的最大值為 15。 超大磁碟沒有大小限制,任何尺寸的超大磁碟都可以使用任何值, maxShares最高可達最大值。
進階 SSD v2 範圍
maxShares 的最小值為 1,maxShares 的最大值為 15。 Premium SSD v2 沒有大小限制,任何尺寸的 Premium SSD v2 都可以使用任何值, maxShares最高可達最大值。
部署一顆高級 SSD 作為共用磁碟
若要部署啟用共享磁碟功能的管理磁碟,請將屬性設定 maxShares 為大於 1。 這個設定讓硬碟可以在多個虛擬機間共享。
重要
共用式磁碟不支援主機快取。
只有在從所有 VM 卸載磁碟後,才能設定或變更 maxShares 的值。 請參閱磁碟大小以查看maxShares的允許值。
登入 Azure 入口網站。
搜尋並選擇 磁碟。
選擇 + 建立 以建立新的受控磁碟。
在 基本 窗格中,選取 區域,然後選取 變更大小。
選擇你想要的高級 SSD 尺寸和 SKU,然後選擇 確定。
繼續進行部署,直到您進入 [進階] 窗格為止。
在啟用 共享磁碟時,選擇 「是」,然後選擇 最大份額數值。
選擇 評論 + 創建。
請使用以下 Azure CLI 指令建立 Premium SSD 作為共享磁碟。
az disk create -g myResourceGroup -n mySharedDisk --size-gb 1024 -l westcentralus --sku Premium_LRS --max-shares 2
請使用以下 Azure PowerShell 指令建立一張 Premium SSD 作為共享磁碟。
$dataDiskConfig = New-AzDiskConfig -Location 'WestCentralUS' -DiskSizeGB 1024 -AccountType Premium_LRS -CreateOption Empty -MaxSharesCount 2
New-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $dataDiskConfig
在使用下列範本之前,請先以您自己的值取代 [parameters('dataDiskName')]、[resourceGroup().location]、[parameters('dataDiskSizeGB')] 和 [parameters('maxShares')]。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataDiskName": {
"type": "string",
"defaultValue": "mySharedDisk"
},
"dataDiskSizeGB": {
"type": "int",
"defaultValue": 1024
},
"maxShares": {
"type": "int",
"defaultValue": 2
}
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"name": "[parameters('dataDiskName')]",
"location": "[resourceGroup().location]",
"apiVersion": "2019-07-01",
"sku": {
"name": "Premium_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": "[parameters('dataDiskSizeGB')]",
"maxShares": "[parameters('maxShares')]"
}
}
]
}
部署標準 SSD 作為共享磁碟
若要部署啟用共享磁碟功能的管理磁碟,請將屬性設定 maxShares 為大於 1。 這個設定讓硬碟可以在多個虛擬機間共享。
重要
共用式磁碟不支援主機快取。
只有在從所有 VM 卸載磁碟後,才能設定或變更 maxShares 的值。 請參閱磁碟大小以查看maxShares的允許值。
登入 Azure 入口網站。
搜尋並選擇 磁碟。
選擇 + 建立 以建立新的受控磁碟。
在 基本 窗格中,選取 區域,然後選取 變更大小。
選擇你想要的標準 SSD 尺寸和 SKU,然後選擇 確定。
繼續進行部署,直到您進入 [進階] 窗格為止。
在啟用 共享磁碟時,選擇 「是」,然後選擇 最大份額數值。
選擇 評論 + 創建。
請使用以下 Azure CLI 指令建立標準 SSD 作為共享磁碟。
az disk create -g myResourceGroup -n mySharedDisk --size-gb 1024 -l westcentralus --sku StandardSSD_LRS --max-shares 2
請使用以下 Azure PowerShell 指令建立標準 SSD 作為共享磁碟。
$dataDiskConfig = New-AzDiskConfig -Location 'WestCentralUS' -DiskSizeGB 1024 -AccountType StandardSSD_LRS -CreateOption Empty -MaxSharesCount 2
New-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $dataDiskConfig
在使用以下範本前,請將 、 dataDiskSizeGB和 maxShares 參數的預設值dataDiskName替換成你自己的值。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataDiskName": {
"type": "string",
"defaultValue": "mySharedDisk"
},
"dataDiskSizeGB": {
"type": "int",
"defaultValue": 1024
},
"maxShares": {
"type": "int",
"defaultValue": 2
}
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"name": "[parameters('dataDiskName')]",
"location": "[resourceGroup().location]",
"apiVersion": "2019-07-01",
"sku": {
"name": "StandardSSD_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": "[parameters('dataDiskSizeGB')]",
"maxShares": "[parameters('maxShares')]"
}
}
]
}
部署超級磁碟作為共享磁碟
若要部署已啟用共用磁碟功能的受控磁碟,請將 maxShares 參數變更為大於 1 的值。 這可讓磁碟跨多個 VM 共用。
重要
只有在從所有 VM 卸載磁碟後,才能設定或變更 maxShares 的值。 請參閱磁碟大小以查看maxShares的允許值。
登入 Azure 入口網站。
搜尋並選擇 磁碟。
選擇 + 建立 以建立新的受控磁碟。
在 基礎 面板中,選擇 「變更大小」。
請選擇超高效能磁碟作為 磁碟 SKU。
選取您想要的磁碟大小,然後選取 [確定]。
繼續進行部署,直到您進入 [進階] 窗格為止。
在啟用 共享磁碟時,選擇 「是」,然後選擇 最大份額數值。
選擇 評論 + 創建。
區域磁碟範例
以下 Azure CLI 指令可建立區域性 Ultra Disk 作為共享磁碟,更新其效能設定,並顯示其屬性。
#Creating an Ultra shared Disk
az disk create -g rg1 -n clidisk --size-gb 1024 -l westus --sku UltraSSD_LRS --max-shares 5 --disk-iops-read-write 2000 --disk-mbps-read-write 200 --disk-iops-read-only 100 --disk-mbps-read-only 1
#Updating an Ultra shared Disk
az disk update -g rg1 -n clidisk --disk-iops-read-write 3000 --disk-mbps-read-write 300 --set diskIopsReadOnly=100 --set diskMbpsReadOnly=1
#Show shared disk properties:
az disk show -g rg1 -n clidisk
分區磁碟範例
以下 Azure CLI 指令會在可用性區 1 建立一個共享磁碟,更新其效能設定,並顯示其屬性。
#Creating an Ultra shared Disk
az disk create -g rg1 -n clidisk --size-gb 1024 -l westus --sku UltraSSD_LRS --max-shares 5 --disk-iops-read-write 2000 --disk-mbps-read-write 200 --disk-iops-read-only 100 --disk-mbps-read-only 1 --zone 1
#Updating an Ultra shared Disk
az disk update -g rg1 -n clidisk --disk-iops-read-write 3000 --disk-mbps-read-write 300 --set diskIopsReadOnly=100 --set diskMbpsReadOnly=1
#Show shared disk properties:
az disk show -g rg1 -n clidisk
區域磁碟範例
以下 Azure PowerShell 指令會建立區域性的 Ultra Disk,作為共享磁碟。
$datadiskconfig = New-AzDiskConfig -Location 'WestCentralUS' -DiskSizeGB 1024 -AccountType UltraSSD_LRS -CreateOption Empty -DiskIOPSReadWrite 2000 -DiskMBpsReadWrite 200 -DiskIOPSReadOnly 100 -DiskMBpsReadOnly 1 -MaxSharesCount 5
New-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $datadiskconfig
分區磁碟範例
以下 Azure PowerShell 指令會在可用性區域 1 建立一個 Ultra 磁碟作為共享磁碟。
$datadiskconfig = New-AzDiskConfig -Location 'WestCentralUS' -DiskSizeGB 1024 -AccountType UltraSSD_LRS -CreateOption Empty -DiskIOPSReadWrite 2000 -DiskMBpsReadWrite 200 -DiskIOPSReadOnly 100 -DiskMBpsReadOnly 1 -MaxSharesCount 5 -Zone 1
New-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $datadiskconfig
區域磁碟範例
在使用以下範本前,請將 、 location、 diskIOPSReadOnlydataDiskSizeGBdiskMBpsReadOnlymaxSharesdiskMBpsReadWritediskIOPSReadWrite和 參數的預設值diskName替換為您自己的值。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"diskName": {
"type": "string",
"defaultValue": "uShared30"
},
"location": {
"type": "string",
"defaultValue": "westus",
"metadata": {
"description": "Location for all resources."
}
},
"dataDiskSizeGB": {
"type": "int",
"defaultValue": 1024
},
"maxShares": {
"type": "int",
"defaultValue": 2
},
"diskIOPSReadWrite": {
"type": "int",
"defaultValue": 2048
},
"diskMBpsReadWrite": {
"type": "int",
"defaultValue": 20
},
"diskIOPSReadOnly": {
"type": "int",
"defaultValue": 100
},
"diskMBpsReadOnly": {
"type": "int",
"defaultValue": 1
}
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"name": "[parameters('diskName')]",
"location": "[parameters('location')]",
"apiVersion": "2019-07-01",
"sku": {
"name": "UltraSSD_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": "[parameters('dataDiskSizeGB')]",
"maxShares": "[parameters('maxShares')]",
"diskIOPSReadWrite": "[parameters('diskIOPSReadWrite')]",
"diskMBpsReadWrite": "[parameters('diskMBpsReadWrite')]",
"diskIOPSReadOnly": "[parameters('diskIOPSReadOnly')]",
"diskMBpsReadOnly": "[parameters('diskMBpsReadOnly')]"
}
}
]
}
分區磁碟範例
在使用以下範本之前,請將 diskName、diskIOPSReadOnly、maxShares、zone、dataDiskSizeGB、diskIOPSReadWrite、diskMBpsReadWrite、diskMBpsReadOnly 和 location 參數的預設值替換為您自己的值。
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"diskName": {
"type": "string",
"defaultValue": "uShared30"
},
"location": {
"type": "string",
"defaultValue": "westus",
"metadata": {
"description": "Location for all resources."
}
},
"dataDiskSizeGB": {
"type": "int",
"defaultValue": 1024
},
"maxShares": {
"type": "int",
"defaultValue": 2
},
"diskIOPSReadWrite": {
"type": "int",
"defaultValue": 2048
},
"diskMBpsReadWrite": {
"type": "int",
"defaultValue": 20
},
"diskIOPSReadOnly": {
"type": "int",
"defaultValue": 100
},
"diskMBpsReadOnly": {
"type": "int",
"defaultValue": 1
},
"zone": {
"type": "int",
"allowedValues": [
1,
2,
3
],
"metadata": {
"description": "Zone to deploy to."
}
}
},
"resources": [
{
"type": "Microsoft.Compute/disks",
"name": "[parameters('diskName')]",
"location": "[parameters('location')]",
"zones": ["[parameters('zone')]"],
"apiVersion": "2019-07-01",
"sku": {
"name": "UltraSSD_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": "[parameters('dataDiskSizeGB')]",
"maxShares": "[parameters('maxShares')]",
"diskIOPSReadWrite": "[parameters('diskIOPSReadWrite')]",
"diskMBpsReadWrite": "[parameters('diskMBpsReadWrite')]",
"diskIOPSReadOnly": "[parameters('diskIOPSReadOnly')]",
"diskMBpsReadOnly": "[parameters('diskMBpsReadOnly')]"
}
}
]
}
共用現有的磁碟
若要共用現有磁碟或更新可掛載的虛擬機數量,請使用 Azure PowerShell 或 Azure CLI 設定maxShares參數。 要關閉分享,請設 maxShares 為 1。
重要
共用式磁碟不支援主機快取。
只有在從所有 VM 卸載磁碟後,才能設定或變更 maxShares 的值。 請參閱磁碟大小以查看maxShares的允許值。
在拆卸磁碟前,先記錄 LUN ID,以便重新接上。
Azure PowerShell
以下 Azure PowerShell 指令會更新現有磁碟的共享設定。
$datadiskconfig = Get-AzDisk -DiskName "mySharedDisk"
$datadiskconfig.maxShares = 3
Update-AzDisk -ResourceGroupName 'myResourceGroup' -DiskName 'mySharedDisk' -Disk $datadiskconfig
Azure CLI
以下 Azure CLI 指令會更新現有磁碟的共享設定。
#Modifying a disk to enable or modify sharing configuration
az disk update --name mySharedDisk --max-shares 5 --resource-group myResourceGroup
在你的虛擬機中使用 Azure 共享磁碟
部署共用 maxShares > 1磁碟後,你可以將該磁碟掛載到一個或多個虛擬機上。
以下 Azure PowerShell 指令會建立虛擬機,並將共享磁碟附加為資料磁碟。
$resourceGroup = "myResourceGroup"
$location = "WestCentralUS"
$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 持久保留指令
當你將共享磁碟掛載到叢集中的虛擬機後,你可以透過小型電腦系統介面(SCSI)的持久保留(PR)指令建立法定人數並讀寫磁碟。
以下 SCSI 持久保留指令在使用 Azure 共享磁碟時可用:
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時,請提供以下其中一種持久預約類型:
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_RESERVATIONPR_CLEAR_RESERVATION或 PR_RELEASE_RESERVATION時,也需要提供持久的預留金鑰。
下一步
如果你還有更多問題,請參考常見問題中的 共用磁碟 區。