vagrantでホストとゲストのファイル共有ができなくてハマった時の対処

# 環境

ホスト：macOS High Sierra 10.13.6
ゲスト：CentOS7
Vagrant 2.2.14
VirtualBox 6.1.18 r142142

# 概要

VirtualBox+Vagrant構成で、VMとのファイル共有ができなくなった際に実施した対処を記録する。

# 何が起こったか

ファイルが共有できない。Vagrantfileの対象箇所の記述は以下の通り。

```
config.vm.synced_folder "../data", "/vagrant_data"
```

Virtualbox Guest Additionsがインストールされていないことを確認

```
$ vagrant vbguest --status
[default] No Virtualbox Guest Additions installation found.
```

Virtualbox Guest Additionsを自動設定してくれるvbguestをインストール
→成功している

```
$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.29.0)'!
ichiPc:gitlab02 yuki$ vagrant vbguest --status
[default] No Virtualbox Guest Additions installation found.
ichiPc:gitlab02 yuki$ 
ichiPc:gitlab02 yuki$ 
ichiPc:gitlab02 yuki$ vagrant plugin list
vagrant-vbguest (0.29.0, global)
vagrant-vyos (1.1.7, global)
  - Version Constraint: > 0

ichiPc:gitlab02 yuki$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.29.0)'!
```

vbguestを実行するが、「umount: /mnt: not mounted」と出て失敗する

```
ichiPc:gitlab02 yuki$ vagrant vbguest
[default] No Virtualbox Guest Additions installation found.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * extras: ty1.mirror.newmediaexpress.com
 * updates: ty1.mirror.newmediaexpress.com
Package centos-release-7-9.2009.1.el7.centos.x86_64 already installed and latest version
Nothing to do
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * extras: ty1.mirror.newmediaexpress.com
 * updates: ty1.mirror.newmediaexpress.com
No package kernel-devel-3.10.0-957.12.2.el7.x86_64 available.
Error: Nothing to do
Unmounting Virtualbox Guest Additions ISO from: /mnt
umount: /mnt: not mounted
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

umount /mnt

Stdout from the command:



Stderr from the command:

umount: /mnt: not mounted

```


# 対処

### ゲストOSでの作業

EPELリポジトリーを追加

```
# yum -y install epel-release
```

yumパッケージを最新にする

```
# yum -y update
```

再起動

```
# reboot
```

Guest Additionsのインストールに必要なパッケージをインストール

```
# yum -y install make gcc kernel-headers kernel-devel perl dkms bzip2
```

### ホストOSでの作業

もう一度vbguestを実行→成功

```
$ vagrant vbguest
[default] No Virtualbox Guest Additions installation found.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * epel: ftp.jaist.ac.jp
 * extras: ty1.mirror.newmediaexpress.com
 * updates: ty1.mirror.newmediaexpress.com
Package kernel-devel-3.10.0-1160.15.2.el7.x86_64 already installed and latest version
Package kernel-devel-3.10.0-1160.15.2.el7.x86_64 already installed and latest version
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package binutils-2.27-44.base.el7.x86_64 already installed and latest version
Package 1:make-3.82-24.el7.x86_64 already installed and latest version
Package 4:perl-5.16.3-299.el7_9.x86_64 already installed and latest version
Package bzip2-1.0.6-13.el7.x86_64 already installed and latest version
Package elfutils-libelf-devel-0.176-5.el7.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Mounting Virtualbox Guest Additions ISO to: /mnt
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 6.1.18 - guest version is unknown
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.1.18 Guest Additions for Linux........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel 
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel 
3.10.0-1160.15.2.el7.x86_64.
Redirecting to /bin/systemctl start vboxadd.service
Redirecting to /bin/systemctl start vboxadd-service.service
Unmounting Virtualbox Guest Additions ISO from: /mnt
```

VMを再起動

``` 
$ vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Checking if box 'centos/7' version '1905.1' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 80 (guest) => 11080 (host) (adapter 1)
    default: 22 (guest) => 2200 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2200
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
[default] GuestAdditions seems to be installed (6.1.18) correctly, but not running.
Redirecting to /bin/systemctl start vboxadd.service
Redirecting to /bin/systemctl start vboxadd-service.service
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel 
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel 
3.10.0-1160.15.2.el7.x86_64.
VirtualBox Guest Additions: Running kernel modules will not be replaced until 
the system is restarted
Restarting VM to apply changes...
==> default: Attempting graceful shutdown of VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Rsyncing folder: /Users/yuki/vagrant/gitlab02/ => /vagrant
==> default: Mounting shared folders...
    default: /vagrant_data => /Users/yuki/vagrant/data
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.
```

### ゲストOSでの作業(確認)

共有フォルダがマウントされていることを確認。

```
$ ls -l / | grep vagrant_data
drwxr-xr-x.   1 vagrant vagrant        800  2月  4 01:19 vagrant_data
```