Virtual SMP@Windows 2000 VM

2008/01/07PC::VMware

Virtual SMPとは

仮想マシン上で複数のCPUを利用することが可能となる機能で、VMware Serverにおける仮想マシンでは最大2つのCPUを利用可能です。
Virtual SMPを使用しない従来の仮想マシン(仮想CPUが1つ)では、VMware Serverがインストールされている物理サーバに物理的/論理的*1に複数のCPUが搭載されている場合でも、1つのCPUしかフルに利用できません。

#large: is not allow

これは仮想CPUが1つのWin2k VM上でSuperπを動作させたときのホストの負荷です。ごらんの通り、1つのCPUがほぼ100%の負荷率であるのに対し、もう片方のCPUはほぼ遊んでいる状態です。

*1 : Hyper-Threading, マルチコアCPUなど

Virtual SMPを利用するには

vmsmp1.jpg

Virtual SMPを利用するには、ProcessorのオプションでCPUの数をTwoにすれば利用可能です。が、既存のWindows 2000のVM上で仮想CPUの数を増やしても反映されませんインストールの時点で仮想CPUの数を2個に指定しておく必要があります。
途中で仮想CPUの構成を変更しても有効にならないのが、ゲストOS(この場合はWin2k Pro)の制限なのかは不明。そのうち違うOSで検証します。

Virtual SMPを有効にすると

仮想マシン上でCPUが複数利用可能となります。

vmsmp2.jpg

マルチスレッドで動作する負荷をかければちゃんとホストの両方のCPUを利用するようになり、高負荷に耐えられるVMとして運用が可能です。

#large: is not allow

VMware Serverクライアント機にマウントされているCD/DVDを利用したVMのブート

2008/01/01PC::VMware

VMware Serverでは、VMware Server Consoleをインストールしたクライアント機のCD/DVDドライブを仮想マシンにマウントさせることが可能です。

と、いうことで仮想マシンのブートが可能か、やってみました。

準備

  1. VMware ServerにVMware Server Consoleで接続
  2. クライアント機にブート可能なCD/DVDをマウント

クライアント機のCD/DVDからVMがブートするまで

とりあえず仮想マシンをパワーオンします。が、ブート可能なデバイスが何もありませんのでOperating System not foundというメッセージが出て止まってしまいます。

cdboot1.jpg

この状態で仮想マシンのCD-ROMデバイスの設定を弄ります。
重要なのは以下の3点

  • Use physical drive: Client
  • Legacy emulationを有効
  • Device stateをConnectedに
cdboot2.jpg

特に、Device stateはクライアント機のCD/DVDを利用する場合にVMをリセットするとチェックが外れてしまう仕様なので毎回チェックする必要があります。

設定を完了したら仮想マシン上でCtrl + Alt + Insertを入力し、リセットします。決してVMware Server Consoleのリセットボタンでリセットをかけてはいけません。この方法でリセットをかけるとVMのCD/DVDの接続が切断されてしまいます

しばらく待つと、起動画面が表示されます。今回はC73にて購入した巫女ぐにょLinux 3.5で試しました。

cdboot3.jpg

後は通常のようにVMの操作を行うことが可能です。

その他

  • この方法で仮想マシンのブートを行った場合、ISOイメージのマウントによるブートと比較して非常に時間がかかります。
  • VMware Toolsが導入されていないので操作が重い

といった感じです。仮想マシンにOSインストールの時には利用する時には有効な方法ですが、1CD Linuxなどでは素直にISOイメージにしておいた方が幸せになれそうです。

VMware Toolsインストール@Debian 4.0/5.0 VM

2007/12/14PC::VMware

VMware Server上に構築したDebian etchの仮想マシンにVMware Toolsをインストールする際の注意点。
ちなみに検証は、CUI環境(非X環境/ランレベル2)での導入となります。

前提条件

インストールに以下のものが必要です

  • killall
  • linux-headers
  • make

これらの入手方法は別記事でインストールするものと同じですのでそちらを参照して下さい。

インストールの方法

VMware Server Consoleから"Install VMware Tools"を選択し、仮想マシン(Debian)の仮想CDドライブにVMware Toolsが入ったCDイメージがマウントします。
ここからは仮想マシン上の操作です。

# mkdir /mnt/cdrom CD-ROMのマウントポイントの作成。適当な場所でいい
# mount /dev/cdrom /mnt/cdrom
# cp /mnt/cdrom/VMwareTools-1.0.4-56528.tar.gz /usr/local/src/
# tar xvzf /usr/local/src/VMwareTools-1.0.4-56528.tar.gz
# cd /usr/local/src/vmware-tools-distrib
# ./vmware-install.pl

インストーラーが立ち上がりますのでいくつかの質問に答えていけばインストール出来ます。

インストール後

インストールが成功するとネットワークが切断されますので、SSHで入っている場合はVMware Server Consoleでログインし直す必要があります。
尚、再起動されるまでVMware Tools/仮想NICは有効になりません。

VMware Toolsのインストールが行われると/etc/modules.confに以下が追加されます

