Hyper-V環境でのウイルス対策

さて、実際にHyper-V環境を構築して運用している企業も増えてきたと思われます。

その際に意外と盲点なのが、ウイルス対策はどうするの?

マイクロソフトとしては、ホスト及びゲスト両方にウイルス対策ソフトを入れて対処してね~と言っていたような。

しかし、調べてみるとホストOSにたいしてウイルス対策ソフトをインストールした際のトラブルが起きていることが判明

現象でいうと、仮想マシンが突然消えてなくなるとか、起動しなくなるとか、見えなくなるとか・・・

Virtual PC Guy’s Blog
http://blogs.msdn.com/virtual_pc_guy/archive/2009/03/17/antivirus-and-hyper-v-or-why-can-t-i-start-my-virtual-machine.aspx

このブログでは対策としては次の2点が述べられています

  • ホストOSに対してウイルス対策ソフトをインストールしない
  • ウイルス対策ソフトをインストールするのであれば除外設定などを確実におこなう

ホストOSに対してウイルス対策ソフトをインストールしないのもネットワーク構成をきちんと行うのであればありかな?と私は考えます。それはホストOSと仮想マシンが利用するネットワークを分けて、管理OSが使用するネットワークはクリーンなネットワークを使用する。一部のウイルス対策ソフトをインストールすることによるパフォーマンスの低下という問題が発生しないのが大きなメリットですね。ただし、ウイルスに対するリスクを認識して運用する。

除外設定などを具体的に行う方法に関しては、マイクロソフトの情報がありました。

http://support.microsoft.com/kb/961804

ではどのように構成すればいいのか?

ウイルス対策ソフトウェア内のリアルタイム スキャン コンポーネントで次のディレクトリおよびファイルが除外されるように構成します。

  • 既定の仮想マシン構成ディレクトリ (C:ProgramDataMicrosoftWindowsHyper-V)
  • カスタム仮想マシン構成ディレクトリ
  • 既定の仮想ハード ディスク ドライブ ディレクトリ (C:UsersPublicDocumentsHyper-VVirtual Hard Disks)
  • カスタム仮想ハード ディスク ドライブ ディレクトリ
  • スナップショット ディレクトリ
  • Vmms.exe
  • Vmwp.exe

となっています。

もしくは、仮想ディスクファイル(VHD、AVHD)とvmms.exe、vmwp.exeの除外でも同じことですね。

念のためディレクトリの除外とファイルの除外両方を行っておけばいいですね。

これらの設定を行わずに運用するとかなり痛い目にあうようですのでどんなウイルス対策ソフトを使用していても、設定を行ってください。

Hyper-VのCOMポート

意外と盲点だと思われる、Hyper-VのCOMポートについて書いておきます

Hyper-V上の仮想マシンにはCOMポート設定があるので、仮想マシンから物理マシンのCOMポートを利用できるのかな?と思われるかもしれませんが、実はできません。

では何のためにあるの?

これは物理マシンから仮想マシンのCOMポートに接続するためにあるんですね。

具体的には、名前付きパイプに接続すると、ローカルまたはリモート物理コンピュータと通信することができます。

ではどのような際に利用するのか?

仮想マシンのデバッグなどをCOMポート経由で取得したいなどが考えられます。

Debugging Tools for Windowsなどを使用することがあるみたいですね~私は開発者ではないのでここら辺の話はよくわからないのですが・・・

注意点としては、当然のことながら仮想マシンが起動しないと、COMポートは作られません。ですので仮想マシン起動後でないとCOMポートに接続できないので、接続のタイミングは考えないといけませんね。起動時の情報をデバッグしたいと思ってもCOMポートが作られていない状態でツールを起動しても接続できないということになります。

そうそう、仮想端末側の設定としては次の設定が定番のようです

まずmsconfigを起動します

WS000080

そして詳細オプションから

WS000081

デバッグにチェックをいれてデバッグポートを指定しておきます。

そしてHyper-V側の設定としては、適当な名前付きパイプを指定し、ホスト側も同じ名前にして接続すればいいようです

まとめ

  • Hyper-VのCOMポートは物理マシンから仮想マシンへの接続のために使用する
  • 仮想マシンから物理マシンのCOMポートを使用することはできない

まあ、今ではあまり使用することはないと思いますが、この情報を知っていないと痛い目にあう可能性もありますので注意が必要です。

Hyper-V環境でVLANを使用する

今まで知識でしか理解していなかったのですが、Hyper-V環境でのVLAN使用検証を行いました。実は国井さんのブログを読んでいたら【QAコーナー】Hyper-VのVLANモードでWMIを使用したVLANの確認方法が記載されていたので試したかったんですね。

まず前提知識として

仮想ネットワークを構成する
http://technet.microsoft.com/ja-jp/library/cc816585(WS.10).aspx

を読んでみました。実はHyper-V1.0のときもVLANが使えたのですが次の文を読むと・・・

