■vmplayer内のdebianにvirtualboxを導入。 以前にもsqueezeでやってたりもするが、 今回はWheezy。VT-xを有効、virshで操作する。 Squeezeのvmplayerの仮想マシンのvmsqueezeにVirtualboxを導入する http://labunix.hateblo.jp/entry/2012/06/03/165405 ■以下のニュースもあったので、色々行き詰まってるのでしょうね。 米Oracle、Sun仮想化プロダクトの開発終了へ http://news.mynavi.jp/news/2013/07/16/162/index.html ---抜粋--- Oracle Secure Global Desktopおよび Oracle VM VirtualBoxの開発に関しては引き続き提供 ---------- ■ホストOS(debian wheezy)とVMWare Player + VMWare VIX は普通にインストール。 ※別にXDMCP経由でやる必要ないですし、Wheezyでも手順は同じです。。。 ネットノート(V5-171-F58D/S)をWheezy化 http://d.hatena.ne.jp/labunix/20130708 XDMCP経由でVMware-Player、VMware-VIXをインストールする。 http://ameblo.jp/labunix/entry-10989332569.html ■vmware-tools用。 リモート操作時には必要性を感じたことが無いのと、 VMWare固有のゲストOSにしたくないので、最近はどのゲストOSにも入れてません。 vmplayerのVyattaにvmware-toolsを導入 http://d.hatena.ne.jp/labunix/20120806 $ echo "build-essential dh-make debhelper devscripts linux-headers-`uname -r`" | \ sudo apt-get install -y `xargs` ■Virtualbox用の仮想マシンの導入 Intel VT-xを有効にした1CPUを割り当て。 ※ホストOSのGnome3がフォールバックモードなので、 GUIはインストーラではなく別途導入、classicモードでログインします。 $ grep flags /proc/cpuinfo | sed s/" "/"\n"/g | grep vmx vmx $ sudo apt-get install -y gdm3 gnome-session gnome-terminal uim-anthy $ sudo apt-get build-dep uim-anthy ■nfsv4でマウント、ISOイメージが見えるようにする。 ※普通にダウンロードすれば良いです。。。 scpでもftp/ftpsでもsmbclientでもその他なんでも。。。 NFS+Xenのライブマイグレーションを試す http://labunix.hateblo.jp/entry/20130715/1373888357 ■VirtualBoxの導入 現在の最新版はVirtualBox 4.2.16。 Download VirtualBox https://www.virtualbox.org/wiki/Downloads $ sudo apt-get install -y virtualbox $ virtualbox --help | head -1 Oracle VM VirtualBox Manager 4.1.18_Debian ■virshコマンドを使えるようlibvirt-binを導入 $ sudo apt-get install -y libvirt-bin uuid-runtime $ sudo virsh list Id Name State ---------------------------------------------------- ■今回はvmrunのnoguiオプションで起動、「ssh -X」でGUI起動。 $ vmrun -T player start vmware/vbox-wheezy/vbox-wheexy.vmx nogui $ ssh -X vbox-wheezy $ virtualbox & ■ゲストOSのインストール ハードディスクはvmdkも選べます。 ストレージでISOイメージをCDドライブに割り当て。 入れるのは、当然Wheezy。 ■virshで確認 ユーザ権限で実行されているので、ユーザ権限でvirshコマンドを実行する。 $ ps aux | grep virtualbox | grep -v grep | \ sed s%" .* /"%" "%g | sed s/"\(--startvm\) .* \(--no-startvm\)"/"\1 \"UUID\" \2"/ labunix usr/lib/virtualbox/VirtualBox labunix usr/lib/virtualbox/VBoxXPCOMIPCD labunix usr/lib/virtualbox/VBoxSVC --auto-shutdown labunix usr/lib/virtualbox/VirtualBox --comment vdebian --startvm "UUID" --no-startvm-errormsgbox $ virsh list Id Name State ---------------------------------------------------- 1 vdebian running $ virsh vcpucount 1 maximum config 1 maximum live 32 current config 1 current live 1 ■autostart には対応していない様子。 $ virsh autostart vdebian error: Failed to mark domain vdebian as autostarted error: this function is not supported by the connection driver: virDomainSetAutostart ■自動起動にはそれなりに手間をかける必要がある様子。 VirtualBox init.d service autostart script http://www.amiryan.org/2009/11/04/virtualbox-init-d-service-autostart-script/ ■テンプレートの作成は可能なので、以下4箇所を変更すれば使えるはず。 名前の変更 uuidgenコマンドで得たUUIDに変更 vdiディスクのコピー、場所を指定 MACアドレスの変更 $ virsh dumpxml vdebian > vdebian.xml $ wc -l vdebian.xml 43 vdebian.xml ■IPは特に設定していないし、テンプレート内にも無いが、ログに出る。 $ grep DHCP VirtualBox\ VMs/vdebian/Logs/VBox.log 00:13:49.641 NAT: DHCP offered IP address 10.0.2.15 00:13:49.721 NAT: DHCP offered IP address 10.0.2.15 ■上記を参考にテンプレートを修正 「-t」で「uuidgen」を時刻ベースに強制、MACアドレスの下4桁分の16進数に割り当てている。 テンプレート元の仮想マシンからのコピー操作だけは、仮想マシンをシャットダウンした状態で行う。 $ cp vdebian.xml vdebian2.xml $ sed -i s/"name>vdebian"/"name>vdebian2"/ vdebian2.xml $ sed -i s%"<uuid>.*</uuid>"%"<uuid>`uuidgen`</uuid>"% vdebian2.xml $ cp -r ~/VirtualBox\ VMs/vdebian/ ~/VirtualBox\ VMs/vdebian2 $ sed -i s%"/[a-z]*.vdi"%"2&"% vdebian2.xml $ MYMAC=`uuidgen -t | cut -c 1-4 | sed s/"^.."/"&:"/` $ sed -i s%"\(<mac address=...:..:..:..:\)[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]\(./>\)"%"\1${MYMAC}\2"% vdebian2.xml ■おまけに今回はCPU数も他の仮想ツールのゲストOSに合わせて2CPUに変更。 また、vmplayerとの同時比較を行うためにメモリを512MBに変更 $ sed -i s%"\(<vcpu placement=.static.\)>1<\(/vcpu>\)"%"\1>2<\2"% vdebian2.xml $ echo "512" | awk '{print $1*1024}' 524288 $ sed -i s/"393216"/"524288"/g vdebian2.xml ■テンプレートから新しいゲストOSを生成 $ virsh define vdebian2.xml $ virsh list ■VBOXManageコマンドではUUIDで管理しているので、 稼働中ならそれを変数に入れて次回の起動コマンドに渡せる。 $ VBoxManage list vms | sed s/"{.*}"/"{ UUID }"/ "vdebian" { UUID } $ UUID=`VBoxManage list vms | sed s/".*{\|}"//g` $ VBoxHeadless --startvm $UUID ■virsh dumpsmlにはUUIDがあるので、上記同様に変数に渡せる。 $ UUID=`grep uuid vdebian2.xml | sed s%" *<[/u]*id>"%%g` $ VBoxHeadless --startvm $UUID $ VBoxManage list vms | sed s/"{.*}"/"{ UUID }"/g "vdebian" { UUID } "vdebian2" { UUID } ■vmdkと以下のサイトのテンプレートを修正すればすぐに使えそう。 vmplayer用もあるということは?。。。 ※メモリ640MBとかVCPUが1個とかslaxとか。。。 要件は自身で気にしてください。 VirtualBox hypervisor driver http://libvirt.org/drvvbox.html VMware Workstation / Player hypervisors driver http://libvirt.org/drvvmware.html ■参考 ■[VirtualBox] VirtualBoxをCUIで使う http://d.hatena.ne.jp/ao3/20110212/1297541305 ■まとめ 体感ではあるが、Virtualboxの動作は意外と(?)びっくりするほど遅い。 あまりに遅いので、VMWare Playerも入れてみたがこちらの方が全然速い。 3年位前にVMWare Playerと比較して、ネットワークをきちんと制御できないとか、 ゲストOSでブルースクリーンが拝める確率が高いとかは経験上記憶にあるけど、 あまり進歩していないどころか、他の仮想化ツールに比べて大きく遅れをとっている印象。 Virtualboxの構成を他の仮想化ツールに合わせて2CPUに変更したが、そういう問題ではないようだ。 GUIを出さずに起動するとずっとマシになるがそれでも遅い。 速さなので、小さいほど速いとすると、 同じvmplayer上にゲストOSとして構成した仮想化ツールは、 以下のような位置づけとなる。 qemu-kvm >> virtualbox >>>>> vmplayer > Xen,ESXi ※Xen4.1とESXi5.1が一番速くて、体感速度は同じくらい。 「>」の数は「3年単位の何世代前か」というイメージで付けた。 Virtualboxは18年前のマシン性能、qemu-kvmは24年前の。。。 ベンチマークして数字を出すと面白いかも知れないが、 そこまでして遅い仮想化ツールを使う気にはならない。 意味があるベンチマークはXenとESXiの比較くらいだろう。 ■vmplayer上に構成した他の仮想化ツールは以下。 vmplayer内のWheezyにXenを導入 http://d.hatena.ne.jp/labunix/20130702 vmplayer内のXenを、ルーティングモードでブリッジする。 http://labunix.hateblo.jp/entry/20130714/1373786242 Xenの設定 http://labunix.hateblo.jp/entry/20130715/1373882921 NFS+Xenのライブマイグレーションを試す http://labunix.hateblo.jp/entry/20130715/1373888357 WheezyにQEMU-KVMを導入 http://labunix.hateblo.jp/entries/2013/07/16