どうやら素の状態では仮想マシン起動時に rsync
で同期するだけのようです。
リアルタイムで同期させるには、VitualBoxの仮想マシンに Guest Addtions
が必要みたいです。
Guest Addtions
のインストールで少々嵌ったのでメモを残しておきます。
環境
- ホスト: macOS
- ゲスト: CentOS7(公式サイトからダウンロードしたboxで作成)
依存パッケージをインストール
インストールの前に CentOS の kernel
を更新しておきます。
# yum update kernel -y
終了したら、依存パッケージをインストールします。
# yum install kernel-devel gcc -y
終了したら、必ず仮想マシンを停止させます。
停止しなかった場合、このあと実行する Guest Addtions
のインストールが失敗します。
$ vagrant halt
Guest Addtionsのディスクイメージをマウント
停止したら、VirtualBoxマネージャから対象の仮想マシンに光学ドライブを追加します(空のままでOK)。
ドライブを追加したら、仮想マシンを起動させます。
$ vagrant up
起動したら、VirtualBoxマネージャから対象の仮想マシンのコンソールを起動し、メニューバーのDevices
→Insert Guest Addtions CD Image...
を実行します。
実行後に特にメッセージなどは表示されないので、そのままCentOS にディスクイメージをマウントします。
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom
Guest Addtionsのインストール
環境変数を設定して、インストールスクリプトを実行します(環境変数の内容はバージョンにより可変)。
# export KERN_DIR=/usr/src/kernels/3.10.0-693.2.2.el7.x86_64/
# /mnt/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.28 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Starting the VirtualBox Guest Additions.
Could not find the X.Org or XFree86 Window System, skipping.
最後の Could not find the X.Org or XFree86 Window System, skipping.
は無視して構わない感じです。
共有フォルダをマウント
ひとまず、仮想マシンを停止させます。
$ vagrant halt
Vagrantfile
に共有フォルダ設定を追加します。
config.vm.synced_folder "../data", "/vagrant_data"
ちなみに共有フォルダ設定が追加されていない場合でも、Vagrantfile
のあるフォルダが /vagrant
にマウントされるようになっています。これはデフォルトで rsync
で同期されるようです。
これをリアルタイム同期に変更したい場合は、Vagrantfile
に下記の設定を追加します。
config.vm.synced_folder ".", "/vagrant", type:"virtualbox"
仮想マシンを起動させます。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
(snip)
==> default: Rsyncing folder: /foo/bar/ => /vagrant
==> default: Mounting shared folders...
default: /vagrant_data => /foo/bar/data
(snip)
$ ll / | grep vagrant
drwxr-xr-x. 2 vagrant vagrant 25 Sep 26 07:11 vagrant
drwxr-xr-x. 1 vagrant vagrant 102 Sep 26 08:17 vagrant_data
このようにしてマウントされた共有フォルダは、双方向の変更がリアルタイムで同期されます。