以下抜粋—

仮想ローカル エリア ネットワーク (VLAN) を構成する

Hyper-V は、仮想ローカル エリア ネットワーク (VLAN) をサポートしており、VLAN 構成はソフトウェアベースであるため、コンピュータを簡単に移動でき、ネットワーク構成も維持できます。仮想マシンに接続するそれぞれの仮想ネットワーク アダプタについて、仮想マシンの VLAN ID を構成できます。VLAN を構成するには、次のものが必要になります。

  • VLAN をサポートしている物理ネットワーク アダプタ。
  • ネットワーク パケットをサポートしている、VLAN ID が既に適用されている物理ネットワーク アダプタ。

管理オペレーティング システムでは、仮想ネットワークを構成して、物理ポート上のネットワーク トラフィックを許可する必要があります。これは、仮想マシンで内部的に使用する VLAN ID のための操作です。次に、仮想マシンを構成して、仮想マシンがすべてのネットワーク通信に対して使用する仮想 LAN を指定します。

VLAN を構成できるモードとして、アクセス モードとトランク モードの 2 つのモードがあります。アクセス モードでは、仮想ネットワークの外部ポートは、UI 内の 1 つの VLAN ID に制限されます。WMI を使用すると、複数の VLAN を設定できます。物理ネットワーク アダプタが、アクセス モードの物理ネットワーク スイッチのポートに接続されている場合は、同様にアクセス モードを使用します。アクセス モードの仮想ネットワークに仮想マシンから外部アクセスできるようにするには、仮想ネットワークのアクセス モードで設定されている VLAN ID と同じ VLAN ID を使用するように仮想マシンを構成する必要があります。トランク モードでは、複数の VLAN ID で物理ネットワーク アダプタと物理ネットワークの間の接続を共有できます。複数の VLAN の仮想ネットワークに仮想マシンから外部アクセスできるようにするには、物理ネットワーク上のポートがトランク モードになるように構成する必要があります。使用している VLAN を特定し、仮想ネットワークがサポートする仮想マシンが使用しているすべての VLAN ID を把握することも必要です。

ここまで

どうやら、仮想マシンで異なる複数VLANを使用するためにはWMIを使用して物理ポートをトランクモードに変更しなくてはいけないと読み取れます。実際のところHyper-V1.0では確認していなかったのでこれは盲点でした。

じゃあ、Hyper-V2.0ではどうなのか?

まずはスイッチのポートをトランクに設定します。これは各スイッチによって設定方法が異なりますが、私はシスコを使っているのでswichport mode trunkコマンドで設定しました。

そして仮想ネットワークマネージャーでVLANの設定です。

WS000076

ここでの設定は管理OS(ペアレント)が使用するVLANになります。このVLANが仮想端末(チャイルド)に影響することはありません。今回は10に設定しました。

そして仮想端末の設定です。

WS000077

ここでは20を設定しました。

さて他に何か設定は必要か?結論からいうと何も設定は必要なし!

問題なく管理OSではVLAN10、仮想端末ではVLAN20が使えました。更に他の仮想端末に対してVLAN10を追加して試しましたがGUIでの設定だけで使えました。

ちなみにPowershellを使用してVLANの確認を行いました。

WS000078

そしてポイントはローカルエリア接続が2つあるところかな?そもそもネットワークカードは1つしか私の環境はありません。どうやら、ローカルエリア接続-仮想スイッチポート0は管理OSが使用しているようですね。ではローカルエリア接続-仮想スイッチポート1は何?

Msvm_VLANEndpointクラスを見てみると・・・

WS000079

ここのDesiredEndpointModeが5になっています。実はアクセスモードが2でトランクモードが5なんですね。勝手にトランクにしてくれています。ですので、ローカルエリア接続-仮想スイッチポート1で物理的な接続をトランクで受けて、それを他のポートはアクセスモードで使用することができるんですね~

WMIを使用すると各ポートのモード(アクセスかトランク)を設定できるようです。ここら辺の説明は国井さんのブログに詳しく書いてあります。

まとめ

どうやら、Hyper-V2.0ではスイッチ側をトランクモードに設定すると、自動的に物理ポートをトランクモードに変えてくれるので、仮想端末は使用するVLAN IDを指定するだけで使用できるようになります。ですので、WMIなどを使用しなくても複数VLANを使用できる。

余談ですが、今までWMIを使った管理は行ったことがなかったので、かなりここら辺の話は鬼門です。でも、これから覚えなくては・・・・

Hyper-V2.0 Server 展開におけるMACアドレスの挙動について

以前、

Hyper-V 2.0 新機能~ネットワーク編その2

で解説を入れたのですが、Hyper-V1.0の仮想端末で使用されるMACアドレスの範囲はどこに記載されているか?というとレジストリになりますが、Hyper-V2.0では仮想ネットワークマネージャーから操作できるようになりました。

