🔖

Azure VM の OS ディスクのサイズを変更する

2024/02/18に公開

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

https://learn.microsoft.com/powershell/module/az.compute/invoke-azvmruncommand?wt.mc_id=MVP_391314

Discussion