VM を Azure から Azure Stack Hub に移動する

Azure で作成された仮想マシン (VM) から Azure Stack Hub インスタンスに仮想ハード ドライブ (VHD) をアップロードできます。

Azure から VHD を準備してダウンロードする

VHD を準備するときに、ニーズに合致するセクションを見つけます。

  • 記事「PowerShell を使用して特殊化されたディスクから Windows VM を作成する」の手順に従い VHD を準備します。
  • VM 拡張機能をデプロイするために、VM エージェント .msi が使用可能であることを確認します。
    詳細および手順については、「Azure 仮想マシン エージェントの概要」を参照してください。 VM を移動する前に、VM に拡張機能がインストールされていることを確認します。 VM エージェントが VHD に存在しない場合、拡張機能のデプロイは失敗します。 プロビジョニング中に OS プロファイルを設定したり、$vm.OSProfile.AllowExtensionOperations = $true を設定したりする必要はありません。

VHD を検証する

VHD をアップロードする前に、VHD が要件を満たしていることを確認する必要があります。 要件を満たしていない VHD は Azure Stack Hub に読み込むことができません。

  1. Hyper-V で検出された PowerShell モジュールを使用します。 Hyper-V をアクティブ化すると、サポートする PowerShell モジュールがインストールされます。 そのモジュールがあることを確認するには、管理者特権のプロンプトで PowerShell を開き、次のコマンドレットを実行します。

    Get-Command -Module hyper-v
    

    Hyper-V コマンドを使用できない場合は、「Hyper-V と Windows PowerShell の使用」を参照してください。

  2. マシン上の VHD へのパスを取得します。 次のコマンドレットを実行します。

    get-vhd <path-to-your-VHD>
    

    このコマンドレットは VHD オブジェクトを返し、次のような属性を表示します。

    ComputerName            : YOURMACHINENAME
    Path                    : <path-to-your-VHD>
    VhdFormat               : VHD
    VhdType                 : Fixed
    FileSize                : 68719477248
    Size                    : 68719476736
    MinimumSize             : 32212254720
    LogicalSectorSize       : 512
    PhysicalSectorSize      : 512
    BlockSize               : 0
    ParentPath              :
    DiskIdentifier          : 3C084D21-652A-4C0E-B2D1-63A8E8E64C0C
    FragmentationPercentage : 0
    Alignment               : 1
    Attached                : False
    DiskNumber              :
    IsPMEMCompatible        : False
    AddressAbstractionType  : None
    Number                  :
    
  3. VHD オブジェクトで、Azure Stack Hub の要件が満たされていることを確認します。

    また、Azure Stack Hub は、第 1 世代 (1) の VM からのイメージのみサポートします。

  4. VHD が Azure Stack Hub と互換性がない場合は、ソース イメージと Hyper-V に戻り、要件を満たす VHD を作成し、アップロードする必要があります。 アップロード プロセスでの破損の可能性を最小限に抑えるために、AzCopy を使用します。

VHD を修正する方法

お使いの VHD と Azure Stack Hub と の互換性を確保するために、次の要件を満たす必要があります。

VHD が固定型である

識別:get-vhd コマンドレットを使用して、VHD オブジェクトを取得します。
解決策:VHDX ファイルを VHD に変換し、容量可変ディスクを容量固定ディスクに変換することはできますが、VM の世代を変更することはできません。 Hyper-V マネージャーまたは PowerShell を使用してディスクを変換します。

VHD の最小仮想サイズが 20 MB 以上である

識別:get-vhd コマンドレットを使用して、VHD オブジェクトを取得します。
解決策:Hyper-V マネージャーまたは PowerShell を使用してディスクのサイズを変更します。

VHD がアラインされている

識別:get-vhd コマンドレットを使用して、VHD オブジェクトを取得します。
解決策:仮想サイズは 1 MB の倍数である必要があります。

ディスクの仮想サイズは、1 MiB にアラインする必要があります。 VHD に 1 MiB の端数がある場合は、1 MiB の倍数になるようにディスクのサイズを変更する必要があります。 MiB の端数があるディスクでは、アップロードした VHD からイメージを作成する際にエラーが発生します。 サイズを確認するには、PowerShell の Get-VHD コマンドレットを使用し、"Size" (Azure で 1 MiB の倍数である必要があります) と "FileSize" ("Size" に VHD フッターの 512 バイトを足した値に等しくなります) を表示します。

Hyper-V マネージャーまたは PowerShell を使用してディスクのサイズを変更します。

VHD BLOB の長さ

識別:get-vhd コマンドレットを使用して、Size を表示します。
解決策:VHD BLOB の長さ = 仮想サイズ + VHD フッターの長さ (512)。 BLOB 末尾の小さなフッターに、VHD のプロパティが記述されます。 Size は、Azure では 1 MiB の倍数である必要があり、FileSize は、Size に VHD フッターの 512 バイトを足した値に等しくなります。

Hyper-V マネージャーまたは PowerShell を使用してディスクのサイズを変更します。

