Azure Stack Hub 受控磁碟:差異與注意事項
本文摘要說明 Azure Stack Hub 受控磁碟與 Azure 受控磁碟之間的差異。 若要深入了解 Azure Stack Hub 與 Azure 之間的大致差異,請參閱主要考量一文。
受控磁碟會管理與 VM 磁碟相關的儲存體帳戶,從而簡化 IaaS 虛擬機器 (VM) 的磁碟管理。
使用 Azure Stack Hub 入口網站建立 VM 時,系統會依預設啟用受控磁碟。
速查表:受控磁碟的差異
功能 | Azure (全域) | Azure Stack Hub |
---|---|---|
備份選項 | Azure 備份服務 | 尚不支援 |
災害復原選項 | Azure Site Recovery | 尚不支援 |
磁碟效能分析 | 彙總計量和每個磁碟支援的計量。 | 尚不支援 |
磁碟大小 | Azure 進階磁碟:P4 (32 GiB) 至 P80 (32 TiB) Azure 標準 SSD 磁碟:E10 (128 GiB) 至 E80 (32 TiB) Azure 標準 HDD 磁碟:S4 (32 GiB) 至 S80 (32 TiB) |
M4:32 GiB M6:64 GiB M10:128 GB M15:256 GiB M20:512 GB M30:1023 GiB |
磁碟快照複製 | 支援對連結至執行中 VM 的 Azure 受控磁碟進行快照。 | 透過後備廠商支援。 請洽詢您的廠商以確認支援。 |
磁碟類型 | 進階 SSD、標準 SSD 和標準 HDD。 | 進階 SSD、標準 HDD |
待用資料的加密 | Azure 儲存體服務加密 (SSE)、Azure 磁碟加密 (ADE)。 | BitLocker 128 位元 AES 加密 |
展開磁碟 - 受控磁碟 | 支援 | 支援 Windows Linux |
映像 | 受控自訂映像 | 支援 |
遷移 | 提供從現有非受控 Azure Resource Manager VM 進行移轉的工具,而不需要重新建立 VM。 | 尚不支援 |
進階磁碟 | 完全支援。 | 可佈建,但無效能限制或保證 |
進階磁碟 IOP | 取決於磁碟大小。 | 每一磁碟 2300 個 IOP |
進階磁碟輸送量 | 取決於磁碟大小。 | 每個磁碟 145 MB/秒 |
注意
Azure Stack Hub 中的受控磁碟 IOP 和輸送量是限制數目而不是佈建數目,可能會受到在 Azure Stack Hub 中執行的硬體和工作負載影響。
計量
儲存體計量也有些差異:
- 使用 Azure Stack Hub 時,儲存體計量中的交易資料不會區分內部或外部網路頻寬。
- 儲存體計量中的 Azure Stack Hub 交易資料並不包含虛擬機器對掛接磁碟的存取。
API 版本
Azure Stack Hub 受控磁碟支援下列 API 版本:
- 2019-07-01
- 2019-03-01
- 2018-09-30
- 2018-06-01
- 2018-04-01
- 2017-03-30
- 2017-03-30
- 2017-12-01 (僅限受控映像,不包含磁碟、不包含快照集)
轉換為受控磁碟
注意
Azure PowerShell 的 ConvertTo-AzVMManagedDisk Cmdlet 無法用來將 Azure Stack Hub 中的非受控磁碟轉換為受控磁碟。 Azure Stack Hub 目前尚不支援此 Cmdlet。
您可以使用下列指令碼,將目前佈建的 VM 從非受控磁碟轉換為受控磁碟。 將預留位置取代為您自己的值。
$SubscriptionId = "SubId"
# The name of your resource group where your VM to be converted exists.
$ResourceGroupName ="MyResourceGroup"
# The name of the managed disk to be created.
$DiskName = "mngddisk"
# The size of the disks in GB. It should be greater than the VHD file size.
$DiskSize = "50"
# The URI of the VHD file that will be used to create the managed disk.
# The VHD file can be deleted as soon as the managed disk is created.
$VhdUri = "https://rgmgddisks347.blob.local.azurestack.external/vhds/unmngdvm20181109013817.vhd"
# The storage type for the managed disk: PremiumLRS or StandardLRS.
$AccountType = "StandardLRS"
# The Azure Stack Hub location where the managed disk will be located.
# The location should be the same as the location of the storage account in which VHD file is stored.
# Configure the new managed VM point to the old unmanaged VM configuration (network config, VM name, location).
$Location = "local"
$VirtualMachineName = "unmngdvm"
$VirtualMachineSize = "Standard_D1"
$PIpName = "unmngdvm-ip"
$VirtualNetworkName = "unmngdrg-vnet"
$NicName = "unmngdvm"
# Set the context to the subscription ID in which the managed disk will be created.
Select-AzSubscription -SubscriptionId $SubscriptionId
# Delete old VM, but keep the OS disk.
Remove-AzVm -Name $VirtualMachineName -ResourceGroupName $ResourceGroupName
# Create the managed disk configuration.
$DiskConfig = New-AzDiskConfig -AccountType $AccountType -Location $Location -DiskSizeGB $DiskSize -SourceUri $VhdUri -CreateOption Import
# Create managed disk.
New-AzDisk -DiskName $DiskName -Disk $DiskConfig -ResourceGroupName $resourceGroupName
$Disk = Get-AzDisk -DiskName $DiskName -ResourceGroupName $ResourceGroupName
$VirtualMachine = New-AzVMConfig -VMName $VirtualMachineName -VMSize $VirtualMachineSize
# Use the managed disk resource ID to attach it to the virtual machine.
# Change the OS type to "-Windows" if the OS disk has the Windows OS.
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -ManagedDiskId $Disk.Id -CreateOption Attach -Linux
# Create a public IP for the VM.
$PublicIp = Get-AzPublicIpAddress -Name $PIpName -ResourceGroupName $ResourceGroupName
# Get the virtual network where the virtual machine will be hosted.
$VNet = Get-AzVirtualNetwork -Name $VirtualNetworkName -ResourceGroupName $ResourceGroupName
# Create NIC in the first subnet of the virtual network.
$Nic = Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Nic.Id
# Create the virtual machine with managed disk.
New-AzVM -VM $VirtualMachine -ResourceGroupName $ResourceGroupName -Location $Location
受控映像
Azure Stack Hub 支援受控映像,可讓您在一般化 VM (非受控和受控) 上建立受控映像物件 (後續只能建立受控磁碟 VM)。 受控映像會啟用下列兩種案例:
- 您已一般化非受控 VM,而且從現在開始想要使用受控磁碟。
- 您有一個一般化的受控 VM,並想要建立多個類似的受控 VM。
步驟 1:一般化 VM
若使用 Windows,請遵循使用 Sysprep 將 Windows VM 一般化一節進行。 若使用 Linux,請遵循此處的步驟 1。
注意
請務必將 VM 一般化。 使用未一般化的映像建立 VM 可能會產生 VMProvisioningTimeout 錯誤。
步驟 2:建立受控映像
您可以使用入口網站、PowerShell 或 Azure CLI 來建立受控映像。 請依照建立受控映像中的步驟。
步驟 3:選擇使用案例
案例 1:將非受控 VM 移轉到受控磁碟
執行此步驟之前,請務必先正確地將 VM 一般化。 一般化之後,您就無法再使用此 VM。 使用未一般化的映像建立虛擬機器會導致 VMProvisioningTimeout 錯誤。
請依照從使用儲存體帳戶的 VM 建立映像中的指示,從儲存體帳戶中的一般化 VHD 建立受控映像。 此映像可用於建立未來的受控虛擬機器。
案例 2:使用 PowerShell 從受控映像建立受控 VM
透過使用 PowerShell 從受控磁碟建立映像的指令碼從現有受控磁碟虛擬機器建立映像後,使用下列範例指令碼從現有的映像物件建立類似的 Linux VM。
Azure Stack Hub PowerShell 模組 1.7.0 或更新版本:請遵循從受控映像建立虛擬機器的指示進行。
Azure Stack Hub PowerShell 模組 1.6.0 或更新版本:
# Variables for common values
$ResourceGroupName = "MyResourceGroup"
$Location = "local"
$VirtualMachineName = "MyVM"
$ImageRG = "managedlinuxrg"
$ImageName = "simplelinuxvmm-image-2019122"
# Create credential object
$Cred = Get-Credential -Message "Enter a username and password for the virtual machine."
# Create a resource group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name "MySubnet" -AddressPrefix "192.168.1.0/24"
# Create a virtual network
$VNet = New-AzVirtualNetwork -ResourceGroupName $ResourceGroupName -Location $Location `
-Name "MyVNet" -AddressPrefix "192.168.0.0/16" -Subnet $SubnetConfig
# Create a public IP address and specify a DNS name
$PIp = New-AzPublicIpAddress -ResourceGroupName $ResourceGroupName -Location $Location `
-Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
# Create an inbound network security group rule for port 3389
$NsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name "MyNetworkSecurityGroupRuleSSH" -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow
# Create a network security group
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location `
-Name "MyNetworkSecurityGroup" -SecurityRules $NsgRuleSSH
# Create a virtual network card and associate with public IP address and NSG
$Nic = New-AzNetworkInterface -Name "MyNic" -ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PIp.Id -NetworkSecurityGroupId $Nsg.Id
$Image = Get-AzImage -ResourceGroupName $ImageRG -ImageName $ImageName
# Create a virtual machine configuration
$VmConfig = New-AzVMConfig -VMName $VirtualMachineName -VMSize "Standard_D1" | `
Set-AzVMOperatingSystem -Linux -ComputerName $VirtualMachineName -Credential $Cred | `
Set-AzVMSourceImage -Id $Image.Id | `
Set-AzVMOSDisk -VM $VmConfig -CreateOption FromImage -Linux | `
Add-AzVMNetworkInterface -Id $Nic.Id
# Create a virtual machine
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VmConfig
您也可以使用入口網站,從受控映像建立 VM。 如需詳細資訊,請參閱 Azure 受控映像文章:在 Azure 中建立一般化 VM 的受控映像與從受控映像建立 VM。
組態
套用 1808 更新或更新版本後,您必須先執行下列設定變更,再使用受控磁碟:
- 如果訂用帳戶是 1808 版更新之前建立的,請遵循下列步驟來更新訂用帳戶。 否則,在此訂用帳戶中部署 VM 可能會失敗,並出現錯誤訊息「磁碟管理員發生內部錯誤。」
- 在 Azure Stack Hub 使用者入口網站中,移至 [訂用帳戶] 並尋找訂用帳戶。 按一下 [資源提供者],按一下 [Microsoft.Compute],然後按一下 [重新註冊]。
- 在相同的訂用帳戶底下,移至 [存取控制 (IAM)],並確認 [Azure Stack Hub - 受控磁碟] 已列出。
- 如果您使用多租用戶環境,請要求您的雲端操作員 (可來自您的組織或服務提供者) 遵循在 Azure Stack Hub 中設定多重租用的步驟,重新設定每個來賓目錄。 否則,在與該來賓目錄相關聯的訂用帳戶中部署 VM 可能會失敗,並出現錯誤訊息「磁碟管理員中發生內部錯誤」。
後續步驟
- 了解 Azure Stack Hub 虛擬機器。
- 另請參閱 Azure Stack Hub 受控磁碟的差異以及考量。
- 如何 擴充非受控虛擬硬碟連結至虛擬機器。