LoginSignup
0
0

Azure PowerShell で既存の仮想マシンのデータディスクの名前を変更する

Last updated at Posted at 2023-10-11

はじめに

仮想マシンを Azure Backup でリストアすると、ディスク名が想定していたものと異なってしまいます。

image.png

  • リストアした場合のデータディスクの名前
ディスクの種類 命名規則
データディスク <VM名>-datadisk-<lun 番号>-<yyyyMMdd-HHmmss>

※<yyyyMMdd-HHmmss> = ディスクを復元した時の日時 (UTC)

Azure では、既存ディスクの名前を変更する機能もありませんし、リストア時にディスクの名前を指定することはできません。

ディスクの名前を変更するには、ディスクを再作成する必要があります。

マネージド ディスクまたはアンマネージド ディスクの名前を、作成後に変更できますか?

マネージド ディスクの名前を変更することはできません。 ただし、アンマネージド ディスクの場合は、現在 VHD または VM にアタッチされていなければ、名前を変更できます。

下記の記事では、Azure ポータルで仮想マシンのデータディスク (OS ディスク) の名前を変更する方法を紹介しています。

この投稿では、Azure PowerShell を用いたデータディスクの名前を変更する手順を記します。
なお、Windows 仮想マシンでも Linux 仮想マシンでも同じ手順となります。

概要

仮想マシンのデータディスクの名前を変更するために、以下の手順で行います。

  1. データディスクのコピーを新しい名前で作成する
  2. 元のデータディスクをデタッチする
  3. 新しいデータディスクをアタッチする
  4. デタッチした元のデータディスクを削除する

データディスクの名前を変更

0.事前準備

  • Import-ModuleAz.AccountsAz.Compute モジュールをインポートします。
  • Connect-AzAccountSet-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 ポータルを確認すると、対象の仮想マシンに新しい名前のデータディスクがアタッチされていました。

image.png

同様に OS ディスクの名前を変更したい場合は、前回の投稿をご覧いただければと思います。

参考文献

Rename Azure VM Data Disks - CHARBEL NEMNOM - MVP | MCT | CCSP | CISM - Cloud & CyberSecurity

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0