在 Azure Stack Hub 中建立 VM 磁碟儲存體

本文說明如何使用 Azure Stack Hub 入口網站或使用 PowerShell 來建立虛擬機器 (VM) 磁碟儲存體。

概觀

Azure Stack Hub 支援在 VM 中使用受控磁碟和非受控磁碟作為作業系統 (OS) 和資料磁碟。

受控磁碟會管理與 VM 磁碟相關的儲存體帳戶,從而簡化 Azure IaaS VM 的磁碟管理。 您只需要指定您需要的磁碟大小,Azure Stack Hub 就會替您建立和管理磁碟。

非受控磁碟需要建立儲存體帳戶來儲存磁碟。 您建立的磁碟便是 VM 磁碟,且會儲存於儲存體帳戶的容器中。

最佳做法指南

建議您為 VM 使用受控磁碟,以便簡化管理和實現容量平衡。 您不需要先準備儲存體帳戶和容器就可以使用受控磁碟。 在建立多個受控磁碟時,這些磁碟會分散到多個磁碟區,以便能平衡磁碟區的容量。

至於非受控磁碟,若要改善效能並降低整體成本,建議您將每個非受控磁碟放在不同的容器中。 雖然您可以將 OS 磁碟和資料磁碟同時放在相同容器中,但最佳做法是讓一個容器只存放 OS 磁碟或資料磁碟其中之一,而不要同時存放兩者。

如果您將一或多個資料磁碟新增到 VM,可使用其他容器作為保存這些磁碟的位置。 其他 VM 的 OS 磁碟也應該位於自己的容器中。

當您建立 VM 時,您可以對每個新的虛擬機器重複使用相同的儲存體帳戶。 只有您建立的容器應該是唯一的。

新增磁碟

下表摘要說明如何使用入口網站以及使用 PowerShell 新增磁碟:

方法 選項。
使用者入口網站 - 將新的資料磁碟新增至現有的 VM。 Azure Stack Hub 會建立新的磁碟。

- 將現有磁碟 (.vhd) 檔案新增至先前建立的 VM。 若要這樣做,您必須先準備 .vhd 檔案並將它上傳至 Azure Stack Hub。
PowerShell - 建立具有 OS 磁碟的新 VM,並同時將一或多個資料磁碟新增到該 VM。

使用入口網站將磁碟新增到 VM

根據預設,當您使用入口網站為大多數 Marketplace 項目建立 VM 時,只會建立一個 OS 磁碟。

建立 VM 之後,您可以使用入口網站:

  • 建立新的資料磁碟,並將它連結至 VM。
  • 上傳現有資料磁碟,並將它連結至 VM。

將您新增的每個非受控磁碟放入不同的容器。

使用入口網站建立並連結新的資料磁碟

  1. 請在入口網站中,依序選取 [所有服務]、[計算] 和 [虛擬機器]。 範例:VM 儀表板

  2. 從清單中選取先前建立的 VM。

  3. 針對 VM,請依序選取 [磁碟] 和 [新增資料磁碟] 。 顯示如何將新磁片連結至 VM 的螢幕擷取畫面。

  4. 針對資料磁碟:

    • 輸入 LUN。 LUN 必須是有效的數字。
    • 選取 [建立磁碟] 。 顯示如何建立新資料磁片的螢幕擷取畫面。
  5. 在 [建立受控磁碟] 刀鋒視窗中:

    • 輸入磁碟的 [名稱] 。
    • 選取現有的資源群組,或建立新群組。
    • 選取 [位置] 。 根據預設,位置會設定為保存 OS 磁碟的同一個容器。
    • 選取 [帳戶類型] 。 範例:將新磁片連結至 VM

    注意

    進階磁碟 (SSD) 和標準磁碟 (HDD) 由 Azure Stack Hub 中的相同儲存體基礎結構所支援。 兩者提供相同的效能。

    • 選取 [來源類型] 。

      從另一個磁碟的快照集、儲存體帳戶中的 Blob 建立磁碟,或建立空的磁碟。

      快照集:選取快照集 (如果有的話)。 快照集必須位於 VM 的訂用帳戶和位置中。

      儲存體 Blob

      • 新增包含磁碟映像的儲存體 Blob 的 URI。
      • 選取 [瀏覽] 以開啟 [儲存體帳戶] 刀鋒視窗。 如需指示,請參閱從儲存體帳戶新增資料磁碟
      • 選取映像的 OS 類型:WindowsLinux無 (資料磁碟)
    • 選取 [大小 (GiB)] 。

      磁碟成本會隨著磁碟的大小而增加。

    • 選取 [建立] 。 Azure Stack Hub 會建立並驗證受控磁碟。

  6. 在 Azure Stack Hub 建立磁碟,並將其連結至 VM 之後,新的磁碟會列在 VM 磁碟設定的 [資料磁碟] 下。

    範例:檢視磁碟

從儲存體帳戶新增資料磁碟