ではそもそもなぜこのような機能が増えたのかと考えると、これはHyper-Vサーバーを展開する際にSysperpを使用します。しかし、仮想端末で使用されるMACアドレスの範囲はレジストリに書かれていてSysprepでは変化しません。そこでこのまま展開すると、Hyper-V上の仮想端末のMACアドレスがバッティングする可能性があったので、MACアドレスの範囲を簡単に変更できた方がいいからだと思います。

HKLMSoftwareMicrosoftWindows NTCurrentVersionVirtualization

MinimumMacAddress
MaximumMacAddress

指定例:
MinimumMacAddress = 00-15-5d-ec-34-00
MaximumMacAddress = 00-15-5d-ec-34-FF

*上位MACアドレスの00-15-5dはマイクロソフトが保有しているアドレスになるので固定にする必要があります。

さて、最近気づいたことがあります。それはちょっとHyper-V1.0のときと挙動が異なることがあったので調べてみました。

Hyper-V 2.0 でSysperpをかけます

  • 仮想端末が存在していて外部接続のNWが接続されている→MACアドレスの範囲は変化しない
  • 仮想端末が存在していて内部接続のNWが接続されている→MACアドレスの範囲が変化していた

これはHyper-V1.0ではありえない動作なので本腰を入れて調査してみました。

そもそも、このMACアドレスの範囲は、Hyper-Vが起動して外部ネットワークが作成される段階で作成されます。生成アルゴリズムはどうなっているかというと、その時点のホストのIPアドレスが

192.168.10.200

だとしたら、第3、4オクテットが使われるのでこれらの値を16進数に変換すると0A、C8になります。上位MACアドレスは決まっているので結果的に

00-15-5d-0a-c8-00から00-15-5d-0a-c8-ffの範囲になります。

ここでHyper-V 2.0ではどのような挙動になるか確認です

Sysprep後に起動します。すでに記載したように

  • 仮想端末が存在していて外部接続のNWが接続されている→MACアドレスの範囲は変化しない

これはHyper-V 1.0 と同様です

しかし

  • 仮想端末が存在していて内部接続のNWが接続されている→MACアドレスの範囲が変化していた

なぜこのようになるのか?

実はHyper-V 2.0ではSysprepをかけると

HKLMSoftwareMicrosoftWindows NTCurrentVersionVirtualization

MinimumMacAddress
MaximumMacAddress

これらのレジストリも変化します。ではどの段階で新しい値が付与されるかというと、仮想ネットワークマネージャーを起動した時点で付与されるようです。

しかし、この動作の条件としては外部ネットワークが使用されていないが当てはまります

ただし、外部ネットワークが使用されていなくても同一の固定IPがすべてのHyper-V 2.0サーバーに設定されていて、そのままのアドレスで仮想ネットワークマネージャーを起動すると結果的にすべてのHyper-V 2.0サーバーのMACアドレスの範囲は同じになります。

このような挙動の変化が確認できました。

よって、Hyper-V2.0においてSYSPREPを使用した展開を行う場合は、外部ネットワークを使用しない状態での展開を行い、すべてのサーバーは異なるIPアドレスにしたのちに(DHCPクライアントにしておいてもいいですね)仮想ネットワークマネージャーを起動するとMACアドレスの範囲の重複は起こらないということになります。

まとめ

Hyper-V1.0の場合は、SYSPREPをかけてもMACアドレスの範囲は変化しない
Hyper-V2.0の場合は、SYSPREPをかけるとある条件下ではMACアドレスの範囲は変化する(条件:外部ネットワークを使用していない)

App-V検証~その3 アプリ配信及びトラブル対応

実は配信作業でトラブルがあって、それを解消するまでに3日もかかってしまいました。まあ、それのおかげでApp-Vの仕組みが分かってきたのでよしとしましょう。

ではどのようなトラブルだったのか?

クライアントとの通信はできていて、アイコンは表示されています。しかし、アプリのダウンロードがうまくいかないという現象です。更にデフォルトアプリに関してはうまくダウンロードができるのです。

このエラーに関しては、KBが見つかりました
Error message when the SoftGrid Client tries to start an application: “Error code: xxxxxx-xxxxxx0A-20000194”
http://support.microsoft.com/kb/930614/en-us

結論から申しますと、デフォルトのcontentフォルダがそのまま使用されていたのが原因でした。インストールの際に変更したと思っていたのですが、何度も繰り返しインストールを行っていたこともあり変更されていなかったのです。判ってみたら簡単なことで、osdファイルはHTTP経由でのダウンロードで、これはIISでの設定になります。しかし、sftファイルはrtsp経由でApp-Vサーバー側の設定なのです。

contentフォルダに関してはApp-Vコンソールからの変更はできません。

では、どこで変更するのか?

WS000041

OSが64ビット版の場合、HKLMSoftwareWow6432NodeMicrosoftSoftGrid4.5ServerSOFTGRID_CONTENT_DIRを変更します。

