SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

差分 VHD を使用して VM Role の Sysprep を実行

leave a comment

VM Role の Traning Kit に差分 VHD を使用した VM Role のイメージ更新のハンズオンが掲載されています。

今回はの手順を使用して、Sysprep を適用した差分 VHD による VM Role のイメージ管理についてまとめていきたいと思います。

■VM Role に VHD をアップする際の設定


VM Role に VHD をアップする際には以下の作業が必要となります。

  • VM Role 用統合コンポーネントのインストール
  • Sysprep 実行済み

VM Role 用統合コンポーネントは VM Role でゲスト OS を実行する際に必要となるモジュール群がインストールされます。
Sysprep については手持ちの物理環境の Hyper-V 上で稼働させていたゲスト OS を Azure 上のインスタンスとして別のハードウェア環境で動作させるための汎用化作業として必要となります。
余談ですが、私が起動していた VM Role のインスタンスの CPU は [Quad-Core AMD Opteron(tm) Processor 2373 EE、2100 Mhz、1 個のコア、1 個のロジカル プロセッサ] でした。

■ベース VHD で Sysprep を実行した場合


差分 VHD を使用しないでベース VHD で Sysprep を実行することもできます。
Sysprep を実行したベース VHD に変更をする必要が発生した場合のメンテナンスを考えてみます。

image

おそらくこのような作業の流れになると思います。
VHD をアップロードする前には、Sysprep をした状態にする必要がありますので、変更作業を実施する前には、Sysyprep による初期化が実行されます。
作業が終了したら再度 Sysprep を実行してシャットダウン状態とする必要があります。

Sysyprep を実行する前は、[残りの Windows 猶予期限リセット可能回数][3] となっています。
image

Sysprep を実行することで、ライセンス認証クロックがリセットされ、リセット可能回数が [2] となっています。
image

リセット可能回数が [0] となると Sysprep を実行することができなくなります。
そのため、ベース VHD に Sysprep を実行した状態管理をすると [3 回まで] しか Sysprep を実行することができません。
# 応答ファイルに SkipRearm を設定することで、ライセンス認証クロックのリセットはスキップできますが。

■差分 VHD を使用した Sysprep の実行


Sysprep 実行前の VHD をコピーしてマスターとして取得しておくことで、ベースイメージを変更していくこともできますが、差分 VHD を使用することでも Sysprep を実行することが可能です。

検証で使用している VM Role の VM Images はこのような形で構成をしています。

image

image

内容としてはこのようになります。

親ディスクとなるベースイメージの VHD では Sysprep を実行していない状態で VHD をアップロードしています。
差分ディスクの VHD で Sysprep を実行しています。

この環境の場合、VHD を変更する必要が発生した場合以下のパターンでメンテナンスをすることができるかと思います。
# 削除するタイミングはアップの前のどこかでよいですが。

image

[パターン 1] は大きな変更をする際にベース VHD から変更してしまうパターンですね。
アップロードしているベース VHD は Sysprep をしていない状態ですので、アップロード前の VHD を起動 → 変更、差分 VHD で Sysprep をして展開するという方法です。
この場合、ベース VHD は十数 GB になっていると思いますので、アップロードをするまでに結構時間がかかると思います。

 

[パターン 2] は変更を新規に差分 VHD を作成して実行するパターンになります。
このパターンの場合もベース VHD には Sysprep をしていない状態ですので、ベース VHD に対しての差分 VHD を作成して、差分 VHD を変更 → 差分 VHD で Sysprep をして展開するという方法になります。
変更の量にも依存すると思いますが、少量の変更であればかなり早くアップロードができます。

 

■多階層の差分 VHD について


差分 VHD ですが、

  • [親] ← [差分]

という構成はできるのですが、

  • [親] ← [差分] ← [差分]

という構成はできませんでした。

差分ディスクの差分ディスクを作成してアップしたのちに、[Set-Parent] を実行したところ、以下のエラーになりました。

A parameter was incorrect. Details: The image jadiffimage.vhd that you try to se
t as parent already has a parent uuid of ee56df9e-d614-44ab-a4a4-0903dbb597c0. A
t the moment, this is not supported. A parent image cannot itself have a parent.

差分ディスクの親子関係が間違っている場合は、このようなエラーになりますので今のところ差分ディスクは一階層しか設定ができないのかなと思っています。

A parameter was incorrect. Details: The ParentUuid of the image must match the U
uid of the parent image. Image jadiffimage2.vhd has ParentUuid set to 3a82c96c-8
3e9-48ba-880d-9101eaf251a9 but parent image jabaseimage.vhd has Uuid ee56df9e-d6
14-44ab-a4a4-0903dbb597c0.

 

複数の差分 VHD を多階層で設定することはできませんが、一つの親 VHD に対してこのように複数の差分 VHD を関連付けることは可能です。
image
この VHD は以下のような構成になっています。
image

応答ファイルを英語環境用のものに変更してみたいといった時は、差分 VHD をアップし直すのではなく、構成ファイルの [OsImage] を [trialendiffimage.vhd] に変更することですぐに環境の変更を行うことができます。
image

本番運用をする際にもこの方法でイメージを管理するかどうかは要件等だと思いますが、検証で使う場合 BaseImage を何回もアップロードするのは大変だと思いますので、一度大枠のイメージを作ってアップロードした後は差分 VHD を使って Try & Error の検証をしていくと作業がしやすいかなと個人的には思っています。

 

SkipVerify を使うことで、VM Role 用の統合コンポーネントをインストールしなくてもイメージのアップができますので、VM Role 用に特化した設定をベース VHD には持ちたくない (オンプレミスとの相互運用をしたいのでオンプレミスでは不要な VM Role 用の統合コンポーネントをインストールしたくない) という場合も差分 VHD は便利ですね。
このような形での運用になるでしょうか。
image

差分 VHD を使った VM Role のイメージ管理はかなり利便性が高そうですね。

Share

Written by Masayuki.Ozawa

1月 9th, 2011 at 3:02 pm

Posted in Windows Azure

Tagged with ,

Leave a Reply