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

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

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

首先,請檢閱下列提示:

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

降低資料磁碟連接延遲

在特定區域,磁碟連接延遲會降低,因此可改善多達 15%。 如果您在 VM 之間進行計劃性或非計劃性容錯移轉、正在調整工作負載,或正在執行大規模可設定狀態工作負載,例如 Azure Kubernetes Service,則此改進非常有用。 然而,這項改進僅限於明確的磁碟附加指令 Add-AzVMDataDisk。 如果你執行了可能會隱含進行附加作業的指令,例如 Update-AzVM,就不會看到效能提升。 您無須採取呼叫明確連結命令以外的動作,即可看到這項改進。

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

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

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

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

建立並附加管理磁碟

設定資源群組、虛擬機、位置、儲存類型及資料磁碟名稱的值。 New-AzDiskConfig 指令組會為一個空的 128 GiB 管理磁碟建立設定,而 New-AzDisk 則建立該磁碟。 接著, Get-AzVM 取得虛擬機設定, Add-AzVMDataDisk 將磁碟加入其中,並將 Update-AzVM 更新後的設定套用到虛擬機上。

$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 區建立一顆空的 128 GiB 管理磁碟,將其加入虛擬機設定,並將更新後的設定套用到虛擬機上。

$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

初始化磁碟

新增空硬碟後,你需要初始化它。 要初始化磁碟,請登入虛擬機並使用磁碟管理。 如果你在建立虛擬機時啟用 WinRM 和憑證,可以用遠端 PowerShell 初始化磁碟。

你也可以使用 Set-AzVMCustomScriptExtension 這個 cmdlet 為虛擬機新增自訂腳本擴充功能。 以下範例使用附件程序中的資源群組與虛擬機名稱,以及虛擬機位置、副檔名、初始化腳本檔、儲存帳號名稱、儲存帳號金鑰及容器名稱的值。 在執行指令前,先將腳本儲存在指定的 Azure 儲存體 容器中:

    $location = "location-name"
    $scriptName = "script-name"
    $fileName = "script-file-name"
    Set-AzVMCustomScriptExtension -ResourceGroupName $rgName -Location $location -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

設定資源群組、虛擬機及現有受管理磁碟名稱的值。 使用 Get-AzDisk 來取得管理磁碟和 Get-AzVM 虛擬機設定。 接著,使用 將 Add-AzVMDataDisk 現有磁碟加入虛擬機設定,並將 Update-AzVM 更新後的設定套用到虛擬機上。

$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 資源管理軟體範本中使用管理磁碟 」或「部署多個資料磁碟的 快速入門範本 」。