Hatena::ブログ(Diary)

No Tech, No Life

2009-02-06

VMware Serverを手動で制御する時のメモ

| 14:47 | VMware Serverを手動で制御する時のメモを含むブックマーク

VMware Server 2.0をインストールしたけども、サービスが常駐するようになってしまったので、PCがやたら重い。

ということで、サービスを手動で起動・停止できるようにしたときのメモ。先達は多々おられるので自分の作業ログ的に。

大まかな手順はざっとこんな感じ。

  1. サービスの自動起動の無効化
  2. VMwareサービス制御スクリプトの作成
  3. デスクトップVMware起動、停止のショートカットの作成

まずはサービスの起動設定を「自動」から「手動」に。これやんないと意味ナシ。

Windowsサービスの画面から"VMware" をキーワードにサービスを探すと、以下の6つのサービスが見つかる。

これらのサービスの「スタートアップの種類」を「自動」から「手動」へとひたすら変更。

GUIで変更してもいいが、CUIからだと以下のような感じ。

> sc config "サービス名" start= demand

自動起動に戻したいときは demand を auto に。

これでOSが起動したときにVMware関連のサービスが自動起動しなくなる。

試しに再起動してみるといいかも。

次に、VMwareのサービスを起動・停止させるスクリプトを作るが、その前にサービスの依存関係を確認する。依存関係はサービスのプロパティーから、「依存関係」のタブを開けばOK。

「このサービスが依存するシステムコンポーネント」がサービス起動にあたり必要なコンポーネント

「このサービスに依存しているシステムコンポーネント」がこのサービスを必要としているコンポーネント

そうすると上記のサービスの依存関係は↓のようになっているのが分かる。

 VMware Authorization Service ⇔ Host Agent ⇔ VMware VSS Writer
 VMware DHCP Service
 VMware NAT Service
 VMware Server Web Access

つまり、"VMware VSS Writer"サービスを起動させるとそれに依存するサービスが順に起動、"VMware Authorization Service"を停止するとそれに依存しているサービスが順に停止するということ。(強引)

上記を踏まえてVMwareのサービス制御スクリプトを作ってみる。

Windowsバッチの細かい部分は抜きにして、ざっとこんな感じ。かなり手抜いてます。

きちんと作るなら、サービスの起動状態を判断してからnetコマンドを実行するとデキるすくりぷとになる。

引数のチェックぐらいはした方がいいか。これだとstartとstop以外の文字列が入るとエラー起こしちゃう(笑)

しかしバッチスクリプトの構文ってやっぱり苦手。

@echo off

rem "共通サービス。他に依存性がないので、個別に起動、停止"
net %1 "VMware DHCP Service"
net %1 "VMware NAT Service"
net %1 "VMware Server Web Access"

rem "Service Start"
rem "VMware Host Agent, VMware Authorization Serviceも同時起動"
IF /i "%1" equ "start" net %1 "VMware VSS Writer"

rem "Service Stop"
rem "同時にVmware Host Agent, VMware VSS Writer も停止する"
IF /i "%1" equ "stop"  net %1 "VMware Authorization Service" /yes

exit 0

最後にデスクトップに起動、停止のショートカットを作成する。

さっき作ったバッチファイルは適当なフォルダに突っ込んでおく。(今回は仮に c:\tools\bin\vmwarectl.batとでもしておく)

ショートカットの作成はデスクトップを右クリックして「新規作成」⇒「ショートカット」を選択。

「項目の場所」にはスクリプトスクリプト引数にstartかstopを指定。

c:\tools\bin\vmwarectl.bat start
c:\tools\bin\vmwarectl.bat stop

適当にファイル名をつけて保存。

あとは実際にショートカットを実行してみてサービスの起動と停止が行われるかを確認すること。これ大事。