WS000040

これでcontentフォルダが変更になります。サービスを再起動することによって反映されます。

では、アプリケーションの登録です。

WS000042

通常はsprjファイルを使用してアプリケーションを登録します。パッケージから登録する方法もありますが、そうすると、各種設定を手作業で登録することになり面倒ですのでね。今回はOfficeを登録します。

この際の注意点としては、contentフォルダに対してシーケンス処理を行ったファイルを全てコピーしなくてはいけないということです。更に、osdファイル設定を行う際に[展開]タブでパスを記載しましたが、そのパス構成に合わせたフォルダ構成にしないといけません。ですので今回はoff2k7-vというフォルダをcontentフォルダ配下に作成して、シーケンスしたファイルを全てコピーしました。

WS000043

そうすると、オフィスアプリが登録されます。同時にパッケージも登録されます。

WS000044 WS000045

WS000046 WS000047

登録されたアプリに対してそれぞれ設定をしますが、まあ、デフォルトのままでもいいでしょう。全ての設定が完了したらクライアントを起動して確認です。

WS000019

これが苦心の作。Office 2003がMED-V、Office 2007がApp-Vでの動作になります。

App-V検証~その2 Office 2007 をシーケンス処理する

App-Vで配信を行うためのアプリケーションとしてOffice 2007にチャレンジです。やってみると判るのですが、これが意外と大変!!

参考にしたのは
http://download.microsoft.com/download/5/d/c/5dc5825c-41c0-4a63-ace6-51ef1821c3c1/OfficeEnterprise2007_sequence.doc
になります。

セットアップカスタマイズファイル(MSPファイル作成)

まずはOffice 2007のCDをドライブに挿入してコマンドプロンプトを起動します。

WS000013

CDのドライブレターでSetup /adminで起動します。

WS000014

このままOKをクリック

WS000015

ここで既定のインストール先を変更します。注意しなくてはいけないのが、あらかじめQドライブを作成しておき、そこに対してインストール作業を行うこと。更にインストールフォルダ名は8文字以下にすることです。私はOff2007にしました。

WS000016

プロダクトキーを入力し、使用許諾にチェックを入れます

WS000017

機能のインストール設定を行います。Access、Excel、Outlook、PowerPoint、Word、Office共有機能は全て「マイコンピューターから実行」にしておきます。Officeツールに関しては「Microsoft Office Document Imaging」は「インストールしない」で、そのほかは「マイコンピューターから実行」にしておきます。

WS000018

[レジストリエントリの追加]を選択し、[追加]ボタンをクリックして下記レジストリエントリを追加します。
ルート:HKEY_LOCAL_MACHINE
データ型:dword
キー:SOFTWAREMicrosoftWindowsWindows SearchPreferences
値の名前:PreventIndexingOutlook
値データ:00000001
この設定により、Outlook2007のWindows Desktop Searchを無効にし、Classic Searchを有効にします。App-Vで配信したOutlook2007では、Windows Desktop Searchを利用できなくなります。

メニューから[ファイル]-[名前をつけて保存]を選択します。任意のファイル名でリムーバブルメディア等にMSPファイルを保存し、Officeカスタマイズツールを終了します。

Office 2007シーケンス

Microsoft Application Virtualization Sequencerを起動し、ファイルから新しいパッケージの作成を行います。

WS000019

パッケージ名にOffice2007と入力し、次へ。監視の開始をクリックし、Office 2007のCDを入れます。

WS000021

コマンドプロンプトより、MSPファイルを使用したセットアップを行います

WS000022

今すぐインストールを選択し、インストール先は

WS000020

Q:Off2007ですね

WS000023

Officeのインストールが完了したら、今度はあらかじめ用意しておいたSP2を導入し、再起動を聞いてくるがここはぐっと我慢

WS000024

全てのインストールが完了したら、監視の停止をクリックする。後から気がついたことですが、アドオンなども入れたければこの段階でインストールします。

WS000033

仮想ファイルシステム(VFS)にはMSIファイルライブラリを仮想ファイルの中に追加するような資料がありますが、既知の問題としてここにそのようなファイルを入れると不具合があるそうなのでここは入力せずに進みます。

Microsoft Application Virtualization Management System リリース ノート 4.5 SP1
http://technet.microsoft.com/ja-jp/library/ee677081.aspx

WS000026

アプリケーションの構成で必要なショートカットを残します

WS000027

ここではAccess、Excel、Outlook、PowerPoint、Wordのみ残す設定にしています。

WS000028

残したAccess, Excel, Outlook, PowerPoint, Wordのショートカットに対して、ショートカット名、バージョン、osdファイル名などを変更します。
ここではExcelを例にとって手順を説明します。一覧でMicrosoft Office Excel 2007 を選択した状態で[編集] ボタンをクリックします。アプリケーションの編集画面が表示されます。
既定では、OSD ファイル名が空白文字や複数のピリオドなどが含まれたファイル名になっているため、不必要な文字を削除した短いファイル名に変更します。これを各OSDファイルで行わないとショートカットがこのままの名前になるので悲しい結果が訪れます

