CoreOSからNFSでホストとファイルを共有する

coreos-xhyveを使います

[前回](http://qiita.com/uraura/items/ea1fc61cad4efd7fb9c1)はディスクイメージをファイルとして作成していたのですが，

- 使いたい容量の分だけファイルを作っておかなければならない
- ファイルがデカいので取り回しが悪い
- 複数のディスク付けようと思ったら起動シェルを編集しなければならない

とか，いろいろ不都合だったのでNFSでマウントしてやることにします．

# Mac(ホスト)側
NFSサーバを起動しておいてやる必要があります．

## /etc/exports を作成
```:/etc/exports
/Volumes/docker -maproot=root -network 192.168.64.0 -mask 255.255.255.0
```
あわせてマウントポイントを作成

```bash
mkdir /Volumes/docker

sudo chown root:wheel /Volumes/docker
```

owner/groupを間違えるとコンテナが起動しなかった．

## nfsd を起動
`/etc/exports`を作成した時点で勝手に`nfsd`が起動するようです．
なので，設定の確認だけ．

```shell-session
uraura@rosemary$ nfsd status
nfsd service is enabled
nfsd is running (pid 9994, 8 threads)

uraura@rosemary$  showmount -a -e
All mounts on localhost:
Exports list on localhost:
/Volumes/docker                     192.168.64.0
```

設定がおかしいときは`/etc/exports`を見直すか，`nfsd`を再起動など

```bash:設定をリロード
sudo nfsd update
```

```bash:nfsdを再起動
sudo nfsd restart
```

# CoreOSのcloud-initを作成

https://gist.github.com/mystelynx/5a1f973bc75af52a8d15

前回との差分は下記

```diff
        [Mount]
-        What=/dev/vda
+        What=192.168.64.1:/Volumes/docker
         Where=/var/lib/docker
-        Type=ext4
+        Type=nfs
+        Options=nolock
```

# VM起動
```bash
sudo ./coreos-xhyve-run -f custom.conf
```

# 確認
## CoreOS上で確認
```shell-session
core@localhost ~ $ df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      892M     0  892M   0% /dev
tmpfs                        1003M     0 1003M   0% /dev/shm
tmpfs                        1003M   17M  987M   2% /run
tmpfs                        1003M     0 1003M   0% /sys/fs/cgroup
tmpfs                        1003M  6.8M  997M   1% /
/dev/loop0                    195M  195M     0 100% /usr
tmpfs                        1003M     0 1003M   0% /tmp
tmpfs                        1003M     0 1003M   0% /media
192.168.64.1:/Volumes/docker  465G  224G  242G  49% /var/lib/docker

core@localhost ~ $ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=912768k,nr_inodes=228192,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime,seclabel)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
tmpfs on / type tmpfs (rw,relatime,seclabel)
/usr.squashfs (deleted) on /usr type squashfs (ro,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,seclabel)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
tmpfs on /media type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel)
192.168.64.1:/Volumes/docker on /var/lib/docker type nfs (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.64.1,mountvers=3,mountport=820,mountproto=udp,local_lock=all,addr=192.168.64.1)
```

## Mac側で確認
```shell-session
uraura@rosemary$ showmount -a -e
All mounts on localhost:
192.168.64.39:/Volumes/docker
Exports list on localhost:
/Volumes/docker                     192.168.64.0
```