# Added by VMware Tools
alias eth0 vmnics
probeall vmnics vmxnet pcnet32
alias char-major-14 sb
options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

そのほか

尚、CUI環境ですとVMware Toolsの一部の機能が働かないようです。

追記 2009/06/27

Debian GNU/Linux 5.0.1(lenny)も本記事と同様にインストールが可能です。

VMware Serverにおけるネットワーク

2007/12/11PC::VMware

VMware Serverを導入して以来、サーバーに無茶をさせてみたり、管理用クライアントにアホみたいなことをさせていますが、今回は真面目なVMware Serverのお話です。nabeさんVMware playerにethernetを占有させるの記事の補足として読んで頂ければよいと思われます。

VMware Serverの仮想ネットワーク

VMware Serverのインストール時にVMnet0,1,8の構成を行います。このVMnetとはVMware Server内の仮想化レイヤーで構成される仮想スイッチのことを表します。Bridgeを構成すればVMnet0が、NATを構成すればVMnet8が、ホストOSのみの通信であればVMnet1が構成されます。このあたりはWorkstation/Player共に共通と思われます。

このVMnat*の構成は以下のように言い換えることができます

VMnet0(Bridge)
仮想化レイヤーに構成された仮想スイッチ(L2)に選択した(物理)ネットワークカードから仮想LANケーブルを接続
VMnet1(HostOnly)
仮想化レイヤーに構成された仮想スイッチ(L2)とホストに構成された仮想NIC間を仮想LANケーブルで接続
VMnet8(NAT)
仮想化レイヤーに構成された仮想NATルーター(L3スイッチ)に(物理)ネットワークカードから仮想LANケーブルを接続

図にするとこんな感じです (デフォルト構成の場合)

vmnet1.png

仮想マシンのネットワーク設定

仮想マシンのネットワークカード設定では、上記で構成されたどの仮想スイッチに仮想LANケーブルを接続するかということを設定します。例えば単純に外部のネットワークに出ていきたいのであればVMnet8の仮想NATルーターへの接続を構成します。

vmnet2.png

仮想マシンに物理NICを占有させる@Debian

私がVMware Serverをインストールしているマシンでは物理NICを2つ搭載しています。VMware Server以外の用途としてファイルサーバーとして利用していますので、サーバーでは主にGbEのNICを利用しており、オンボードで搭載されている100MbEのNICは利用していません。今回はこの空いている100MbEを仮想マシンに構成させる場合の設定です。

  • eth0: オンボードの100Mbps NIC
  • eth1: Debian(ホストOS)で利用するためのGbE

まず、ネットワークカード自身が有効になっていませんのでeth0を有効化します。

一時的な設定

# ifconfig eth0 up

毎回有効にするためには/etc/network/interfacesを設定します

# for eth0
auto eth0
iface eth0 inet manual
        up ifconfig eth0 up

確認はifconfigで行います。eth0が今回VMwareに占有させたNICです。

# ifconfig 
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet6 addr: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:81854256 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53462454 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2390389428 (2.2 GiB)  TX bytes:4271269678 (3.9 GiB)

eth1      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx:
          inet addr:192.168.xxx.xxx  Bcast:192.168.xxx.255  Mask:255.255.255.0
          inet6 addr: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:52366512 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85352659 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:297241411 (283.4 MiB)  TX bytes:1872957313 (1.7 GiB)
          Interrupt:209

このようにDebian側からはIPアドレスを持っていませんので通信することはできません。

次にvmware-config.plでVMnet2を構成します。ゲストOSをホストOSと同じサブネットに属させたいのであればBridgeの構成を、ゲストOSを異なるサブネットに属させたいのであればNAT構成にします。今回はBridge構成でVMnet2を構成しました。

このような構成の場合、Debian側ではNICを有効にしているだけでIPその他は未構成ですので、このNICを用いて通信できません。一方、仮想マシン側からはこのNICを用いてしか仮想マシン外部(Debian含め)に出ることができません。

図にするとこんな感じ。

vmnet3.png

応用: 仮想NIC/スイッチを用いたDMZ環境の構築

VMware Serverを利用すれば1つの物理マシンと2つの物理NICを用いてDMZ環境の構築を行うことが出来ます。

仮想環境におけるシステム要件は下記の通り。

  • VMware Server(物理マシン)の要件
    • 物理NICを2つ持つ
    • 片方のNICはLANに接続
    • 片方のNICはWANに接続 (仮想マシンに占有)
  • 仮想マシン要件
    • 仮想マシンを2つ構築する必要があります
      • 1つ目の仮想マシンは仮想NICを2つ持ち、ファイアウォール・ルーターとして動作
      • 2つ目の仮想マシンは外部公開サービスを動作させます
  • 仮想スイッチ要件
    • 2つの仮想スイッチを構築します
      • WAN側物理NICとのBridge
      • 内部通信用スイッチ

図にするとこんな感じになります

vmnet4.png

このような構成にした場合、内部(LAN)のネットワークから切り離され(ホストOSであるDebianからも)、外部(WAN)のネットワークからも直接参照することはできないので非常に安全に外部公開サーバを1台の物理マシンで構築することができます。