仮想マシン環境を移行した(VMware PlayerからVirtual Boxへ)

カテゴリ: コンピュータ / 公開日: 2013年5月27日(月曜)17:55 / 投稿者: Tom Goodsun

新しいPCを購入したので、今まで使っていたPCが余ることになる。
今までWindows上にVMで開発環境などを構築していたので、これを機会に物理的にVM環境を構築するようにした。

まず、Windows 7上にVMware Playerを設置し、そこにCentOSとScientific Linuxを設置していた。
今回新しく1TBのHDDを購入、メモリは12GB(32ビットOSなのに12GBも入れてしまったという私のミスがようやく報われる)。
ベースはUbuntuの最新版で、今回はVMソフトをVirtualBoxに変えてみる。

Ubuntuをインストールしたら、VirtualBoxをインストール。
ここまでは下準備で、いよいよ仮想マシンの移行を行う。

VMware PlayerからVirtualBoxへの移行

VirtualBoxは便利なことに仮想HDDのフォーマットを幾つか選ぶことができる。
VMware Playerで使われているVMDKフォーマットも対応している。

既存の仮想HDDからVMを作ることもできるので、その方法でいく。

予め、新しいPCのC:\vmwareに電源を落としたVMたちを移行していたので、Ubuntuの方へこれを移す。

VirtualBoxを動作させるユーザーの$HOME/Virtual VMs/に既存のVMの仮想HDD一式をコピー。
VirtualBoxを開きウィザードにしたがって設定していく。
途中既存の仮想HDDを選択する画面が出てくるので、VMDKを選択して、コピーした仮想HDDを選択すればおしまい。
チョー簡単。

詳しくは以下のサイトを参照。
  【linux備忘ログ】 2011/04/25(月) VMwarePlayerからVirtualBoxへの引っ越し

ネットワークの設定

このままではネットワークもINもOUTも使用できない。
各VMを選択して「設定」を選択。「ネットワーク」にある「割り当て」を「ブリッジアダプター」に変更。
こうすることで、ホストOSのネットワークにブリッジして、ネットワークがLAN上で有効になる。

ちなみに、ここに表示されているMACアドレスを一旦控えておく。

既存の仮想マシンから移行した場合、ちょっとした問題があり、これだけではネットワークは有効にならない。
なぜかというと、仮想ネットワーク自体が変わっているので、MACアドレスが変わってしまっているのだ。

rootでログインし、 /etc/udev/rules.d/70-persistent-net.rulesを開く。
おそらく2行目ぐらい出てきていると思うので、eth0が含まれる行をコメントアウトし、eth1が含まれる行のeth1をeth0に書き換える。
そして、その行に記載しているMACアドレスが先ほど控えたものと同じか確認。
次に/etc/sysconfig/network-scripts/ifcfg-eth0を開きHWADDRに記載されているMACアドレスが、控えたものに書き換える。
ここまでしたらネットワークを再起動。

# /etc/init.d/network restart

自動起動設定

Virtual BoxでホストOSが起動した時にゲストOSを自動的に起動(状態の復帰)を行うようにする。
これが若干ややこしかったが、同じことを考えてる人がいたようで、それを参考にすることにした。

まず以下のサイトからスクリプトをコピー。
/etc/init.d/vboxcontorl.shを作成する。権限も設定しておく。

VirtualBoxのVM起動停止スクリプト。自宅の運用方針に合うように、かつ、Ubuntu用に、改変を行ったもの。ベースは→ http://www.pclinuxos.com/forum/index.php?topic=103651.0

# sudo vi /etc/init.d/vboxcontorl.sh
# sudo chmod 775 /etc/init.d/vboxcontorl.sh

若干カスタマイズする。37行目と38行目だ。

VM_USER="{Virtual Boxを実行するユーザー名}"
VBOXDIR="/etc/virtualbox"

で、これを起動スクリプトとしてインストールする。
RedHat系はchkconfigとかなんだけど、Ubuntuはよくわからなかった。
以下でいけるらしい。

$ sudo update-rc.d /etc/init.d/vboxcontorl.sh defaults

ここからがちょっとわからんかったけど、この起動スクリプトのもとになった海外のフォーラムを見たら答えがあった。
Topic: Auto-Start / Stop Headless VirtualBox (VBox) VM's

つまりだ。
/etc/virtualbox/configというテキストファイルを作成して、そこにVMの名前を改行区切りで列挙していく。

# sudo vi /etc/virtualbox/config
MyWeb01
MyDatabase01
MyManagement01

これで、再起動するとVirtual BoxのゲストOSも自動的に起動する。
ただ、これだとGUIでログインしても、バーチャルコンソールが使えなくなるので、あしからず。

問題となったゲストOSの時計問題

ホストOSを起動するとゲストOSの時間がくるってしまう。
VMwareの場合はVmware Toolsという(若干重たい)ツールでゲストOSと同期をとるのだが、うまく動かないこともあったので、WindowsでVM起動時に調整スクリプトを一発かますという何とも言えない運用をしていた。
これから脱却したくもあるわけだが・・・。
で、なぜかよくわからないので、いろいろググった結果、Virtual Boxの時間オフセットとゲストOSにインストールしたntpdが問題のようだ。
最近VirtualBox Guest OS の時計が合わない(直しても一瞬で ずれる)→ Time Offsetのカスタマイズで解決

上記サイトでは16時間ぐらいマイナスするってことらしいが、私の環境の場合biossystemtimeoffsetは基本的に0でいいようだ。
デフォルトは0のようだが、念のため。

まずは、ゲストOSのntpdを自動起動設定からはずす。
私の場合、のっかっているのはCentOSとScientificLinuxだけだったので、ntsysvコマンドでサックリOFFった。
そしてゲストOSをシャットダウンして、ホストOSで以下のコマンドを実行する。

# vboxmanage modifyvm {VMの名前} --biossystemtimeoffset 0

そして起動すると、見事に時間があっている。

総評

バーチャルコンソールが使えないのは正直痛いが、サーバー的運用が可能なので、開発環境を作るぐらいであれば全然問題ない。(今後使えないかいろいろ試してみたいが・・・)
64bit OSとメモリ、ディスクを増強して、仮想マシンに割り当てることでかなり快適な環境が構築できるし、VMware Playerからの移行がめっちゃ楽というのはかなり評価が高い。
若干VMwareよりもいいかもと思うが、やはり仮想サーバーとしてはVMwareのほうに軍配が上がるだろう。
みなさんも快適な仮想化ライフをお過ごしください。