SambaでVagrant上での開発が加速する？

ホストOSがWindowsにおけるVagrant開発において、VirtulBoxによるファイルの共有ではなくSambaを利用すると、開発スピードが加速するという話を聞いたので検証してみました。

# 前提

- ホストOS:Win10
- ゲストOS:CentOS 6系
- Vagrantの用途:Webシステム開発
	- 補足: PHP 7.0 / CakePHP 3.3 / MySQL 5.6

# やりたいこと
Sambaを使うことでVagrant開発が加速するという情報はGoogleで検索すると山ほどありました。
ただし、個人的にはVagrantのBoxによって構成されるストレージ上に、実装するソースは保存したくないと考えています。

そのため、VirtulBoxに対して新たにストレージを追加したうえでSambaにてファイルを共有することにしました。

# この記事の目的

方法については、すでにわかりやすい記事があるため、この記事の最後に参考サイトを張り付けておきます。
当記事では、下記構成にした結果、どの工程がどのくらい早くなったのかを共有します。

# 構成
![image](https://qiita-image-store.s3.amazonaws.com/0/155677/65abd9ca-5bd0-a0a1-f25b-a16a3c3fd8c4.png)

# 作業内容

- VirtulBoxに仮想HDDを追加してCentOSでマウントする方法
仮想ハードディスクの追加: http://pcl.solima.net/virtualbox/vbaddvhd
※補足：あまり重要ではないですが、当記時ではハードドライブのファイルタイプをVagrantに合わせてVMDKにしています
<br />

- Vagrant上にSambaをインストールしてWindowsから参照する方法
Vagrant + CentOS 7でsambaをインストールする: http://qiita.com/aosho235/items/0d2d94ba853a8ad6b798

# ベンチ
## ファイルアクセス
結果的に数値だけを見ると、ネットワークドライブ側は使い物にならないくらい性能が劣化している。
当然といえば当然なのかな？
ネットワークの設定をごにょごにょすれば少しは改善されるのかもしれないが、その辺の知識は持ち合わせていないので、何かご存知の方は共有いただけると助かります。

grep検索を多用する私にとっては、許容範囲とは言い難い性能劣化のように思う。

### ホスト上の物理ドライブ
![image](https://qiita-image-store.s3.amazonaws.com/0/155677/e75a63c2-c1e9-70f1-9a79-a11a6a0a585c.png)

```
-----------------------------------------------------------------------
CrystalDiskMark 5.0.2 x64 (C) 2007-2015 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   552.436 MB/s
  Sequential Write (Q= 32,T= 1) :   251.272 MB/s
  Random Read 4KiB (Q= 32,T= 1) :    96.698 MB/s [ 23607.9 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :    83.189 MB/s [ 20309.8 IOPS]
         Sequential Read (T= 1) :   437.243 MB/s
        Sequential Write (T= 1) :   226.320 MB/s
   Random Read 4KiB (Q= 1,T= 1) :    13.652 MB/s [  3333.0 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :    22.433 MB/s [  5476.8 IOPS]

  Test : 50 MiB [D: 80.8% (87.2/108.0 GiB)] (x5)  [Interval=5 sec]
  Date : 2017/01/13 14:52:36
    OS : Windows 10 Professional [10.0 Build 14393] (x64)
```

### ゲスト上にあるネットワークドライブ
![image](https://qiita-image-store.s3.amazonaws.com/0/155677/e0873a74-9928-5908-5b91-8623586658b0.png)

```
-----------------------------------------------------------------------
CrystalDiskMark 5.0.2 x64 (C) 2007-2015 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :    12.510 MB/s
  Sequential Write (Q= 32,T= 1) :    55.941 MB/s
  Random Read 4KiB (Q= 32,T= 1) :     8.332 MB/s [  2034.2 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :    11.764 MB/s [  2872.1 IOPS]
         Sequential Read (T= 1) :     5.033 MB/s
        Sequential Write (T= 1) :    51.172 MB/s
   Random Read 4KiB (Q= 1,T= 1) :     3.565 MB/s [   870.4 IOPS]
  Random Write 4KiB (Q= 1,T= 1) :     3.712 MB/s [   906.3 IOPS]

  Test : 50 MiB [Y: 6.9% (0.7/9.7 GiB)] (x5)  [Interval=5 sec]
  Date : 2017/01/13 15:00:25
    OS : Windows 10 Professional [10.0 Build 14393] (x64)
```

## トップページへのアクセス
巷で早いといわれるだけあって、3倍以上の性能が確認できました。

左側がホスト上の物理ドライブ：16.54s
右側がゲスト上にあるネットワークドライブ : Load 4.39s
![image](https://qiita-image-store.s3.amazonaws.com/0/155677/090b0db2-3c0a-4683-522e-476c47f0bec9.png)

# 結果
確認作業は確かに早くなりそうです。
ただし、実装においては性能劣化のため工夫が必要と思いました。

まだ、Sambaに切り替えたばかりで実際の開発はしていないため、もしかしたら実際にはストレスはないかもしれません。
しばらくはSambaによる開発を続けてみて、ストレスを感じるようであれば何かしらの改善をしてみようと思います。