ですので、バージョンは12、OSDファイル名はExcel2007.osdに変更します。

WS000029

アプリケーションの起動ではOutlook以外を起動します。たとえば、Accessを起動し、その後F1を押してヘルプを表示させます。そしてそれらを閉じる。この操作を各アプリケーションに行います。

WS000030

Officeアプリの初回起動時に上記画面が出ますが、ここはそのまま次へ

WS000031

そしてMicrosoft Update を使用しないにクリックして完了

WS000034

これを繰り返すとこのような画面になります

WS000035

最後にシーケンスパッケージを作成します。その後

WS000041

[仮想レジストリ] タブをクリックして、User/%SFT_SID%/Software/Microsoft/Office/Common/UserInfo を右クリックし、[キー]-[削除]をクリックしてシーケンス作業時のユーザー情報を削除します。この作業により、アプリケーションを配信した際に、クライアントPCにログインしているユーザーの情報が反映されます。

[ツール] メニューをクリックし、[診断] から [コマンドウインドウ] をクリックします。次のコマンドを入力し、MSMINCHO.TTF ファイルを削除します。 ここでは例として、Q:Off2007 ディレクトリへシーケンスした場合のコマンドを説明します。

WS000036

Q:
cd Off2007vfsCSIDL_FONTS
del MSMINCHO.TTF
exit

WS000037

[ファイル] タブをクリックし、Offi2007VFSCSIDL_FONTS ディレクトリを展開します。MSMINCHO.TTF をクリックし、ファイル名を任意の名前に変更します。短い形式の名前の変更は行わず、 [適用] ボタンをクリックします。その後 [ファイル] メニューの [名前を付けて保存] をクリックし、パッケージに任意の名前を付けて保存します。

※上記手順を踏まずにシーケンス作業を終了すると、App-V Desktops に 配信したMicrosoft Office Word 2007の明朝体が正しく表示されないことがあります。

http://support.microsoft.com/kb/953594/ja

[展開]タブでプロトコルをRTSPにして、ホスト名を入力します。その際に考慮しなくてはいけない問題があります。それは通常サーバーのcontentフォルダに対してシーケンスしたパッケージをいれますが、Office2007を複数のOSで使用するには、OS毎にパッケージを作成する必要があります。ということはフォルダ分けをしないととんでもないことになります。ですので、今回はoff2k7-vをいうフォルダを作成することにし、パスにoff2k7を入力しました。(ここで悩んだのが”/”を先頭に付けるか?作成されたOSDファイルを確認したところ、”/”は必要ないみたいです)

WS000040

[OSD]タブを開き[SOFTPKG]-[IMPLEMENTATION]-[VIRTUALENV]を開きます

WS000043

TERMINATECHILDRENをTUREに変更します。  これは、Office2007は終了してもタスクが残るので、終了時に強制的にタスクを終了させる設定です。

WS000045

[VIRTUALENV]を右クリック>要素>追加>POLICIESを選択します

WS000046

[POLICIES]を右クリック>要素>追加>LOCAL_INTERACTION_ALLOWEDを選択します

WS000044

LOCAL_INTERACTION_ALLOWEDを選択し、右ペインの要素テキストにTUREと入力します。OfficeはOLEやIMEとの連携を行うので、そのための設定です。

この操作を各アプリケーション毎に行う必要があります。

そうそう、後から気がついたのですがパッケージ名もユニークじゃないといけないかも~。パッケージ名をOffice2007で作りましたが、[プロパティ]タブより変更できたので、off2k7-vに変更しました。これなら今後ダブることはないですね。

WS000039

Office2007が設定するファイルの関連づけ情報には日本語が使用されています。このような場合、正しくクライアントPCにアプリケーションが配信されません。この問題に対処するために、作成されたOSDファイルの文字コードをUnicode に変更します。

以上でOffice Enterprise 2007のシーケンス作業は終了です。生成されたosdファイル、icoファイル、sft ファイル、sprjファイルをApp-V Serverを実行しているサーバーマシン上にコピーし、配信するための設定作業を行います。osd ファイルは、Access,Excel,Outlook,PowerPoint,Wordのそれぞれに対して作成されています。5つのosd ファイルを登録する必要があります。

この作業に3日間かかりました。スナップショットは初期のものがありますがテキストに書かれている内容が正しいです。結局何回作り直したんだろう・・・

いや~、初めてシーケンス処理を行いましたが結構大変ですね。

App-V検証~その1 環境作成

App-Vの概要

App-VはMDOPの一製品として提供されているアプリケーション仮想化ソリューションになります。

app-v

