VMWare

VMware Server2.0がリリースされてしばらく経ちますが、結構長い間1.0.xを使っていました。
理由は「Webのインターフェースが使いにくかったから」です。

vms2_1.JPG

んで、VMware Infrastructure Clientをインストールすればver1.0.xと同じように使えるってことを知ったので、早速トライしてみました。

現在(2009/05/10)VMware server 2.0.1がリリースされていますが、このバージョンにはVMware Infrastructure Clientが入っておりません。
従って、VMware server 2.0.0をダウンロードして、まずそれをインストールします。

その後インストール先の

C:\Program Files\VMware\VMware Server\hostd\docroot\client
もしくは
https://127.0.0.1:8333/client/VMware-viclient.exe

にVMware-viclient.exeがあるはずなので、それをインストールして、その後に
2.0.1にアップグレードして下さい。

vms2_2.JPG

--------------
■ 追記
--------------
VMware server 2.0.1 の
C:\Program Files\VMware\VMware Server\tomcat\webapps\ui\plugin
中に vmware-vmrc-win32-x86.exe ってのがあるので、それをインストールしても良いです。

Pluginをインストールしただけではショートカットも何も作られないので、これはWebページから作成する必要があります。

VMを選択して、Commandsにある、Generate Virtual Machine Shortcutをクリック。

webaccess.PNG

Desktop shortcut のInstall Desktop Shortcut to "hoge" をクリックしてショートカットを作成すればおk。

webaccess2.PNG

その後、VMware Server Web Access のサービスは停止させても良いです。
ただ、VMの設定を行ったり新たにGuestOSを追加させる場合はWebAccessの画面から行う必要があります。

webaccess3.PNG

webaccess4.PNG


・ゲストOSにVMware Toolsをインストールしておいて、以下のように設定しておくだけ。
・ホストOSのシャットダウン/再起動時に、ゲストOSも自動的にシャットダウンしてくれます。

vmsetting.jpg

----------------------
 ■追記
----------------------

VMWare: ゲストOS の自動起動 自動終了 Suspend Resume 方法(1)
VMWare: ゲストOS の自動起動 自動終了 Suspend Resume 方法(2)
にて 「サスペンド / レジューム」の方法が載っています。

以下に簡単な(ゲストOSを停止させるための)batファイルを示します。


[ vmstop.bat ]
----------------------
@echo off

rem ログファイルの設定
set logfile="D:\VirtualMachines\2003\logs\log.log"

rem 日付時刻表示
echo %date%%time% >> %logfile% 2>&1

rem ゲストOS停止
echo call "C:\Program Files\VMware\VMware Server\vmware-cmd.bat" "D:\VirtualMachines\2003\2003.vmx" stop >> %logfile% 2>&1
call "C:\Program Files\VMware\VMware Server\vmware-cmd.bat" "D:\VirtualMachines\2003\2003.vmx" stop >> %logfile% 2>&1
echo. >> %logfile% 2>&1
----------------------


 しかし、上記のいずれの方法も「ホストOSへのリモートデスクトップ経由」ではNGとなります。
あくまでも端末の前に座って、ホストOSを直に操作することが大前提となっています(試してみたらNGでした)。
 それじゃあ自分でそれらを制御するWindowsサービスなプログラムを書けばいいんじゃね?とか思ってそれも試してみたけど、NG でした(笑)。
プロジェクト名は [ vmAutoCmd ]です。


[ Program.cs ]
----------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceProcess;
using System.Diagnostics;

namespace vmAutoCmd {
    class Program:ServiceBase {
        static void Main(string[] args) {
            System.ServiceProcess.ServiceBase[] ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Program() };
            System.ServiceProcess.ServiceBase.Run(ServicesToRun);
            Console.ReadLine();
        }
        protected override void OnStart(string[] args) {
            base.OnStart(args);
        }
        protected override void OnStop() {
            base.OnStop();
            
            //vmstop.batを指定して、そのプロセスを起動させる
            string program = global::vmAutoCmd.Properties.Settings.Default.CmdPath;

            Process extProcess = new Process();
            extProcess.StartInfo.FileName = program;
            extProcess.Start();        
        }
    }
}
----------------------


[ ProjectInstaller.cs ]
----------------------
using System;
using System.Collections;
using System.Configuration.Install;
using System.ServiceProcess;
using System.ComponentModel;

