VirtualBox(on Debian)のゲストOSのネットワーキングで、
標準ではNATしか動かんので bridged network は面倒臭そうで諦めていた。
が、よく考えたらVMware3 on NetBSDを使っていたときに、ホストOS(NetBSD)の
ブリッジ機能で bridged network を使っていたから原理はいっしょと
思ってちらっとみたら、
http://superlinux.blog50.fc2.com/blog-entry-18.html
などがみつかって、やってみた。
基本的にはLANにつながってるインタフェース(例: eth0)を ブリッジに繋いで、そこにVirtualBoxのモジュールによるネットワーク インタフェースを繋ぐ、という感じ。NetBSDのブリッジとの 違いは、Linuxの bridge-utils ではブリッジ化インタフェースを使うなら eth* じゃなくてそっちのインタフェースを主に使うようになるって辺り。 通じるけ。
さてDebianの場合。結論から先に書くと、
ホストOSのLANのI/F(例) | eth0 |
---|---|
eth0のIP設定 | 192.168.1.2/24 (gateway=192.168.1.1) |
ブリッジ化するI/F名(任意名) | bridge0 |
ゲストOSに割り当てるブリッジI/F名(任意名) | vbox0 |
だとすると、おそらく /etc/network/interface
は
こんな風になっている。
auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1
そしたら、それをブリッジインタフェースに変えちゃう。そして、 それがブリッジであることを示すキーワードを付加する。
auto bridge0 iface bridge0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 bridge_ports eth0 iface eth0 inet static address 0
これでOS側の設定おしまい。すぐ起動したきゃ
/etc/init.d/networking restart
だが、ネットワークが
切れるので次の設定をしてからリブートした方がよい。
次、VirtualBoxのゲストOS用ネットワークI/Fの生成。これは
/etc/init.d/vboxnet
がしっかり作ってくれるので
/etc/vbox/interface
にこんな風に書いておく。
vbox0 UserName bridge0 vbox1 UserName bridge0 vbox2 UserName bridge0 : (以下好きなだけ列挙)
このファイルを自動生成してくれるのが VBoxAddIF, VBoxTunctl コマンド で、このファイルを手で作りたくなければコマンドラインで
VBoxAddIf vbox0 UserName bridge0 VBoxTunctl -t vbox0 -uUserName
を繰り返す。
はい、リブート。vbox0とかが使える。VirtualBoxのゲストOS設定の 「ネットワーク」タブのアダプタ設定の割り当て(A)の種類を 「ホストインタフェース」にして、インタフェース名のところに vbox0などと書き込めばよい。
VMwareやXenだとブリッジインタフェースにつなぐゲストOS用の インタフェースは内部で勝手に作ってくれるんだけどね。
VirtualBoxはGUIがものすごくいいからリモート管理・自動起動停止管理に 向いてなさそうなんだが、実はCUIインタフェースがVMwareよりずっと充実して いる。ゲストOSをサーバとして起動したい場合、ホストマシンが起動したときに ゲストも自動で上がって欲しいし、ホストマシンをシャットダウンするとき ゲストを自動で落として欲しい。GUIでいちいち上げ下げしてられっかってんだ。
てことで、既に設定済みのゲストOSの起動。ゲストOSの名前が たとえば hoge だとすると、
VBoxHeadless -s hoge -w 1152 -h 864 -p 3999
などとする(VirtualBoxを起動すべき一般ユーザのままでよい)と、 画面サイズ 1152x864 で待ち受けVRDPポート3999の Virtual Machineが上がる。これフォアグラウンドで起動するから daemontools化しやすいねえ。ゲストOSが起動したら、 ほっといてもいいし、どうしても画面を見たければ rdesktopをインストールしてある別の端末から
rdesktop -g 1152x864 VBoxHost:3999
とか、オプションはお好みで。でもコンソール画面より実際は そのゲストで起動するネットワークサービスが重要だからあんまり コンソール画面要らんと思う。
さて、ホストマシンをシャットダウンするから停めたい。これは 「状態を保存」でいいと思う。これは VBoxManage コマンドで行なう。 引数なしで起動すると詳しすぎるくらいヘルプが出てくる。「状態保存」 でゲストOSを停めるならこんな感じ。
VBoxManage controlvm hoge savestate
これも自分ユーザ権限のままでOK。VirtualBoxの状態保存は速いので ホストOSの shutdown hook に入れても間に合いそう。
ほかにも VBoxManage 経由でほとんど全ての操作ができるので スクリプトに入れて自動化しやすい。やー、なんかXenで頑張る 気分が落ちて来た。
単純に古いiozoneで比較。
iozone 512
IOZONE: Performance Test of Sequential File I/O -- V2.01 (10/21/94)
By Bill Norcott
Operating System: POSIX 1003.1-1990
Send comments to: b_norcott@xway.com
IOZONE writes a 512 Megabyte sequential file consisting of
1048576 records which are each 512 bytes in length.
It then reads the file. It prints the bytes-per-second
rate at which the computer can read and write files.
Writing the 512 Megabyte file, 'iozone.tmp'...53.914062 seconds
Reading the file...56.164062 seconds
IOZONE performance measurements:
9957901 bytes/second for writing the file
9558975 bytes/second for reading the file
iozone 512
IOZONE: Performance Test of Sequential File I/O -- V2.01 (10/21/94)
By Bill Norcott
(中略)
Writing the 512 Megabyte file, 'iozone.tmp'...54.031250 seconds
Reading the file...13.617188 seconds
IOZONE performance measurements:
9936303 bytes/second for writing the file
39425976 bytes/second for reading the file
まあ大差ないか。それはともかく、VirtualBoxのほうがホストOSの CPUを食いまくるのが気になる。VirtualBoxとVMwareServerで 各々2個ずつゲストを起動しているときの様子をtopで見るとこんな感じ。
top - 13:13:56 up 19:14, 3 users, load average: 5.18, 3.81, 2.52 Tasks: 138 total, 1 running, 136 sleeping, 1 stopped, 0 zombie Cpu(s): 8.6%us, 90.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.7%hi, 0.0%si, 0.0%st Mem: 2075940k total, 2021884k used, 54056k free, 2604k buffers Swap: 2719736k total, 282572k used, 2437164k free, 1088492k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5939 yuuji 20 0 171m 105m 13m S 50.5 5.2 71:15.65 VirtualBox 5704 yuuji 20 0 715m 599m 15m S 31.9 29.6 48:17.37 VirtualBox 5766 yuuji 10 -10 375m 282m 275m S 7.0 13.9 19:39.05 vmware-vmx 3315 yuuji 10 -10 811m 421m 410m S 3.0 20.8 37:16.00 vmware-vmx
VirtualBoxはUbuntuとFreeBSD6、VMware ServerはWindowsとFreeBSD6。 VMwareの方がゲストがidle状態になると%CPUが落ち着くのだが、 VirtualBoxのほうは全然落ちて来ない。なんでだ。
同じ VirtualBox 1.6.4 も CentOS 5.2/x86_64 Core2Duo のほうは %CPUは低く安定しているのにな。むむー。