🔖
Azure VM の OS ディスクのサイズを変更する
TL;DR
- Azure VM の OS ディスクのサイズを Azure PowerShell を使って変更する
- 念のためスナップショットを取ってからサイズ変更を行う
-
Invoke-AzVMRunCommand
を覚えておくと、OS 内部の操作も自動化できるので便利です
はじめに
よくある話ではあるんですが、Azure VM の OS ディスクのサイズを変更する必要があったので、それを PowerShell でやってみたというメモです。
一応念のため、OS ディスクのスナップショットを取ってからサイズを変更するようにしています。
また、Azure Disk のサイズを変更するだけだと足りないので、Invoke-AzVMRunCommand
を使ってパーティションのサイズも変更しています。
extend-os-disk.ps1
# Set the name of the VM and the name of the resource group as variables
$vmName = "<VM name>"
$resourceGroupName = "<Resource group name>"
# Check the status of the VM
$vm = Get-AzVM -Name $vmName -ResourceGroupName $resourceGroupName -Status
if ($vm.Statuses[1].Code -eq "PowerState/running") {
Write-Output "The VM is already running."
} else {
# Retrieve information about the OS disk
$vm = Get-AzVM -Name $vmName -ResourceGroupName $resourceGroupName
$osDisk = Get-AzDisk -ResourceGroupName $resourceGroupName -DiskName $vm.StorageProfile.OsDisk.Name
# Take a snapshot of the OS disk
$snapshotConfig = New-AzSnapshotConfig -SourceUri $osDisk.Id -Location $osDisk.Location -CreateOption Copy
$snapshotName = "snap-" + $vmName + "-OSDisk-" + (Get-Date -Format "yyyyMMddHHmmss")
New-AzSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName
Write-Output "Snapshot of the OS disk has been taken."
# Update the size of the OS disk to 256GB
$osDisk.DiskSizeGB = 256
Update-AzDisk -Disk $osDisk -ResourceGroupName $resourceGroupName -DiskName $osDisk.Name
Write-Output "OS disk size has been updated to 256GB."
# Start the VM
Start-AzVM -Name $vmName -ResourceGroupName $resourceGroupName
Write-Output "The VM has been started."
# Extend the size of the C drive partition to the maximum available space
$commandId = "RunPowerShellScript"
$script = "Resize-Partition -DriveLetter C -Size (Get-PartitionSupportedSize -DriveLetter C).SizeMax"
Invoke-AzVMRunCommand -ResourceGroupName $resourceGroupName -VMName $vmName -CommandId $commandId -ScriptString $script
Write-Output "The partition size of the C drive has been extended to the maximum available space."
}
参考
Invoke-AzVMRunCommand
Discussion