第 1 世代の VM

識別:お使いの仮想マシンが第 1 世代であるかどうかを確認するには、Get-VM | Format-Table Name, Generation コマンドレットを使用します。
解決策:ハイパーバイザー (Hyper-V) で VM を再作成する必要があります。

ストレージ アカウントにアップロードする

ポータルを使用して、またはポータルで作成したコンテナーを使用して VHD をアップロードすること、AzCopy を使用することができます。

SAS URL を生成して VHD をアップロードするためのポータル

  1. Azure Stack Hub のユーザー ポータルにサインインします。

  2. [ストレージ アカウント] を選択し、既存のストレージ アカウントを選択するか、新しいストレージ アカウントを作成します。

  3. ストレージ アカウントの [ストレージ アカウント] ブレードで [BLOB] を選択します。 [コンテナー] を選択して、新しいコンテナーを作成します。

  4. コンテナーの名前を入力し、 [BLOB (BLOB 専用の匿名読み取りアクセスのみ)] を選択します。

  5. ポータルではなく AzCopy を使用してイメージをアップロードする場合は、SAS トークンを作成します。 ストレージ アカウントで [共有アクセス署名] を選択し、 [SAS と接続文字列を生成する] を選択します。 [Blob service の SAS URL] をコピーしてメモを作成します。 AzCopy を使用して VHD をアップロードするときに、この URL を使用します。

  6. コンテナーを選択し、 [アップロード] を選択します。 VHD をアップロードします。

VHD を AzCopy する

Azure Storage Explorer または AzCopy を使用すると、アップロード プロセスで VHD が破損する可能性が減少し、アップロードが高速になります。 次の手順では、Windows 10 コンピューターで AzCopy を使用します。 AzCopy は、ストレージ アカウント間の BLOB またはファイル コピーに利用できるコマンドライン ユーティリティです。

  1. AzCopy がインストールされていない場合はインストールしてください。 AzCopy をダウンロードして使用開始する手順については、記事「AzCopy を使ってみる」を参照してください。 バイナリを保存する場所をメモします。 AzCopy をパスに追加して、PowerShell コマンド ラインから使用できるようにします。

  2. PowerShell を開いて、シェルから AzCopy を使用します。

  3. AzCopy を使用して、ストレージ アカウントのコンテナーに VHD をアップロードします。

    set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09
    azcopy cp "/path/to/file.vhd" "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS] --blob-type=PageBlob
    

注意

1 つのファイルを仮想ディレクトリにアップロードする場合と同様の構文を使用して VHD をアップロードします。 --blob-type=PageBlob を追加して、VHD が ブロック ではなく既定で ページ BLOB としてアップロードされるようにします。

AzCopy とその他のストレージ ツールの使用の詳細については、「Azure Stack Hub Storage でのデータ転送ツールの使用」を参照してください。

VM の作成

カスタム イメージには、特殊化汎用化 の 2 つの形式があります。

  1. Azure Stack Hub のユーザー ポータルにサインインします。

    プラットフォーム ディスクを作成するクラウド オペレーターの場合は、プラットフォーム イメージの追加に関するページの手順に従って、管理者ポータルまたは管理者エンドポイントを使用して VHD を追加します。

  2. ユーザー ポータルで、 [すべてのサービス] > [ディスク] > [追加] の順に選択します。

  3. [マネージド ディスクの作成] で、以下を行います。

    1. イメージの 名前 を入力します。

    2. サブスクリプション を選択します。

    3. イメージを作成するか、イメージを リソース グループ に追加します。

    4. ASDK の 場所 (リージョンとも呼ばれます) を選択します。

    5. [アカウントの種類] を選択します。

      • Premium ディスク (SSD) の実体はソリッドステート ドライブであり、待ち時間の短い一貫したパフォーマンスが得られます。 価格とパフォーマンスのバランスにきわめて優れており、I/O 集中型のアプリケーションや運用環境のワークロードに最適です。
      • Standard ディスク (HDD) の実体は磁気ドライブであり、データへのアクセス頻度が低い用途に適しています。 ゾーン冗長ディスクの実体はゾーン冗長ストレージ (ZRS) です。ZRS では、データが複数のゾーンにレプリケートされ、1 つのゾーンがダウンしても可用性が保たれます。
    6. [ソースの種類][ストレージ BLOB] を選択します。 ストレージ アカウントで BLOB からディスクを作成しました。

    7. VHD ソースの場合、以下を選択します。

      1. ストレージ アカウントが配置されているソース サブスクリプション。
      2. [参照] を選択し、ご使用のストレージ アカウント、コンテナー、VHD の順に移動します。 [選択] を選択します。
      3. VHD に一致する OS の種類 を選択します。
    8. VHD のサイズ以上のディスク サイズ (GiB) を選択します。

    9. [作成] を選択します。

  4. ディスクが作成されたら、そのディスクを使用して新しい VM を作成できます。

次のステップ

Azure Stack Hub への VM の移動の概要