如需關於在 Azure Stack Hub 中使用儲存體帳戶的詳細資訊,請參閱 Azure Stack Hub 儲存體簡介

  1. 選取要使用的 [儲存體帳戶] 。

  2. 選取要放置資料磁碟的 [容器] 。 在 [容器] 刀鋒視窗中,您可以視需要建立新的容器。 您可以接著將新磁碟的位置變更為其本身的容器。 當您對每個磁碟使用不同的容器時,您可分散資料磁碟的放置位置以改善效能。

  3. 選擇 [選取] 儲存選取項目。

    顯示如何選取容器的螢幕擷取畫面。

將現有的資料磁碟附加至 VM

  1. 準備.vhd 檔案以作為 VM 的資料磁碟。 將該 .vhd 檔案上傳至儲存體帳戶,而您會使用該儲存體帳戶搭配 .vhd 檔案所要連結的 VM。

  2. 上傳 .Vhd 檔案之後,您即可將 VHD 連結至 VM。 在左邊的功能表上,選取 [虛擬機器] 。
    顯示所選虛擬機器的螢幕擷取畫面。

  3. 從清單中選擇 VM。

  4. 在 VM 頁面上,依序選取 [磁碟] 和 [連結現有的]。

    範例:連接現有磁碟

  5. 在 [連結現有的磁碟] 頁面中,選取 [VHD 檔案] 。 [儲存體帳戶] 頁面隨即開啟。

    範例:選取 VHD 檔案

  6. 在 [儲存體帳戶] 下,選取要使用的帳戶,然後選擇保存您先前上傳之 .vhd 檔案的容器。 選取 .vhd 檔案,然後選擇 [選取] 儲存選取項目。

    範例:選取容器

  7. 在 [連結現有磁碟] 下,您選取的檔案會列在 [VHD 檔案] 底下。 更新磁碟的 [主機快取] 設定,然後選取 [確定] 以儲存 VM 的新磁碟設定。

    範例:連結 VHD 檔案

  8. 在 Azure Stack Hub 建立磁碟並將它連結至 VM 之後,新的磁碟會列在 VM 磁碟設定的 [資料磁碟] 下。

    範例:完成磁碟連結

使用 PowerShell 將多個磁碟新增到 VM

您可以使用 PowerShell 來佈建 VM 及新增資料磁碟,或連結既存的受控磁碟或 .vhd 檔案作為資料磁碟。

Add-AZVMDataDisk Cmdlet 會將資料磁碟新增至 VM。 您可以在建立 VM 時新增資料磁碟,也可以將資料磁碟新增到現有的 VM。 針對非受控磁碟,指定 VhdUri 參數,將磁碟分散至不同的容器。

將資料磁碟新增到新的 VM

下列範例使用 PowerShell 命令來建立具有三個資料磁碟的 VM。 由於使用受控磁碟或非受控磁碟有些微的差異,因此為這些命令提供了數個部分。

建立虛擬機器組態和網路資源

以下指令碼會建立 VM 物件,然後將其儲存在 $VirtualMachine 變數中。 這些命令會指派 VM 的名稱和大小,並為 VM 建立網路資源 (虛擬網路、子網路、虛擬網路介面卡、NSG 和公用 IP 位址)。

# Create new virtual machine configuration
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine" `
                                      -VMSize "Standard_A2"

# Set variables
$rgName = "myResourceGroup"
$location = "local"

# Create a subnet configuration
$subnetName = "mySubNet"
$singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24

# Create a vnet configuration
$vnetName = "myVnetName"
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
                                  -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet

# Create a public IP
$ipName = "myIP"
$pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
                                  -AllocationMethod Dynamic

# Create a network security group configuration
$nsgName = "myNsg"
$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
                                                -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
                                                -SourceAddressPrefix Internet -SourcePortRange * `
                                                -DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
                                       -Name $nsgName -SecurityRules $rdpRule

# Create a NIC configuration
$nicName = "myNicName"
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName `
                                   -Location $location -SubnetId $vnet.Subnets[0].Id `
                                   -NetworkSecurityGroupId $nsg.Id -PublicIpAddressId $pip.Id

新增受控磁碟

以下三個命令會將受控資料磁碟新增到 $VirtualMachine 中儲存的虛擬機器。 每個命令都可指定磁碟的名稱和其他屬性。

$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk1' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 10 -Lun 0 `
                                        -CreateOption Empty
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk2' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 11 -Lun 1 `
                                        -CreateOption Empty
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk3' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 12 -Lun 2 `
                                        -CreateOption Empty

下列命令會將 OS 磁碟作為受控磁碟,新增至 $VirtualMachine 儲存中的虛擬機器。

