有关解决方法,请参阅如何从具有本地临时磁盘的 VM 大小迁移到不带本地临时磁盘的 VM 大小?。 该解决方法可用于将不带本地临时磁盘的 VM 大小调整为具有本地临时磁盘的 VM。 你将创建一个没有本地临时磁盘的 VM 的快照 > 基于该快照创建一个磁盘 > 基于该磁盘创建 VM 并使用合适的 VM 大小以便支持具有本地临时磁盘的 VM。
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount -Environment AzureChinaCloud
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
使用 PowerShell 重设可用性集中的 VM 的大小
如果可用性集中 VM 的新大小在当前托管 VM 的硬件群集上不可用,则需要解除分配可用性集中的所有 VM 以重设 VM 大小。 在调整完一个 VM 的大小之后,可能还需要更新可用性集中其他 VM 的大小。 若要调整可用性集中 VM 的大小,请运行以下脚本。
此脚本设置变量 $resourceGroup、$vmName、$newVmSize 和 $availabilitySetName。 然后,它通过使用 Get-AzVMSize 检查所需的 VM 大小是否可用,并检查输出是否包含所需大小。 如果所需大小不可用,该脚本会解除分配可用性集中的所有 VM,调整其大小,然后再次启动它们。 如果所需大小可用,则脚本会调整 VM 的大小。
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
若要调整 VM 的大小,需要安装最新的 Azure CLI,并且需要使用 az 登录1 登录到 Azure 帐户。
以下脚本会在调整大小之前检查所需的 VM 大小是否可用。 如果所需大小不可用,则脚本将退出并显示错误消息。 如果所需大小可用,则脚本会解除分配 VM、调整其大小,然后再次启动 VM。
将resourceGroup、vm和size的值替换为你自己的值。
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
使用Azure CLI调整可用性集中 VM 的大小
以下脚本设置变量 resourceGroup、 vm和 size。 然后,它通过使用 az vm list-vm-resize-options 检查所需的 VM 大小是否可用,并检查输出是否包含所需大小。 如果所需大小不可用,则脚本将退出并显示错误消息。 如果所需大小可用,则脚本会解除分配 VM、调整其大小,然后再次启动 VM。
将resourceGroup、vm和size的值替换为你自己的值。
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
若要在 Terraform 代码中调整 VM 的大小,请将 size 或 azurerm_linux_virtual_machine 资源块中的 azurerm_windows_virtual_machine 参数修改为所需的大小,然后运行 terraform plan -out main.tfplan 以查看将要进行的 VM 大小更改。 然后运行 terraform apply main.tfplan 应用更改,以调整 VM 大小。
此 Terraform 示例在使用创建原始虚拟机的状态文件时修改现有虚拟机的大小。 有关完整的 Terraform 代码,请参阅 Windows Terraform 快速入门。