[RunInstallerAttribute(true)]
public class ProjectInstaller : Installer {

    private ServiceInstaller serviceInstaller;
    private ServiceProcessInstaller processInstaller;
    private string[] param = new string[] { "VMAuthdService", "vmserverdWin32", "vmount2"};

    public ProjectInstaller() {
        processInstaller = new ServiceProcessInstaller();
        serviceInstaller = new ServiceInstaller();

        // Service will run under system account
        processInstaller.Account = ServiceAccount.LocalSystem;

        // Service will have Start Type of Automatic
        serviceInstaller.StartType = ServiceStartMode.Automatic;
        this.setOsVersion();

        serviceInstaller.ServicesDependedOn = this.param;
        serviceInstaller.ServiceName = "vmAutoCmd";
        serviceInstaller.Description = "VMware Serverの自動終了プログラム";

        Installers.Add(serviceInstaller);
        Installers.Add(processInstaller);
    }
}
----------------------

[ app.config ]
----------------------
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="vmAutoCmd.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <vmAutoCmd.Properties.Settings>
            <setting name="CmdPath" serializeAs="String">
                <value>C:\Program Files\vmAutoCmd\vmstop.bat</value>
            </setting>
        </vmAutoCmd.Properties.Settings>
    </applicationSettings>
</configuration>
----------------------


 ホストOSへのリモートデスクトップ・ログインからゲストOSの再起動などを行う場合は、手動で個々にゲストOSを再起動を掛ける か、ホストOSに上記のbatファイルを置いておいて、それを実行してからホストOSを再起動して下さい。

 あくまでも、ホストOSにリモートデスクトップで接続する場合のみがNGですので、一番上の設定さえしておけば、(端末を直接操作す る場合は)ホストOSの終了時にゲストOSも一緒に終了されます。


以上。
Unable to ad virtual machine "file path" to the inventory:
Configureation file was created by VMware product with more features than this version.

となって仮想マシンが読み込めなかったり、

One ore more of the disks used by this virtual machine was created by an unsupported version of VMware Server.
To power on or upgrade the virtual machine, either remove the unsupported disk(s) or use a version of VMware Server that supports this version of disks. Below is a list of the disks and their reported versions.

Version 6 stockholm.vmdk

読み込めても起動出来なかったりする。


ぶっちゃけ困るので、まずは仮想マシンが保存されているフォルダの*.vmxというファイルをテキストエディタで開いて

virtualHW.version = "6" →virtualHW.version = "4"

に変更。

んで、バイナリエディタ( Bzとか )で vmdk を編集します。
ddb.virtualHWVersion = "6" -> ddb.virtualHWVersion = "4" に変更して保存します。
vm.GIF

VMware Cannot open the disk ... Reason: The parent virtual disk has been modified since the child was created.

 

サーバーの移動で冷や汗かいたのでメモ

以下に詳細あり
http://driveactivated.com/blog/archive/2007/11/06/recovering-vmware-snapshot-after-parent-changed.aspx

サーバーをあれこれいじって、起動後にデータを見てみると1年位前のデータが表示された。
原因は disk.vmdk のような名前のディスクだけが読み込まれており、以降の差分ファイル disk-000001.vmdk が読み込まれていないため。
よって data-000001.vmdk 内のParent-CIDで親のディスクを正しく指定してやればOKだが、この作業にはバイナリエディタで変更をする必要があるので慎重にやること。

vmdkのサイズが大きいとバイナリエディタ自体が落ちたりでどえらい二次災害が発生するのでこれまた要注意。
必ずコピーはとりましょう。
私の場合はWindowsサーバーなので以下のソフトで作業した。
「メモリには表示部分しか読み込みません」とのことなので非常に快適。
また読み込みモードをはずすと変更がそのまま記録されるので要注意。

Dump4w バイナリエディタ
http://www.vector.co.jp/soft/winnt/util/se230275.html

作業手順
1. 親の disk.vmdk をバイナリエディタで開く
2. CID(下線部)をメモる > 保存しないで閉じる



3. 子の disk-000001.vmdk をバイナリエディタで開く
4. ParentCIDを変更。下線部の箇所を上図と同じ文字列へ変更

この後コンソールから disk-000001.vmdk を読み込んで完了。

このページの先頭へ