# Set OS Disk
$osDiskName = "osDisk"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $osDiskName  `
                                      -CreateOption FromImage -Windows

新增非受控磁碟

接下來三個命令會將三個受控資料磁碟的路徑指派給 $DataDiskVhdUri01$DataDiskVhdUri02$DataDiskVhdUri03 變數。 在 URL 中定義不同的路徑名稱,將磁碟分散至不同的容器:

$DataDiskVhdUri01 = "https://contoso.blob.local.azurestack.external/test1/data1.vhd"
$DataDiskVhdUri02 = "https://contoso.blob.local.azurestack.external/test2/data2.vhd"
$DataDiskVhdUri03 = "https://contoso.blob.local.azurestack.external/test3/data3.vhd"

以下三個命令會將資料磁碟新增到 $VirtualMachine 中儲存的虛擬機器。 每個命令都可指定磁碟的名稱和其他屬性。 每個磁碟的 URI 會儲存在 $DataDiskVhdUri01$DataDiskVhdUri02$DataDiskVhdUri03

$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk1' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 10 -Lun 0 `
                                        -VhdUri $DataDiskVhdUri01 -CreateOption Empty
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk2' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 11 -Lun 1 `
                                        -VhdUri $DataDiskVhdUri02 -CreateOption Empty
$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name 'DataDisk3' `
                                        -Caching 'ReadOnly' -DiskSizeInGB 12 -Lun 2 `
                                        -VhdUri $DataDiskVhdUri03 -CreateOption Empty

下列命令會將非受控 OS 磁碟新增至 $VirtualMachine 儲存中的虛擬機器。

# Set OS Disk
$osDiskUri = "https://contoso.blob.local.azurestack.external/vhds/osDisk.vhd"
$osDiskName = "osDisk"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $osDiskName -VhdUri $osDiskUri `
                                      -CreateOption FromImage -Windows

建立新的虛擬機器

使用下列 PowerShell 命令來設定 OS 映像、將網路組態新增至 VM,然後啟動新的 VM。

#Create the new VM
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName VirtualMachine -ProvisionVMAgent | `
                  Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer `
                  -Skus 2016-Datacenter -Version latest | Add-AzVMNetworkInterface -Id $nic.Id

New-AzVM -ResourceGroupName $rgName -Location $location -VM $VirtualMachine

將新的資料磁碟新增至現有 VM

下列範例使用 PowerShell 命令將三個資料磁碟新增到現有的 VM:

取得虛擬機器

第一個命令會使用 Get-AzVM Cmdlet,來取得名為 VirtualMachine 的 VM。 此命令會將 VM 儲存在 $VirtualMachine 變數中:

$VirtualMachine = Get-AzVM -ResourceGroupName "myResourceGroup" `
                                -Name "VirtualMachine"

新增受控磁碟

接下來三個命令會將受控資料磁碟新增到 $VirtualMachine 變數中儲存的 VM。 每個命令都可指定磁碟的名稱和其他屬性。

Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk1" -Lun 0 `
                      -Caching ReadOnly -DiskSizeinGB 10 -CreateOption Empty
Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk2" -Lun 1 `
                      -Caching ReadOnly -DiskSizeinGB 11 -CreateOption Empty
Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk3" -Lun 2 `
                      -Caching ReadOnly -DiskSizeinGB 12 -CreateOption Empty

新增非受控磁碟

接下來三個命令會將三個資料磁碟的路徑指派給 $DataDiskVhdUri01$DataDiskVhdUri02$DataDiskVhdUri03 變數。 VHD URI 中不同的路徑名稱表示放置磁碟的不同容器:

$DataDiskVhdUri01 = "https://contoso.blob.local.azurestack.external/test1/data1.vhd"
$DataDiskVhdUri02 = "https://contoso.blob.local.azurestack.external/test2/data2.vhd"
$DataDiskVhdUri03 = "https://contoso.blob.local.azurestack.external/test3/data3.vhd"

接下來三個命令會將 VM 新增到 $VirtualMachine 變數中儲存的虛擬機器。 每個命令可指定磁碟的名稱、位置和其他屬性。 每個磁碟的 URI 會儲存在 $DataDiskVhdUri01$DataDiskVhdUri02$DataDiskVhdUri03

Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk1" `
                      -VhdUri $DataDiskVhdUri01 -LUN 0 `
                      -Caching ReadOnly -DiskSizeinGB 10 -CreateOption Empty
Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk2" `
                      -VhdUri $DataDiskVhdUri02 -LUN 1 `
                      -Caching ReadOnly -DiskSizeinGB 11 -CreateOption Empty
Add-AzVMDataDisk -VM $VirtualMachine -Name "DataDisk3" `
                      -VhdUri $DataDiskVhdUri03 -LUN 2 `
                      -Caching ReadOnly -DiskSizeinGB 12 -CreateOption Empty

更新虛擬機器狀態

此命令會更新 -ResourceGroupName$VirtualMachine 中所儲存 VM 的狀態:

Update-AzVM -ResourceGroupName "myResourceGroup" -VM $VirtualMachine

後續步驟

若要深入了解 Azure Stack Hub VM,請參閱 Azure Stack Hub 中虛擬機器的考量