汎用化 VM をオンプレミスから Azure Stack Hub に移動する

注意事項

この記事では、サポート終了 (EOL) 状態に近い Linux ディストリビューションである CentOS について説明します。 使用を検討し、それに応じて計画してください。 詳細については、 CentOS の終了に関するガイダンスを参照してください。

オンプレミス環境から仮想マシン (VM) イメージを追加できます。 イメージを仮想ハード ディスク (VHD) として作成し、そのイメージを Azure Stack Hub インスタンスのストレージ アカウントにアップロードできます。 その VHD から VM を作成できます。

汎用化ディスク イメージとは、ユーザー アカウントなどの固有の情報を削除するために Sysprep を使用して準備されたもので、これを再利用して複数の VM を作成することができます。 Azure Stack Hub クラウド オペレーターが Marketplace 項目として使用するイメージを作成する場合は、汎用化 VHD が適しています。

イメージを移動する方法

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

VHD をアップロードする前に、「Azure にアップロードする Windows VHD または VHDX を準備する」の手順に従って正しく汎用化してください。 Azure Stack Hub には VHD を使用する必要があります。

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
    

Note

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

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

Azure Stack Hub でイメージを作成する

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

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

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

  3. [イメージの作成] で、以下を行います。

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

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

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

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

    5. イメージに一致する OS の種類を選択します。

    6. [参照] を選択し、[ストレージ アカウント]、[コンテナー]、[VHD] の順に移動します。 [選択] を選択します。

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

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

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

  4. イメージが作成されたら、そのイメージを使用して新しい VM を作成します。

次のステップ

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