かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  vol.177 Azure MigrateによるVM移行ーVHDの最適化|Windows Server 2016 EOSまであと334日

 

 

vol.177 Azure MigrateによるVM移行ーVHDの最適化|Windows Server 2016 EOSまであと334日

2026年02月12日配信
執筆者:山内 和朗

 Windows Server 2016の製品ライフサイクルとサポート終了日(End of LifeCycle《EOL》、End of Support《EOS》)である2027年1月12日までのカウントダウンが進んでいます。この連載シリーズのテーマの1つはAzureへの移行です。前回から「Azure Migrate」を使用したオンプレミスのHyper-V仮想マシン(VM)のAzure VMへの移行を進めています。前回は、Azureへの移行前にHyper-V VMのWindowsおよびLinuゲストをAzure向けに準備する方法を説明しました。今回は仮想ハードディスク(VHD/VHDX)の最適化を行います。Windows VMを例に説明します。

 

アップロード時間短縮のためにVMのディスク使用を最適化する

 

 Azure VMの仮想ハードディスクは、容量固定のVHDです。だからといって、アップロード用にVHDを準備するのとは異なり、移行元のHyper-V VMの仮想ハードディスクの種類を容量固定のVHDにする必要はありません。パフォーマンスや効率性に優れた容量可変のVHDXで全く問題がありません。

 Azure Migrateでは、Hyper-V VMのスナップショットが作成され、初期レプリケーションでAzureのストレージにVMのディスクイメージ全体がアップロードされます。その後変更が追跡され、差分のディスク変更が定期的にアップロードされます。その背後ではWindows ServerのHyper-Vレプリカの技術と、Azure Site Recoveryのサービスが使用されています。このディスクイメージのアップロードはブロックレベルで行われるため、移行元の仮想ハードディスクの形式や種類には依存しません。アップロードされたディスクイメージは、最終的に、移行時(Azure VMのデプロイ時)にManaged Diskとして容量固定VHDが作成されます。

Hyper-V レプリケーションのしくみはどのように機能しますか?|Azure(Microsoft Learn)

 アップロード時の使用帯域と時間を効率化するためには、Hyper-VのVMのゲストOSのディスク使用を最適化しておくことが重要です。Windows VMであれば、ディスククリーンアップ(cleanmgr.exe、Windows Serverデスクトップエクスペリエンスの場合)を使用してシステムファイルのクリーンアップを実行したり、次のコマンドラインを実行して、使用していないWinSxSコンポーネントストアをクリーンアップします。なお、/Resetbaseパラメーターを付けると、これまでインストールされたWindowsの品質更新プログラムがアンインストールできなくなるため、アンインストールの可能性を残したい場合は/Resetbaseパラメーターを付けないでください。

 

DISM /Online /Cleanup-Image /StartComponentCleanup /Resetbase

 

画面1 DISMコマンドを実行してWinSxSコンポーネントストアをクリーンアップし、ディスク領域を解放する

画面1 DISMコマンドを実行してWinSxSコンポーネントストアをクリーンアップし、ディスク領域を解放する

 

移行後のストレージコスト節約のため、割り当てサイズを縮小する

 

 Managed Diskの容量固定VHDは、ディスクのプロビジョニングされた容量に基づいて課金されます(画面2)。Hyper-V VMのVHD/VHDXの既定のサイズは127GBですが、OSディスクとしては大きすぎる割り当ての場合があります。極端に使用量が増加することのないOSディスクの場合、十分な空き領域を考慮に入れたうえで、Managed Diskの特定サイズ(32GB《P4/E4/S4》、64GB《P6/E6/S6》、128GB《P10/E10/S6》など)に収まるようにすると、無駄な課金を回避できます。例えば、Windows Server Server CoreインストールであればOSディスクは30GB程度で十分でしょう。

画面2 Premium SSDのサイズと価格-Managed Disks の価格|Azure(Microsoft)

画面2 Premium SSDのサイズと価格-Managed Disks の価格|Azure(Microsoft)

 Windows VMの場合は「ディスクの管理」スナップイン(Diskmgmt.msc)を使用して、十分な空き領域(例えばディスクの20~30%またはGB)を考慮してC:ドライブのパーティションを縮小します。その後、「Hyper-Vマネージャー」の「ディスクの編集」を使用してVHD/VHDXを縮小します(画面3、画面4、画面5)。

 

vol177_scr03
画面3 「ディスクの管理」スナップインを使用してC:ドライブのパーティションを縮小する

 

画面4 「Hyper-Vマネージャー」の「ディスクの編集」を使用してVHD/VHDXのサイズを縮小する
画面4 「Hyper-Vマネージャー」の「ディスクの編集」を使用してVHD/VHDXのサイズを縮小する

 Server Coreの場合は、DISKPARTコマンドを使用してC:ドライブのパーティションを縮小(SHRINK)します。また、VMを停止して、Hyper-VホストにVMのVHD/VHDXをローカルマウントすれば、「ディスクの管理」スナップイン使用して縮小できます。縮小後、VHD/VHDXを切断すれば完了です(画面5)。

 

DISKPART
DISKPART> LIST DISK
DISKPART> SELECT DISK ディスク番号
DISKPART> LIST VOLUME
DISKPART> SELECT VOLUME ボリューム番号
DISKPART> SHRINK QUERYMAX
DISKPART> SHRINK DESIRED=縮小したいMB
DISKPART> EXIT

 

vol177_scr05
画面5 Server Coreの場合はHyper-VホストにVHD/VHDXをマウントし、「ディスクの管理」スナップインでパーティションを縮小後、VHD/VHDXを切断する

 なお、ゲストOSがWindows Server 2022以降の場合、回復パーティションがディスクの最後尾に配置されます。この回復パーティションの存在によって、大きくディスクサイズを縮小することができません。その場合は、Windows回復環境(WinRE)の登録を削除したうえで、回復パーティションを削除し、その後、C:ドライブのパーティションを縮小します(画面6)。Azure VMには、回復パーティションはあっても使用されることがないため(ローカルコンソールに対話できないため)、削除しても問題はありません。回復パーティションは「ディスクの管理」スナップインでは削除できないため、DISKPARTコマンドを使用して削除します。

 

DISKPART
DISKPART> LIST DISK
DISKPART> SELECT DISK ディスク番号
DISKPART> LIST PARTITION
DISKPART> SELECT PARTITION パーティション番号
DISKPART> DELETE PARTION OVERRIDE
DISKPART> EXIT

 

画面6 回復パーティションが最後尾にある場合は、WinREを無効にし(reagentc /disable)、回復パーティションを削除してから、C:ドライブのパーティションを縮小する
画面6 回復パーティションが最後尾にある場合は、WinREを無効にし(reagentc /disable)、回復パーティションを削除してから、C:ドライブのパーティションを縮小する

 Linuxのパーティションサイズの縮小については、詳しくないので知りたい人はご自身が使用しているLinuxディストリビューションについて調べて実施してください。今回はあらかじめ30GBのディスク(VHDX)を割り当てたVMにLinuxをインストールしてあります。

 Linux VMの場合、次のようなことが思いつきますが、実はあまりこの辺のところ詳しくありません。

 

  • 古いカーネルの削除

  • ログや一時ファイルの削減

  • 不要なパッケージやサービスの削除

  • パーティションサイズの縮小

    など

シーズン1目次Windows Server 2016 EOSまであとX日 シーズン2(1)(2)(3)(4)(5)(6)(7)(8)(9)|(10)

blog_yamanxworld_subscribe

blog_yamanxworld_comment

blog_yamanxworld_WP_ws2025

最新記事