VMware Serverを手動で制御する時のメモ
VMware Server 2.0をインストールしたけども、サービスが常駐するようになってしまったので、PCがやたら重い。
ということで、サービスを手動で起動・停止できるようにしたときのメモ。先達は多々おられるので自分の作業ログ的に。
大まかな手順はざっとこんな感じ。
まずはサービスの起動設定を「自動」から「手動」に。これやんないと意味ナシ。
Windowsサービスの画面から"VMware" をキーワードにサービスを探すと、以下の6つのサービスが見つかる。
- VMware DHCP Service
- VMware NAT Service
- VMware Server Web Access
- VMware Host Agent
- VMware Authorization Service
- VMware VSS Writer
これらのサービスの「スタートアップの種類」を「自動」から「手動」へとひたすら変更。
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
適当にファイル名をつけて保存。
あとは実際にショートカットを実行してみてサービスの起動と停止が行われるかを確認すること。これ大事。