コンポーネントとしては、App-Vサーバー、App-Vクライアント、そして配信するアプリを作成するApp-Vシーケンサーがあります。これを構築していきます。

現在マイクロソフトから提供されている最新バージョンはApp-V4.5 SP1なのでそれを用いての構築を行います。ちなみにクライアントはVista SP2を使用します。

参考資料は
Microsoft Application Virtualization スタート アップ ガイド
になります。

今回は、サーバーとしてWindows Server 2008ベースで、SQL Server 2008を用いての構築を行いました。

サーバー編

基本的にはスタートアップガイドに沿って行えば問題なくインストールできますので、勘所を記載していきます。まずApp-Vのインストール前にSQLサーバーのインストールを行いますが、特に難しい設定は必要ありません。SQLサーバーデータベースサービスさえ入っていればいいので・・・そうそう、ADは必須です。

そしてIIS7.0をインストールしておきます。この際に忘れてはいけないのが、「ASP.NET」と「IIS管理スクリプト及びツール」は必須になります。後は必要に応じて追加していきます。

ADでの作業としてはユーザーとグループを作成しておきます。とりあえずはガイドに記載されているものを作ればいいでしょう

WS000026  WS000028 WS000029

WS000030 WS000031

あと、今回の環境ではApp-Vと同じサーバーにSQLサーバーが入っています。実は、App-VはSQL Server のサービスが起動していない状態で、Application Virtualization Management Server サービスが起動すると起動に失敗することがあるので依存関係の設定を行いました。

sc config AppVirtServer depend= MSSQLSERVER

ちなみにExpress Edition を使用している場合は [MSSQL$SQLEXPRESS] となります。

IISの設定としては、次の項目を行います。

WS000032

仮想ディレクトリ(appv)を作成し、ハンドラマッピングより実行にチェック。

WS000033

デフォルトサイトよりMIMEの種類として、.osdに対して、application/virtualizationを追加

次に、FWの設定です。sghwsvr.exe と sghwdsptr.exeに対して受信の許可を与えます。

WS000035

WS000036

後はApp-V Management Consoleを起動し、コンテンツパスを設定します。

WS000034

クライアント編

クライアントの導入に関してはガイド通りに進めていけば問題なくインストールできます。

WS000005 WS000006 WS000007

WS000008 WS000009 WS000010

WS000011WS000012   WS000013

インストールが完了したら、サーバーからのアプリケーション配信確認を行います。サーバーにはDefault Applicationが用意されているので、そのアプリケーションが配信できればとりあえずセットアップ完了です。

Server側でDefault Applicationの設定を変更します。

WS000037 WS000038 WS000039

このあたりの設定内容はガイド通りに進めましょう。そうそう、私はデフォルトのcontentフォルダではなく、自分でフォルダを作成してそこをApp-Vのcontentフォルダにしましたので、デフォルトのcontentの場所にDefault Application一式があるのでコピーして持ってきました。

クライアントの確認です。

WS000015

コントロールパネルの管理ツールよりApplication Virtualization Clientがあるので起動します。公開サーバーを選択します。

WS000016 WS000017

更新タブより[更新]をクリックすると、デスクトップ画面にアイコンが表示されるはずです。そこでそのアイコンをクリックすると次の画面が出るはずです。

WS000018

これが出れば、App-Vの環境作成は完了になります。

MIMEの設定が間違っていると、更新をクリックしても、デスクトップ画面上にアイコンは表示されませんでした。

次回はシーケンスにチャレンジです。

5分で判るMED-V

今度マイクロソフトの仮想化について話をすることになったので、MED-Vについて調べてみました。

そもそも、マイクロソフトの仮想化戦略は現在どのようになっているのか?

仮想化ソリューション

仮想化にはサーバーの仮想化、アプリケーションの仮想化、デスクトップの仮想化、プレゼンテーションの仮想化、データの仮想化という分類がされています。そして、MED-Vはデスクトップの仮想化に分類されています。

MED-V(Microsoft Enterprise Desktop Virtualization)の略語でMicrosoft Desktop Optimization Pack(MDOP)として提供されている1つのアプリケーションになります。ではMED-Vで何ができるの?

MED-Vは、仮想化ソフトウエア「Microsoft Virtual PC 2007」による仮想「Windows XP」「Windows 2000」環境を集中管理し,「Windows Vista」搭載パソコンで古いアプリケーションをあたかもVista上で動いているようにすることができる製品ということになります。実際にはクライアントにXPもサポートするのですが、これはあまり想定されていないと考えます。

2010年1月現在、最新のMDOP 2009 R2で提供されているMED-Vのバージョンでは、Windows Server 2008 R2およびWindows7はサポートしていません。ただし、SPによって対応する予定です。ここら辺の情報は定かではないのですが、このSPで対応するといってもWindows7からサポートされたWindows Virtual PCを使わないのでUSBに直接アクセスするなどの新機能が使えないのがネックですね。どうやらMED-V Ver2では対応するようですが、一体いつ出てくることやら

