VirtualBoxのShared Folderが遅すぎるのでどうにかする(Windows向け)
開発用にVagrant/VirtualBoxを使っているのだけど、ゲストOS側のファイルアクセスが遅すぎて開発効率が落ちていたので対応した。
原因
VirtualBoxのShared Folder機能が遅い。Vagrant公式でもこの問題は認識されていて、NFSモードに切り替えると改善するとのことだが、ホストOSがWindowsだとそもそもNFSが使えない。
対策
選択肢としては、「SSHでゲストOSをマウントする」か「sambaを使う」のどちらかになる。
SSHでゲストOSをマウントする
WindowsでSSHでリモートのファイルシステムをマウントする方法はいくつか存在するが、win-sshfsを使うのが比較的マトモな挙動をすると思う。
こちらはあまりガッツリ使い込んでいないので、何か問題があるかもしれない。
sambaを使う
ゲストOS側でsambaをインストールして、Windowsファイル共有する。とりあえず今のところは大きな不満はない(ホストOS側でのファイルアクセスが多少遅くなるが許容範囲内)ので、様子をみている。
ただし、設定時に以下の点がポイントとなる。これを設定しないと、ホストOS側からのファイルアクセスが非常に遅くて辛いことになる。
- ゲストOS(samba)側の設定でSMB2を有効にする
- ホストOS(Windows)側でSNPを無効にする
あと、効果があったか検証していないが、VirtualBox用の仮想NIC(host only network)で、IPv6とQoSパケットスケジューラを無効化している。
vagrant用のsmb.confの設定例(Ubuntu 12.04)
[global] workgroup = WORKGROUP server string = %h server (Samba, Ubuntu) dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n$ pam password change = yes map to guest = bad user load printers = no dos charset = CP932 unix charset = UTF8 display charset = UTF8 unix extensions = no wide links = yes max protocol = SMB2 security = user [vagrant] path = /home/vagrant guest ok = yes writable = yes browseable = yes force user = vagrant force create mode = 0644 force directory mode = 0775