使用 PowerShell 將資料磁碟連結至 Windows VM
適用於:✔️ Windows VM ✔️ 彈性擴展集
本文說明如何使用 PowerShell 將新的及現有的磁碟連結至 Windows 虛擬機器。
首先,請檢閱下列提示:
- 虛擬機器的大小會控制您可以連接的資料磁碟數目。 如需相關資訊,請參閱虛擬機器的大小。
- 若要使用進階 SSD,您將需要已啟用進階儲存體的 VM 類型,例如 DS 系列或 GS 系列的虛擬機器。
本文會使用 Azure Cloud Shell 內的 PowerShell,這會不斷更新至最新版本。 若要開啟 Cloud Shell,請選取任何程式碼區塊頂端的 [試試看]。
延遲較低
在選取區域中,磁碟連結延遲已減少,因此您會看到最多 15% 的改善。 無論您是否在 VM 之間已規劃或未規劃容錯移轉、調整工作負載,或執行大規模具狀態工作負載 (例如 Azure Kubernetes Service),這將會非常實用。 不過,這項改善僅限於明確的磁碟連結命令 Add-AzVMDataDisk
。 如果您呼叫可能會隱含執行連結的命令 (例如 Update-AzVM
),則不會看到效能改善。 您無須採取呼叫明確連結命令以外的動作,即可看到這項改進。
較低延遲目前在每個公用區域都可以使用,但下列區域除外:
- 加拿大中部
- 美國中部
- 美國東部
- 美國東部 2
- 美國中南部
- 美國西部 2
- 德國北部
- 印度西部
- 北歐
- 西歐
將空的資料磁碟新增至虛擬機器
這個範例示範如何將空的資料磁碟新增至現有的虛擬機器。
使用受控磁碟
$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
Update-AzVM -VM $vm -ResourceGroupName $rgName
在可用性區域中使用受控磁碟
若要在可用性區域中建立磁碟,請使用 New-AzDiskConfig 並搭配 -Zone
參數。 下列範例會在區域 1 建立磁碟。
$rgName = 'myResourceGroup'
$vmName = 'myVM'
$location = 'East US 2'
$storageType = 'Premium_LRS'
$dataDiskName = $vmName + '_datadisk1'
$diskConfig = New-AzDiskConfig -SkuName $storageType -Location $location -CreateOption Empty -DiskSizeGB 128 -Zone 1
$dataDisk1 = New-AzDisk -DiskName $dataDiskName -Disk $diskConfig -ResourceGroupName $rgName
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -CreateOption Attach -ManagedDiskId $dataDisk1.Id -Lun 1
Update-AzVM -VM $vm -ResourceGroupName $rgName
初始化磁碟
新增空的磁碟之後,您需要將它初始化。 若要將磁碟初始化,您可以登入 VM 並使用磁碟管理。 如果您在建立 VM 時於 VM 上啟用 WinRM 和憑證,您便可以使用遠端 PowerShell 將磁碟初始化。 您也可以使用自訂指令碼擴充:
$location = "location-name"
$scriptName = "script-name"
$fileName = "script-file-name"
Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $locName -VMName $vmName -Name $scriptName -TypeHandlerVersion "1.4" -StorageAccountName "mystore1" -StorageAccountKey "primary-key" -FileName $fileName -ContainerName "scripts"
指令檔可以包含用以將磁碟初始化的程式碼,例如︰
注意
範例指令碼使用 MBR 分割樣式。 若磁碟大小為 2 TiB 或以上,您必須使用 GTP 分割。 若其低於 2 TiB,您可以使用 MBR 或 GPT。
$disks = Get-Disk | Where partitionstyle -eq 'raw' | sort number
$letters = 70..89 | ForEach-Object { [char]$_ }
$count = 0
$labels = "data1","data2"
foreach ($disk in $disks) {
$driveLetter = $letters[$count].ToString()
$disk |
Initialize-Disk -PartitionStyle MBR -PassThru |
New-Partition -UseMaximumSize -DriveLetter $driveLetter |
Format-Volume -FileSystem NTFS -NewFileSystemLabel $labels[$count] -Confirm:$false -Force
$count++
}
將現有的資料磁碟附加至 VM
您也可以將現有的受控磁碟連結至虛擬機器作為資料磁碟。
$rgName = "myResourceGroup"
$vmName = "myVM"
$dataDiskName = "myDisk"
$disk = Get-AzDisk -ResourceGroupName $rgName -DiskName $dataDiskName
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -CreateOption Attach -Lun 0 -VM $vm -ManagedDiskId $disk.Id
Update-AzVM -VM $vm -ResourceGroupName $rgName
下一步
您也可以使用範本來部署受控磁碟。 如需詳細資訊,請參閱在 Azure Resource Manager 中使用受控磁碟的範本或部署多個資料磁碟的快速入門範本。