新しい VM イメージの発表
このポストは、4 月 14 日に投稿された VM Image の翻訳です。
皆様にとっておきのお知らせです。Microsoft Azure ランタイムの最新リリースで、OS イメージの後継機能として新たに VM イメージのエンティティが導入されました。もしかすると、この情報に既に聞き覚えのある方もいらっしゃるかも知れません。というのは、この機能は、サンフランシスコで先日開催された //build カンファレンス (英語) で取り上げられた最新情報の 1 つだからです。エンジニアリング チームは、この新しいエンティティのリリースに全力で取り組んできました。今回は、この機能の内容、使用方法、そして実践的な活用例についてご説明します。
VM イメージとは、簡単に表すと、Microsoft Azure 仮想マシンで使用する包括的なイメージです。機能が強化されたこの新しい VM イメージには、OS ディスクとすべてのデータ ディスクを含む仮想マシンのストレージが包含されています。このイメージは、再利用可能なユニットとして VM をデプロイするために必要なディスクのプロパティ (ホストのキャッシュなど) を取得します。OS イメージと同じく、VM イメージは、Azure ストレージにページ BLOB として格納されている VHD のセット (VHD は各ディスクに 1 つ) を指定するポインターとメタデータの集合です。
ここまで読んでお気付きになったかと思いますが、そのとおり、VM イメージと OS イメージは実によく似ています。VM イメージが Generalized OS を含む VHD を 1 つだけ持つ場合、皆様がよくご存知の OS イメージと基本的に同じです。今後、VM イメージが Microsoft Azure 仮想マシンの主要なイメージとして使用されていくことになるでしょう。
VM イメージには Generalized イメージと Specialized イメージの 2 種類があり、それぞれ固有の役割があります。Generalized VM イメージ (sysprep 済み VM イメージ) には OS ディスクが含まれていますが、その名前のとおり、これは Generalized されたもの (Windows の場合は Sysprep コマンドを実行後、Linux の場合は ‘waagent –deprovision’ を実行後) で、デプロイ時にプロビジョニングする必要があります。現行の OS イメージは Generalized なものです。このタイプの VM イメージは、フロントエンドを運用環境のアプリケーションに合わせてスケール アウトする場合や、類似の開発環境やテスト環境を迅速に作成してすぐに解体する場合など、類似した仮想マシンを迅速に作成する場合の「モデル」として使用されます。
Specialized VM イメージ (sysprep されていない VM イメージ) にも OS ディスクが含まれていますが、これはプロビジョニング済みのものです。現行の「すぐに使用可能な」ディスクと似ていますが、ディスクとは異なり、VM イメージの VHD は読み取り専用で、新しい仮想マシンをデプロイするときにコピーされます。Specialized VM イメージは既知の正常な時点の VM をデプロイするための「スナップショット」として使用するもので、失敗すると仮想マシンを破壊する恐れのあるタスクを実行する前に、開発者のマシンでチェックポイントを作成する場合などに便利です。これは、Windows が Sysprep でイメージを複製する場合に必要な、同一の仮想ネットワーク内に同一の仮想マシンのクローンを複数作成するためのメカニズムとは異なります。
VM イメージの作成方法
仮想マシンのセットアップと構成が完了したら、そのインスタンスを VM イメージとしてキャプチャできるようになります。キャプチャ処理の実行中に、仮想マシンとディスクに関連するプロパティはすべて保存され、バックアップ用の VHD のページ BLOB のコピーが作成されます。VHD のコピーは、それぞれコピー元の VHD と同じストレージ アカウントとコンテナーに格納されます。コピーされた VHD には、OS の VHD の場合は <VM イメージ名>-os-YYYY-MM-DD<-ZZ>、コピーされたデータ VHD の場合は <VM イメージ名>-datadisk-<Lun>-YYYY-MM-DD(-ZZ) という命名規則が適用されていますので、ご興味のある方は Azure ストレージのページ BLOB を検索してください。日付は VM イメージがキャプチャされた時点のもの、-ZZ は競合が発生する場合にのみ名前を一意にするために追加される番号です。キャプチャ実行時にはインメモリの状態は保存されないため、現行の Microsoft Azure のバックアップと復元オプションの代わりには使用できません。バックアップと復元オプションの詳細については、https://msdn.microsoft.com/library/azure/jj573031.aspx をご覧ください。
OS が Generalized またはプロビジョニング解除されている場合、VM イメージとしてキャプチャするには仮想マシンをシャットダウンする必要があります。VM が VM イメージとしてキャプチャされた後、この仮想マシンは自動的に削除されます。OS が Specialized されている場合、仮想マシンは実行中であるかシャットダウンされているかにかかわらずキャプチャを実行できます。また、キャプチャされた仮想マシンは、そのまま保持されます。ただし、アプリケーションの整合性保持や複数ディスクにまたがるキャプチャが必要な場合は、VM イメージのキャプチャを実行する前に仮想マシンをシャットダウンすることを推奨します。
VM イメージの使用方法
VM イメージは、新規デプロイ実行時や既存のデプロイメントで仮想マシンを作成するときに使用できます。新しい VM をデプロイする場合、仮想マシンと VM イメージの場所が同じであることが必要で、手順は VM イメージの名前を決定するだけです。Generalized VM イメージを使用する場合は、現行の OS イメージの場合と同様に、プロビジョニング情報とネットワーク構成も指定する必要があります。仮想マシンのデプロイが完了した後は、OS イメージや OS ディスクから作成された VM と同じように動作します。また、ロールの更新、追加ディスクのアタッチ、既存のディスクのデタッチが可能です。
Specialized VM イメージを使用する場合は、現行の OS イメージの場合と同様に、プロビジョニング情報は不要です。VM イメージから仮想マシンをデプロイする場合、新しい VM で使用する VHD のコピーが作成されます。このため、既存の VHD が直接アタッチされることはありません。プロビジョニングが不要なため、Specialized VM イメージから仮想マシンをデプロイすると、VM は瞬時に作成されてすぐに実行状態になっているように見えます。しかし、仮想マシンはまだ起動中である場合があるため、SSH によるリモート デスクトップが使用可能になるまでには数分間かかります。仮想マシンのデプロイが完了し、実行状態になった後は、OS イメージや OS ディスクから作成された VM と同じように動作します。ただし、実行中の VM からキャプチャした Specialized Windows VM イメージから新たに仮想マシンをデプロイした場合、新しくデプロイした VM にリモート デスクトップで初めてアクセスしたときに、VM が適切にシャットダウンされなかったことを示すダイアログ ボックスがポップアップ表示される場合があるので、注意してください。
PowerShell
VM イメージに興味をお持ちいただき、ご利用を開始していただけるように、VM イメージの作成方法や使用方法を示す PowerShell のスニペットをいくつかご紹介します。この内容では不足であるとお感じの方は、近日中に仮想イメージと PowerShell に関する包括的なハウツー記事を公開しますので、こちらをお待ちください。
Save-AzureVMImage
次に示すのは、Save-AzureVMImage というコマンドレットを実行して、‘myVMToCapture’ という名前の既存の仮想マシンの VM イメージをキャプチャし、‘myAwesomeVMImage’ という名前を設定する場合の例です。
ここで注目していただきたいのは、このコマンドレットは、VM を OS イメージとしてキャプチャする場合に使用するものと同じである点です。ただし、VM を OS イメージとしてキャプチャするか、VM イメージとしてキャプチャするかは、今後、追加パラメーターの設定で判断されます。今回追加された OSState パラメーターは、VM イメージをキャプチャする場合に必須のパラメーターです。
Get-AzureVMImage
イメージ リポジトリですべての VM イメージのリストを作成する場合は、Get-AzureVMImage というコマンドレットを実行します。
このコマンドレットを実行すると、OS イメージと VM イメージの両方を含むリストが返されます。このとき、OS イメージがリストの最初に、VM イメージがその後に表示されます。
VM イメージのみのリストを作成する場合は、OS イメージでは必ず null になるいくつかのプロパティを使用してフィルタリングすると、OS イメージを除外できます。
New-AzureVMImage
次に示すのは、‘myAwesomeVMImage’ という名前の VM イメージを使用して仮想マシンを米国西部にデプロイする場合の例です。