Vagrantの共有フォルダが動かないとき

Vagrant

vagrant upしてもなぜかローカルと同期してくれないことがある。
Vagrantfileに共有フォルダの設定は書かれていて、一応ssh接続はできるときの対処法。

共有フォルダのパス長、シンボリックリンクの問題は今回のケースとは別なので扱わない。

発生事例と対応

※OSはCentOS

Vagrantfileには以下のような感じでsynced_folderを設定する記述は一応書いてある。

config.vm.synced_folder "./hoge", "/var/hoge", create: true, mount_options: ['dmode=755','fmode=644']

これでvagrantの起動自体はできても、共有フォルダのマウントに失敗していることがある。
この際、カーネルのバージョン不一致が原因になっているケースが。
下記のような文言がvagrant up時に含まれていれば、その可能性が高い。


Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.

Virtualbox Guest Additionsインストール時などにバージョンのずれが起きやすい印象。
vagrant sshしてkernel関係のものを調べてみる。

rpm -qa kernel\* | sort

kernel-3.10.0-693.21.1.el7.x86_64
kernel-headers-3.10.0-862.2.3.el7.x86_64
kernel-tools-3.10.0-693.21.1.el7.x86_64
kernel-tools-libs-3.10.0-693.21.1.el7.x86_64

# kernel-headers が kernel のバージョンに対応していない状態。

上記のようにずれが生じていればその部分を修正する

sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers kernel-tools kernel-tools-libs

パッチバージョンまで揃ったか確認する

rpm -qa kernel\* | sort

kernel-3.10.0-693.21.1.el7.x86_64
kernel-3.10.0-862.2.3.el7.x86_64
kernel-devel-3.10.0-862.2.3.el7.x86_64
kernel-headers-3.10.0-862.2.3.el7.x86_64
kernel-tools-3.10.0-862.2.3.el7.x86_64
kernel-tools-libs-3.10.0-862.2.3.el7.x86_64

vagrant reloadで共有できているか確認して、問題なく共有されていればOK。

類似の対応

似たような感じでカーネルのアップデートでも対処できることがある。
ssh後に以下のようにアップデートを行う


sudo yum -y update kernel
sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

vagrant-vbguestのプラグインをインストールする

vagrant plugin install vagrant-vbguest

この手順でも対応可能。

タイトルとURLをコピーしました