пятница, 8 ноября 2019 г.

RESIZE VM DISK IN AZURE

Resize unmanaged OS disk

With PowerShell script:
Connect-AzureRmAccount 

#Variables
$rgName = "Resource Group Name" 
$vmName = "Virtual Machine Name" 
$newsize = "New size of disk" 

#Get azure vm configuration
$vm = Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName

#stop vm
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force

#resize vm osdisk and update vm configuration
$vm.StorageProfile.OSDisk.DiskSizeGB = $newsize
Update-AzureRmVM -ResourceGroupName $rgName -VM $vm

#start vm
Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName

Resize managed OS disk

With PowerShell script:
Connect-AzureRmAccount 

#Variables
$rgName = "Resource Group Name" 
$vmName = "Virtual Machine Name" 
$newsize = "New size of disk" 

#Get azure vm configuration
$vm = Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName

#stop vm
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force

#resize vm osdisk and update vm configuration
$disk= Get-AzureRmDisk -ResourceGroupName $rgName -DiskName $vm.StorageProfile.OsDisk.Name
$disk.DiskSizeGB = $newsize
Update-AzureRmDisk -ResourceGroupName $rgName -Disk $disk -DiskName $disk.Name

#start vm
Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName

Resize unmanaged OS disk and convert to managed and expand local disk in Windows

Script

#Connect to azure

Connect-AzureRmAccount 

#Variables
$rgName = "RG01" 
$vmName = "vmwin" 
$addnewsize = "40" 

#Get azure vm config
$vm = Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName

#stop vm
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force

#get new size
$newsize=$vm.StorageProfile.OsDisk.DiskSizeGB + $addnewsize

$vm.StorageProfile.OSDisk.DiskSizeGB = $newsize
Update-AzureRmVM -ResourceGroupName $rgName -VM $vm

#get storage account name
$storageAccountName = $vm.StorageProfile.OsDisk.Vhd.Uri.Split("/")[2].Split(".")[0]
$context = New-AzureStorageContext –StorageAccountName $storageAccountName -StorageAccountKey (Get-AzureRmStorageAccountKey -ResourceGroupName $rgName -Name $storageAccountName)[0].Value

#get name of vhd disk and name of conainer
# if URI like : https://rg01disks977.blob.core.windows.net/vhds/vm.vhd
$vhdname=$vm.StorageProfile.OsDisk.Vhd.Uri.Split("/")[4]
$containername=$vm.StorageProfile.OsDisk.Vhd.Uri.Split("/")[3]

#convert to managed disk 
ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vmName

#remove old vhd file
Remove-AzureStorageBlob -Container $containername -Blob $vhdname -Context $context

#####if disk not resized before converted, then:
#Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
#$vm = Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName
#$disk= Get-AzureRmDisk -ResourceGroupName $rgName -DiskName $vm.StorageProfile.OsDisk.Name
#$disk.DiskSizeGB = $newsize
#Update-AzureRmDisk -ResourceGroupName $rgName -Disk $disk -DiskName $disk.Name
#Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName

# Resize local disk in Windows
Invoke-AzureRmVMRunCommand -ResourceGroupName $rgName -Name $vmName -CommandId 'RunPowerShellScript' -ScriptPath '.\resize.ps1'

For Windows OS you will need extend disk via Disk Management Util

resize.ps1


Resize-Partition -DriveLetter c -Size (Get-PartitionSupportedSize -DriveLetter c).sizeMax

Комментариев нет: