はじめに
仮想マシンを Azure Backup でリストアすると、ディスク名が想定していたものと異なってしまいます。
- リストアした場合のデータディスクの名前
ディスクの種類 | 命名規則 |
---|---|
データディスク | <VM名>-datadisk-<lun 番号>-<yyyyMMdd-HHmmss> |
※<yyyyMMdd-HHmmss> = ディスクを復元した時の日時 (UTC)
Azure では、既存ディスクの名前を変更する機能もありませんし、リストア時にディスクの名前を指定することはできません。
ディスクの名前を変更するには、ディスクを再作成する必要があります。
マネージド ディスクまたはアンマネージド ディスクの名前を、作成後に変更できますか?
マネージド ディスクの名前を変更することはできません。 ただし、アンマネージド ディスクの場合は、現在 VHD または VM にアタッチされていなければ、名前を変更できます。
下記の記事では、Azure ポータルで仮想マシンのデータディスク (OS ディスク) の名前を変更する方法を紹介しています。
この投稿では、Azure PowerShell を用いたデータディスクの名前を変更する手順を記します。
なお、Windows 仮想マシンでも Linux 仮想マシンでも同じ手順となります。
概要
仮想マシンのデータディスクの名前を変更するために、以下の手順で行います。
- データディスクのコピーを新しい名前で作成する
- 元のデータディスクをデタッチする
- 新しいデータディスクをアタッチする
- デタッチした元のデータディスクを削除する
データディスクの名前を変更
0.事前準備
-
Import-Module
でAz.Accounts
とAz.Compute
モジュールをインポートします。 -
Connect-AzAccount
やSet-AzContext
を用いて、対象の Azure サブスクリプションに接続します。 - 対象の仮想マシン、対象のデータディスクの lun 番号と新しいデータディスクの名前を定義します。
# 対象 VM のリソースグループ名
$targetResourceGroupName = 'rg-202308'
# 対象 VM 名
$targetVMName = 'vm-202308'
# 対象データディスクの lun 番号
$targetLunNo = 0
# 新しいデータディスクの名前
$newDataDiskName = 'vm-202308-DataDisk_0'
1.データディスクのコピーを新しい名前で作成する
対象の仮想マシンにアタッチされている対象のデータディスクを、新しいデータディスクの名前で複製します。
# 対象 VM のプロパティを取得
$targetVM = Get-AzVM -Name $targetVMName `
-ResourceGroupName $targetResourceGroupName
# 対象のデータディスクを特定
$sourceDataDiskProfile = $targetVM.StorageProfile.DataDisks `
| Where-Object { $_.Lun -eq $targetLunNo }
# 対象のデータディスクが存在しない場合は終了
if ($null -eq $sourceDataDiskProfile) {
Write-Host "The Data Disk LUN Number $targetLunNo does not exist."
Exit
}
# 対象のデータディスクのプロパティを取得
$sourceDataDisk = Get-AzDisk -DiskName $sourceDataDiskProfile.Name `
-ResourceGroupName $targetResourceGroupName
# OS ディスク構成を作成
$dataDiskConfig = New-AzDiskConfig -SkuName $sourceDataDisk.Sku.Name `
-Location $sourceDataDisk.Location `
-DiskSizeGB $sourceDataDisk.DiskSizeGB `
-SourceResourceId $sourceDataDisk.Id `
-CreateOption Copy
# 可用性ゾーンは別途設定
if ($sourceDataDisk.Zones.Count -gt 0) {
$dataDiskConfig.Zones = $sourceDataDisk.Zones
}
# 新しいデータディスクを作成
$newDataDisk = New-AzDisk -Disk $dataDiskConfig `
-DiskName $newDataDiskName `
-ResourceGroupName $targetResourceGroupName
2.元のデータディスクをデタッチする
対象の仮想マシンにアタッチされている元 (対象) のデータディスクをデタッチします。
# 対象 VM から元のデータディスクをデタッチ
Remove-AzVMDataDisk -VM $targetVM `
-Name $sourceDataDisk.Name
# 対象 VM を更新
Update-AzVM -VM $targetVM `
-ResourceGroupName $targetResourceGroupName
3.新しいデータディスクをアタッチする
対象の仮想マシンに新しいデータディスクをアタッチします。
# 対象 VM に新しいデータディスクをアタッチ
if ($sourceDataDiskProfile.Caching -like 'None') {
# ホストキャッシュ無
Add-AzVMDataDisk -VM $targetVM `
-ManagedDiskId $newDataDisk.Id `
-Lun $targetLunNo `
-Name $newDataDiskName `
-CreateOption Attach
} else {
# ホストキャッシュ有
Add-AzVMDataDisk -VM $targetVM `
-Caching $sourceDataDiskProfile.Caching `
-ManagedDiskId $newDataDisk.Id `
-Lun $targetLunNo `
-Name $newDataDiskName `
-CreateOption Attach
}
# 対象 VM を更新
Update-AzVM -VM $targetVM `
-ResourceGroupName $targetResourceGroupName
4.デタッチした元のデータディスクを削除する
この時点で、デタッチした元のデータディスクは不要なので、削除します。
# 元のデータディスクを削除
Remove-AzDisk -DiskName $sourceDataDisk.Name `
-ResourceGroupName $targetResourceGroupName -Force
実行結果を確認
Azure ポータルを確認すると、対象の仮想マシンに新しい名前のデータディスクがアタッチされていました。
同様に OS ディスクの名前を変更したい場合は、前回の投稿をご覧いただければと思います。
参考文献
Rename Azure VM Data Disks - CHARBEL NEMNOM - MVP | MCT | CCSP | CISM - Cloud & CyberSecurity