AzureVMの Unmanaged Disk を Managed Disk に変換する

概要

最近AzureにManaged Diskというものが追加されました。Azure Premium and Standard Managed Disks Overview | Microsoft Docs
今まではAzure仮想マシンを作成する際にはそのDisk(VHD)を保持しておくためのストレージアカウントを作成する必要がありました。このストレージの管理をAzure側で任せることによって仮想マシンの用途に限りストレージアカウントを作成する必要がなくなりました。
今回は今まで作成した仮想マシンの非管理対象Disk(Unmanaged Disk)を管理対象Disk(managed Disk)に変換してみます。
※ ちなみに今回の仮想マシンのデプロイメントモデルはResource Managerです。

ストレージアカウントは悩ましい

ストレージアカウントの種類

今現在ストレージアカウントの種類は2種類あります。汎用Blobストレージアカウント です。汎用 は4種類ストレージ(BLOB,Page,File,Queue)がセットになっていて、 Blobストレージアカウント はその名の通りBlobストレージに特化したものです。
仮想マシンのようなVHDを使用する場合はBlobストレージ(ページBLOB)なので Blobストレージアカウント を選択すればよいかと思いきや、Blobストレージアカウント はページBLOBを含まないので 汎用 を選択する必要があります。分かりにくいですよねぇ、奥さん。

ストレージアカウントのネーミング

ストレージアカウント名はそのままエンドポイントとなるのでグローバル環境において一意である必要があります。仮想マシンのDisk用途だけに限ってしまえば、エンドポイントを利用するVHDを接続する場合に限られるので、あまり名前に拘る必要はないのですが、デタラメな名前をつけるとあとで後悔しそうな気がします。わかりますその気持ち。

私は置き場所に失敗した

仮想マシンを作成する際にストレージアカウントを選択するのですが、一度作成したストレージアカウントを利用していました。しかしデータディスクを追加する時に気づきました。下図になっていることに。

screenshot.1487920528

リソースグループを跨いでしまっていました。動作上は問題なくデータディスクの追加も問題ないのですが、管理上というか精神衛生的によくない。そして編集などのオペレーションが怖い。何か特別な理由がない限りはリソースグループ単位でストレージアカウントを作成するべきだと思いました。

いかがでしょうか、ストレージアカウント悩ましくないでしょうか? 悩ましいですよね。いや、悩ましい。
ということでこれらのDiskを新しく追加された機能である Managed Diskに変換してみようと思います。

Unmanaged Disk から Managed Disk へ変換する

では実際にUnmanaged Disk から Managed Disk へ変換してみます。

screenshot.1487921511

ドキュメントを確認すると、Azure Resource Manager Cmdletsの ConvertTo-AzureRmVMManagedDisk で変換できるみたいですので、PowerShellから実際に変換してみました。私のクライアントはWindows10から実施しています。

まず事前に、AzureRM モジュールのインストールしておきます。こちらのURLを参考にして下さい。(私はPowerShell Galleryからインストールしました。)
Azure PowerShell 1.3.0: PowerShell Gallery からのインストールを強化 – IT プロフェッショナルのみなさまへ

Login-AzureRmAccount でAzureにログインします。

screenshot.1487915356

コマンドの入力を楽にする為に変数を定義しておきます。
rgName にリソースグループ名
vmName に仮想マシン名
を入力します。

screenshot.1487915448

Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName 仮想マシンを停止します。(仮想マシンを停止する前に運用に則ってゲストOSを停止しておくことをオススメします。)
下図は3秒で停止したというわけではなく、停止していた。の図です。

screenshot.1487915572

実行前にDisk名を確認しておきます。Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName
OSディスクは確認できないようですが、データディスクは確認できます。

screenshot.1487929281

念のため、Azureポータル上とStorage Explorer上から確認しておきます。こちらはOSディスクが確認できますね。

screenshot.1487915724

screenshot.1487916066

ではDiskを変換しますが、意外とあっさり終わりました。
コマンドは ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vmName です。

screenshot.1487917084

変換後のDiskを確認

まずリソースグループを確認するとDiskリソースが増えています。どうやらprefixとして仮想マシン名が付与されたようです。

screenshot.1487928903

Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName で確認するとDisk名が変わっていました。

screenshot.1487929261

ちなみに今回利用した仮想マシンのデータディスクはext4 ファイルシステムとしてゲストOSからマウントしていました。更に/ets/fstab にデバイスのUUID値を使用していましたが、実際のデバイスのUUID値に変更はなかった為、/ets/fstab の修正も必要ありませんでした。

不要になった Unmanaged Disk を削除する

なかなか怖い作業ではありますが、思い切って削除します。事前にポータルから仮想マシンで使っているVHDではないということを確認しておきます。画面ショットを忘れてしまったのですが、Azure Storage Explorer上から確認すると、仮想マシンに紐付いていないVHDの場合は鍵マークがなくなっていました。

削除対象は拡張子が .vhd のものです。
※ 拡張子が .status はステータスオブジェクトと言われるものらしいのですが、削除してはいけないようです。これは今後の課題とドキュメントに記載されていますので注意して下さい。

screenshot.1487931336

OSディスクを削除

screenshot.1487931369

続いてデータディスクを削除

screenshot.1487931391

問題なく削除できました。Azure Storage Explorer上から確認しても削除されたことが確認できました。

screenshot.1487919259

最後にストレージアカウントを削除といきたいところだったのですが、前述の不良債権(私は置き場所に失敗した) がたくさんあるので暫くははスキをみてはConvertするという作業を繰り返していこうと思います。進展ありましたらこちらを更新します。

まとめ

以上でAzureVMの Unmanaged Disk を Managed Disk に変換する作業は終了です。実際この作業はなかなか危険な作業ですので事前にバックアップやテストを実施の上実行することをオススメします。可用性セットのDisk変換についても以下のURLに記載されていますのでご参考にどうぞ

Convert a VM from unmanaged to managed Disk - Azure | Microsoft Docs

Be the first to comment

コメント投稿

Your email address will not be published.


*