VMware Server

提供: fukudat
移動: 案内検索

VMware Serverに関する情報.

目次

コマンドラインツール

vmware-vimsh

/usr/bin/vmware-vimsh で起動するコマンドインタプリタ.プロンプトでTABキーでコマンド補完される.また help コマンド で使い方が表示される.

よく使うコマンドのリスト:

コマンド 機能
vmsvc/getallvms ゲストOSの一覧表示
vmsvc/power.on vmid 電源ON
vmsvc/power.off vmid 電源OFF
vmsvc/power.reboot vmid 再起動
vmsvc/power.suspend vmid サスペンド
vmsvc/power.getstate vmid 電源状態の確認

vmware-vim-cmd

vimshは対話的な使い方が想定されていたが,使うコマンドが分かっているなら(あるいはスクリプトに埋め込んで使うなら) vmware-vim-cmd を使えばコマンドラインから実行できる.

例えば,

# vmware-vim-cmd vmsvc/getallvms

のように呼び出す.

これでWeb UIの出番はあまりなくなる.

Host OSが起動したら自動的にGuest OSを起動する方法

VMware Infrastructure Clientを使うとそういう設定ができる(らしい)が,もはや手に入らない.Web Accessだとそれができない.

仕方がないので,/etc/vmware/hostd/vmAutoStart.xml を直接編集する.例えばこんな感じ.

<ConfigRoot>
  <AutoStartOrder>
    <_length>2</_length>
    <_type>vim.host.AutoStartManager.AutoPowerInfo[]</_type>
    <e id="0">
      <_type>vim.host.AutoStartManager.AutoPowerInfo</_type>
      <key>
        <_type>vim.VirtualMachine</_type>
        <moid>464</moid>
      </key>
      <startAction>PowerOn</startAction>
      <startDelay>-1</startDelay>
      <startOrder>1</startOrder>
      <stopAction>GuestShutdown</stopAction>
      <stopDelay>120</stopDelay>
      <waitForHeartbeat>systemDefault</waitForHeartbeat>
    </e>
    <e id="1">
      <_type>vim.host.AutoStartManager.AutoPowerInfo</_type>
      <key>
        <_type>vim.VirtualMachine</_type>
        <moid>480</moid>
      </key>
      <startAction>PowerOn</startAction>
      <startDelay>-1</startDelay>
      <startOrder>1</startOrder>
      <stopAction>GuestShutdown</stopAction>
      <stopDelay>120</stopDelay>
      <waitForHeartbeat>systemDefault</waitForHeartbeat>
    </e>
  </AutoStartOrder>
  <SystemDefaults>
    <_type>vim.host.AutoStartManager.SystemDefaults</_type>
    <enabled>true</enabled>
    <startDelay>120</startDelay>
    <stopAction>GuestShutdown</stopAction>
    <stopDelay>120</stopDelay>
    <waitForHeartbeat>true</waitForHeartbeat>
  </SystemDefaults>
</ConfigRoot>

<moid>464</moid>, <moid>480</moid> とある数字はVMのID. vmware-vim-cmd vmsvc/getallvms で調べる.

新しいkernelへのインストール

VMware Serverはそのままでは新しいカーネル 2.6.3x にはインストールできないが,https://github.com/raducotescu/vmware-server-linux-2.6.3x-kernel に書かれているようにパッチを入手して,以下のようにインストールする.

  1. VMwareのサイトから VMware Server (2.0.1 or 2.0.2) を gz format で入手する.rpm ではだめ.
  2. ここから入手したスクリプトを1でダウンロードしたファイルがあるディレクトリで実行する.そのディレクトリのパスにはスペースが含まれないようにすること.

次のような感じ.

$ cd <where you downloaded VMware Server>
$ chmod +x vmware-server-2.0.x-kernel-2.6.3x-install.sh
$ sudo ./vmware-server-2.0.x-kernel-2.6.3x-install.sh

するとインストールが始まって,後は指示に従う.

しかし Ubuntu 10.04.4 ではこれではうまくいかない.そこで次のパッチをパッチに当てる.

diff -c raducotescu-vmware-server-linux-2.6.3x-kernel-bb26dce.orig/vmware-server-2.0.2-203138-update.patch raducotescu-vmware-server-linux-2.6.3x-kernel-bb26dce/vmware-server-2.0.2-203138-update.patch
*** raducotescu-vmware-server-linux-2.6.3x-kernel-bb26dce.orig/vmware-server-2.0.2-203138-update.patch  2011-05-05 20:07:36.000000000 +0900
--- raducotescu-vmware-server-linux-2.6.3x-kernel-bb26dce/vmware-server-2.0.2-203138-update.patch       2012-03-14 06:07:57.000000000 +0900
***************
*** 463,469 ****
    */
  -DECLARE_MUTEX(vnetStructureSemaphore);
  +
! +DEFINE_SEMAPHORE(vnetStructureSemaphore);
  
   #if defined(VM_X86_64) && !defined(HAVE_COMPAT_IOCTL)
   /*
--- 463,469 ----
    */
  -DECLARE_MUTEX(vnetStructureSemaphore);
  +
! +DECLARE_MUTEX(vnetStructureSemaphore);
  
   #if defined(VM_X86_64) && !defined(HAVE_COMPAT_IOCTL)
   /*
***************
*** 478,484 ****
  +//#if !defined(CONFIG_PREEMPT_RT)
  +//static DECLARE_MUTEX(filterIoctlSem);   /* serialize ioctl()s from user space. */
  +//#else
! +static DEFINE_SEMAPHORE(filterIoctlSem);   /* serialize ioctl()s from user space. */
  +//#endif
   /*
    * user/netfilter hook concurrency lock.
--- 478,484 ----
  +//#if !defined(CONFIG_PREEMPT_RT)
  +//static DECLARE_MUTEX(filterIoctlSem);   /* serialize ioctl()s from user space. */
  +//#else
! +static DECLARE_MUTEX(filterIoctlSem);   /* serialize ioctl()s from user space. */
  +//#endif
   /*
    * user/netfilter hook concurrency lock.
***************
*** 491,497 ****
   } VSockRecvPktInfo;
  
  -static DECLARE_MUTEX(registrationMutex);
! +static DEFINE_SEMAPHORE(registrationMutex);
   static int devOpenCount = 0;
   static int vsockVmciSocketCount = 0;
   #ifdef VMX86_TOOLS
--- 491,497 ----
   } VSockRecvPktInfo;
  
  -static DECLARE_MUTEX(registrationMutex);
! +static DECLARE_MUTEX(registrationMutex);
   static int devOpenCount = 0;
   static int vsockVmciSocketCount = 0;
   #ifdef VMX86_TOOLS

要するに,DECLARE_MUTEX を DEFINE_SEMAPHORE に変更するのをやめればよい.

これは一度実行すれば,その後の kernel update は vmware-config.pl 一発で大丈夫なはず.

参考文献

個人用ツール
名前空間

変種
操作
案内
ツールボックス