Edited at

Vagrantのshare folderが遅い時はNFSを使うといいです

More than 3 years have passed since last update.


概要

Vagrant内のcentos6でrailsの開発をしてました。

ソースを共有フォルダに置いて動作確認していたのですが挙動が

異様に重く、調べてみたらvagrantのデフォルトのファイル共有のせいでした。

NFSを利用したら早くなったのでその時のメモです。


環境


  • Mac OS X 10.9.5

  • Vagrant 1.6.5

  • VirtualBox 4.3.18


内容


1. Vagrantfileの編集

ゲスト側の/vagrantをNFSでマウントするようにします。*参考リンク


vagrantfile

  #--途中は省略--

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
#--途中は省略--
config.vm.synced_folder ".", "/vagrant", type: "nfs"
#--以後も省略--
end


2. sudoerを編集

このままでもOKですが、vagrant起動時に毎回マウントするため

パスワード聞かれます。聞かれないようにできるみたいです。

http://joemaller.com/3411/vagrant-nfs-shares-without-a-password/

mac上で下記shellを一度実行すれば聞かれなくなりました。

一応スクリプトを写経。


install_vagrant_sudoers.sh

#!/bin/bash

# Add Vagrant's NFS setup commands to sudoers, for `vagrant up` without a password
# Updated to work with Vagrant 1.3.x

# Stage updated sudoers in a temporary file for syntax checking
TMP=$(mktemp -t vagrant_sudoers)
cat /etc/sudoers > $TMP
cat >> $TMP <<EOF

# Allow passwordless startup of Vagrant when using NFS.
# https://gist.github.com/joemaller/6764700

Cmnd_Alias VAGRANT_EXPORTS_ADD = /bin/bash -c echo '*' >> /etc/exports
Cmnd_Alias VAGRANT_NFSD = /sbin/nfsd restart
Cmnd_Alias VAGRANT_EXPORTS_REMOVE = /usr/bin/sed -E -e /*/ d -ibak /etc/exports
%staff ALL=(root) NOPASSWD: VAGRANT_EXPORTS_ADD, VAGRANT_NFSD, VAGRANT_EXPORTS_REMOVE
EOF

# Check syntax and overwrite sudoers if clean
visudo -c -f $TMP
if [ $? -eq 0 ]; then
echo "Adding vagrant commands to sudoers"
cat $TMP > /etc/sudoers
else
echo "sudoers syntax wasn't valid. Aborting!"
fi

rm -f $TMP


こんな結果になるはず

/tmp/vagrant_sudoers.ziY5C09b: parsed OK

Adding vagrant commands to sudoers


3. リロード

vagrantをリロードしましょう。

リロード後何も聞かれずに立ち上がればOKです。

vagrant reload


4. 結果

早くなりました。

ローカルで動かしてる時より若干遅いかな?くらいのレベルです。

(以前はrails起動ですら数分かかってました。)


参考URL

http://docs.vagrantup.com/v2/synced-folders/nfs.html

http://webradar.info/2014/03/06/slowly-rails-in-vagrant/

https://gist.github.com/joemaller/6764700#file-install_vagrant_sudoers-sh