Windows Virtual PC の機能の比較

MED-Vの導入を検討する際に考慮しなくてはいけない要件を考えてみます。

  1. 企業で現在導入されているクライアントがVistaである
  2. XP、もしくはWindows 2000でしか動作しないアプリケーションがある
  3. それらのアプリケーションはvistaに対応していない(対応予定がない)
  4. 全社的にそれらのアプリケーションを使わなくてはならない

これくらいかな~

まず要件の1、MED-VのSPが出ていない現状では対応クライアントがVistaのみというのがネックになります。日本の企業では圧倒的にXPが使われていて、VistaはスキップしてWindows7を導入するのが多いのではないでしょうか?まあ、近いうちにSPは出る予定なのでWindows7もサポートされますが、先ほども書いたようにWindows7からサポートされたWindows Virtual PCではなくMicrosoft Virtual PC 2007が使われるようなのでこれも考慮しなくてはいけませんね

要件の2、3、4はAND条件になりますね。

XP、もしくはWindows 2000でしか動作しないアプリケーションがあり、Vista(もしくはWindows7)で動作しないのでなんとかしなくていけない。これだけなら、各自の端末にVirtual PCを導入すれば何とかなります。しかし、これを全社的に使うとなると当然のことながらVirtual PCを使用したアプリケーションの使用方法などの教育が必要になります。だったら、Vista or Windows7に対応するアプリに変更するという選択肢のほうがコスト的に有用な場合があると考えます。そうすればわざわざこのようなテクノロジーを使用しなくてもいいのですから

さて、概要的な話はこれくらいにして、MED-Vを導入するためにはどうすればいいか?

インストール方法はちょうさんのSEの雑記を参考にさせていただきました。

MED-V インストール手順 [環境編]
MED-V インストール手順 [サーバー インストール編]
MED-V インストール手順 [サーバー 設定編]
MED-V インストール手順 [クライアント インストール編]
MED-V インストール手順 [クライアント 設定編] その 1
MED-V インストール手順 [クライアント 設定編] その 2

ここで、簡単に解説すると

MED-V

サーバーを構築するのですが、Windows Server 2008、IIS、SQL、MED-Vなどを導入します。

クライアントはVista上にVirtual PC 2007をインストールして、仮想マシンをセットアップ(XP or 2000)します。ここで注意が必要なのは仮想マシンはVL(ボリュームライセンス)が必要だということ。

その後、MED-VクライアントをVistaにインストールします。その際に最初のクライアントには管理コンソールもインストールします。このクライアントで全社に配布するためのイメージを作成します。

Virtual PC上で使用する仮想マシンはそのままではMED-Vで使用できませんので、MED-V のワークスペース用モジュールをインストールする必要があります。そして必要なアプリケーションを導入してテスト環境を作り、問題ないようならイメージ作成、およびサーバーへのアップロードが一連の流れになります。

さて、Vista上ではどのようなメニューになるかというと

WS000002

登録したアプリはMED-V Applicationsとうグループに表示され、それを実行すると

WS000000

あたかも、ユーザーにはVista上で動いているように見えます。が、実際にはVirtual PC上のXPで動いているのです。このことから、MED-Vアプリなどで作成したファイルはVirtual PC上のXPに保存されることになります。それをVistaに持ってくるにはネットワークを使用するか、もしくはファイル転送ツールを使用することになります。

WS000001

余談ですがWindows7のXP-MODEは、まさにMED-Vですね(集中管理はできませんが)

あと更に重要なことがあります。2010年1月現時点ではマイクロソフトのサポートとしては、Windows Server 2008(英語版)上にMED-Vをインストールしないとサポート対象にはならないとのことでした。ですので、英語版なら動くけど、日本語版ではだめだよ~なんていう事態が発生するとお手上げですね。

Active Directory Recycle Binに関して~その4

バックアップの有効期限についての考察をしてみます

参考:
削除された Active Directory オブジェクトを復元するシナリオの概要
http://technet.microsoft.com/ja-jp/library/dd379542(WS.10).aspx

バックアップ有効期間の値は、削除されたオブジェクトの有効期間が格納されている msDS-deletedObjectLifetime 属性と、リサイクルされたオブジェクトの有効期間が格納されている tombstoneLifetime 属性の 2 つの属性の小さい方の値になります。

よって、デフォルトでは180日がバックアップの有効期間ということになります。(ここでいう有効期間とはマイクロソフトがサポートするという意味)

しかし、裏技的な方法で180日が経過したバックアップでも復元は可能です。それは国井さんのブログで紹介されていますのでそちらにお任せいたします。

Active Directory Recycle Binで救えなかったオブジェクトを救出する

