技ログ

Tech, etc.

VagrantでNFSマウント出来ない

ホストとの共有は NFSの方がパフォーマンスが良い らしいので、
Vagrantfileで設定してみたところ、エラーが発生してNFSマウント出来ない。

※追記あり(2014/1/23)

1
2
Mac$ vim Vagrantfile
config.vm.synced_folder "/Users/xxx/app/", "/app/", nfs: true

下記エラーが発生。

1
2
3
4
5
6
7
Mac$ vagrant up
[default] Exporting NFS shared folders...
NFS is reporting that your exports file is invalid. Vagrant does
this check before making any changes to the file. Please correct
the issues below and execute "vagrant reload":

Can't open /etc/exports

ホスト側で/etc/exportsを作成(空ファイルでよい)

1
Mac$ sudo touch /etc/exports

NFSは起動していた。

1
2
3
Mac$ sudo nfsd status
nfsd service is enabled
nfsd is running (pid 3697, 8 threads)

起動していなかった場合は以下を実行。

1
Mac$ sudo nfsd enable

別エラー発生。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Mac$ vagrant reload
[default] Exporting NFS shared folders...
Preparing to edit /etc/exports. Administrator privileges will be required...
[default] Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -o 'vers=3,udp' 192.168.33.1:'/Users/xxx/app' /app

Stdout from the command:



Stderr from the command:

mount.nfs: access denied by server while mounting 192.168.33.1:/Users/xxx/app

sudo nfsd checkexports→vagrant reloadで解決
https://github.com/mitchellh/vagrant/issues/1744

1
2
3
4
5
Mac$ sudo nfsd checkexports
Mac$ vagrant reload
[default] Exporting NFS shared folders...
Preparing to edit /etc/exports. Administrator privileges will be required...
[default] Mounting NFS shared folders...

起動後、マウント出来ていることを確認。

1
2
3
Vagrant$ df -h /app
Filesystem                     Size  Used Avail Use% Mounted on
192.168.33.1:/Users/xxx/app  466G   48G  417G  11% /app

追記(2014/1/23)

OS再起動時に再発。

Mac OS側の/etc/exportsを確認してみると、Vagrantが自動生成している許可設定内のIP(10.0.2.15)と Vagrant up時に実行されているmountコマンドでのNFSサーバIP(192.168.33.1)とでネットワークが異なっている。

許可していないのだからdenyしますよね…。

1
2
3
4
Mac$ cat /etc/exports
# VAGRANT-BEGIN: 
"/Users/xxx/app" 10.0.2.15 -alldirs -mapall=501:20
# VAGRANT-END: 
1
2
3
4
5
6
7
8
9
10
11
12
13
[default] Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

mount -o 'vers=3,udp' 192.168.33.1:'/Users/xxx/app' /app

Stdout from the command:



Stderr from the command:

mount.nfs: access denied by server while mounting 192.168.33.1:/Users/xxx/app

とりあえず、Mac OS側で/etc/exportsを手動変更。
→仮想マシン側の192.168.33.0/24のIPを許可

1
2
Mac$ sudo vim /etc/exports
+ "/Users/xxx/app" 192.168.33.12 -alldirs -mapall=501:20

手動でmountコマンド実行。
→マウント出来た。

ただ、これだと格好悪いので、Vagrantfileで綺麗に指定出来ないものだろうか。

1
2
3
4
Vagrant$ sudo mount -o 'vers=3,udp' 192.168.33.1:'/Users/xxx/app' /app
Vagrant$ df /app
Filesystem                    1K-blocks     Used Available Use% Mounted on
192.168.33.1:/Users/xxx/app 487712928 49724160 437732768  11% /app

バージョン

1
2
3
4
5
6
7
8
9
Mac$ vagrant --version
Vagrant 1.4.1
Mac$ sw_vers
ProductName:  Mac OS X
ProductVersion: 10.9.1
BuildVersion: 13B3116

Vagrant$ cat /etc/redhat-release
CentOS release 6.5 (Final)

VagrantのBox

https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box