VirtualBox 5.0のリリースで採用された準仮想化によってVagrantのSynced Foldersが劇的に高速化しました!

私は仕事でWindows環境を使用しており、主にCMSのテンプレート開発、カスタマイズを行っています。当初はXAMPP、MinGWなど色々試していましたが最近はすっかりVagrant(とVirtualBox)に落ち着いていました。

過去記事: Windows環境でも黒い画面を簡単に試す方法を調べてみた!

ただ、一個だけどうしても不満だったのはVirtualBoxのホストマシンとゲストマシン間のファイル同期機能(Synced Folders)がとても遅いことでした。
これによってCMSの動作がとても遅く、致し方がなくCMS側の高速化などを行い対処をしていました。(※)

※Mac環境ではSync FolderにNFSを使用するオプションがありますが、WindowsのWinNFSDはかなり動作が不安定で謎なキャッシュが消えず...諦めていました

準仮想化についての説明は以下のサイトから引用します。

Oracle、"準仮想化"をサポートした「Oracle VM VirtualBox 5.0」を正式公開

実環境を完全にエミュレートして特に仮想化を想定していないゲストOSをそのまま実行できるようにする"完全仮想化(Fullvirtualization)"に対し、"準仮想化"は仮想実行のために構成されたゲストOSを利用するため、より正確で効率的な仮想化が可能。「Oracle VM VirtualBox 5.0」では、OSの組み込み仮想化サポート(Windowsの場合は「Hyper-V」)を利用してゲストOSを実行するように構成することで、パフォーマンスを向上させているという。

体感速度は2倍以上!

あくまで体感速度になりますが、Movable Typeの管理画面の画面遷移がこれまでと比較して2倍以上速くなりました。これまではローカル開発にはFastCGIが必須!と思っていましたが無しでもそこそこ動作しそうです。

これまでにVagrant(とVirtualBox)を導入している方は公式サイトからそれぞれのソフトをダウンロードし、上書きインストールをするのと、設定ファイルに 3行 追加するだけですぐに開発環境を高速化できます。

設定ファイルに追加するコードは以下のとおりです。

config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--paravirtprovider", "kvm"]
end

これまでXAMPPやMAMPを使っている方にVagrant(とVirtualBox)を薦めるにはこの部分が課題でしたが、今回のバージョンアップでクリアされました。

Vagrantを使ったことが無い方、これまでも使ってきた方も、是非一度VirtualBox 5.0をお試しください!

参考記事:OS X Yosemite環境のVagrantをポート80で運用する方法