VirtualBoxのShared Folderが遅すぎるのでどうにかする(Windows向け)

開発用にVagrant/VirtualBoxを使っているのだけど、ゲストOS側のファイルアクセスが遅すぎて開発効率が落ちていたので対応した。

対策

選択肢としては、「SSHでゲストOSをマウントする」か「sambaを使う」のどちらかになる。

SSHでゲストOSをマウントする

WindowsでSSHでリモートのファイルシステムをマウントする方法はいくつか存在するが、win-sshfsを使うのが比較的マトモな挙動をすると思う。

こちらはあまりガッツリ使い込んでいないので、何か問題があるかもしれない。

sambaを使う

ゲストOS側でsambaをインストールして、Windowsファイル共有する。とりあえず今のところは大きな不満はない(ホストOS側でのファイルアクセスが多少遅くなるが許容範囲内)ので、様子をみている。

ただし、設定時に以下の点がポイントとなる。これを設定しないと、ホストOS側からのファイルアクセスが非常に遅くて辛いことになる。

あと、効果があったか検証していないが、VirtualBox用の仮想NIC(host only network)で、IPv6QoSパケットスケジューラを無効化している。

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