使用 PowerShell 將資料磁碟連結至 Windows VM

適用於:✔️ Windows VM ✔️ 彈性擴展集

本文說明如何使用 PowerShell 將新的及現有的磁碟連結至 Windows 虛擬機器。

首先,請檢閱下列提示:

本文會使用 Azure Cloud Shell 內的 PowerShell,這會不斷更新至最新版本。 若要開啟 Cloud Shell,請選取任何程式碼區塊頂端的 [試試看]

延遲較低

在選取區域中,磁碟連結延遲已減少,因此您會看到最多 15% 的改善。 無論您是否在 VM 之間已規劃或未規劃容錯移轉、調整工作負載,或執行大規模具狀態工作負載 (例如 Azure Kubernetes Service),這將會非常實用。 不過,這項改善僅限於明確的磁碟連結命令 Add-AzVMDataDisk。 如果您呼叫可能會隱含執行連結的命令 (例如 Update-AzVM),則不會看到效能改善。 您無須採取呼叫明確連結命令以外的動作,即可看到這項改進。

較低延遲目前在每個公用區域都可以使用,但下列區域除外:

  • 加拿大中部
  • 美國中部
  • 美國東部
  • 美國東部 2
  • 美國中南部
  • 美國西部 2
  • 德國北部
  • Jio 印度西部
  • 北歐
  • 西歐

將空的資料磁碟新增至虛擬機器

這個範例示範如何將空的資料磁碟新增至現有的虛擬機器。

使用受控磁碟

$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 中使用受控磁碟的範本或部署多個資料磁碟的快速入門範本