例えば Deleted Object Lifetime =3 と Tombstone Lifetime=180 の場合、削除して 4 日たったオブジェクトは既に isRecycled=TRUE であり、バックアップから復元しても本属性値は変更されません。そのため、バックアップの有効期限は 3 日となります。

逆にDeleted Object Lifetime =180 と Tombstone Lifetime=3 の場合、採取後 3 日以上のバックアップは、以前までの動作と同じ理由で有効なバックアップではありません。

ごみ箱を有効にした場合マイクロソフトとしては、Deleted Object Lifetime 期間の間に復元することを想定しているので、その期間を超えたオブジェクトの復元は推奨していないということになります。

*Authoritative restoreには「Toggle recycled objects flag」コマンドが新設されていているので、上の例として挙げた Deleted Object Lifetime =3 と Tombstone Lifetime=180 の場合においては、このコマンドを利用することで、isRecycled 属性値を変更することでバックアップからの復元が可能と考えられます。ただし、このコマンドは利用を推奨しないコマンドとしての連絡がありました~

Active Directory Recycle Binに関してのまとめ

  1. Active Directory Recycle Binを有効にするとデフォルトでは180日間は全ての属性値が入った状態でのデータベースからの復元が可能
  2. 180日以後のデータベースおよびバックアップからの復元は想定していない
  3. バックアップの有効期間はデフォルト180日
  4. マイクロソフトでは180日以上たったバックアップからの復元は推奨していない

ということかな

特に1番が大きなメリットになります。今までは全ての属性値を含んだオブジェクトを復元しようとすると、Authoritative restoreを実行するためにディレクトリ サービス復元モード (DSRM) による起動が必要だったのでそのためのダウンタイムと、復元オブジェクトが存在するバックアップデータが必要でした。これらの作業を行うことなしに完全復旧ができるのはいいですね。

ふ~、これでActive Directory Recycle Binの話題は一旦終了します。

Active Directory Recycle Binに関して~その3

Active Directory Recycle Binに関して深掘りして調査してもらいました。その結果を書いておきます。

オブジェクトが完全に削除されるまでの期間

  • ゴミ箱が無効な場合には Tombstone Lifetime
  • ゴミ箱が有効な場合には Deleted ObjectLife time +Tombstone Lifetime

となります。

それぞれの属性は

  • Deleted Object Lifetime (msDS-deletedObjectLifetime 属性)
  • Tombstone Lifetime (tombstoneLifetime 属性)

となります。

ゴミ箱が無効な場合、オブジェクトが削除されるとすぐに isDeleted=TRUE 、isRecycled=TRUE の状態になります。ここから Tombstone Lifetime (既定で 180 日) が経過した後のガベージ コレクションにてデータベースから削除されます。

ゴミ箱が有効な場合、オブジェクトが削除されると isDeleted=TRUE 、isRecycled は設定されません。ここから Deleted Object Lifetime (既定で 180 日) を経過した後、isRecycled=TRUE が設定されます。

そこからさらに Tombstone lifetime (既定で 180 日) が経過後のガベージ コレクションにてオブジェクトはデータベースから削除されます。

Windows Server 2008 R2ではmsDS-deletedObjectLifetime属性やtombstoneLifetime属性は既定ではNULLになっています。既定でNULLになっているのでTombstone Lifetime (tombstoneLifetime 属性)はハードコートされた180日が設定されているということになります。

ではActive Directory Recycle Binを有効にした場合Deleted Object Lifetime (msDS-deletedObjectLifetime 属性)がNULLで設定されていますが、削除されたオブジェクトの有効期間は、廃棄済みオブジェクト (Tombstone) の有効期間の値に設定されますので、結果的に180日が使用されることになります。

設定を変更するにはPowerShellを使用するのが推奨となります

削除済オブジェクト の ライフタイム を変更するには以下のコマンドを使用

Set-ADObject -Identity“CN=Directory Service, CN=Windows NT,CN=Services,CN=Configuration,DC=mydomain,DC=com”-Partition“CN=Configuration,DC=mydomain,DC=com”-Replace:@{“msDS-DeletedObjectLifetime”= 60}

リサイクル済オブジェクトのライフタイムを変更するするには以下のコマンドを使用

Set-ADObject -Identity“CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=mydomain,DC=com”-Partition“CN=Configuration,DC=mydomain,DC=com”-Replace:@{“tombstoneLifetime”= 365}

ここで注意しなくてはいけないのが、リサイクル済オブジェクトのライフタイムであるTombstone Lifetime (tombstoneLifetime 属性)のみ変更した場合は、Deleted Object Lifetime (msDS-deletedObjectLifetime 属性)はNULLのままなので、結果的に削除済オブジェクト の ライフタイムも同じ値になるということです。

参考:

付録 A: Active Directory のごみ箱の追加作業
廃棄済みオブジェクト (Tombstone) の有効期間および削除されたオブジェクトの有効期間を変更する
http://technet.microsoft.com/ja-jp/library/dd392260(WS.10).aspx