bind mountとnfs

RHEL7.4で確認
bind mountとNFSを使った例

bind mountはディレクトリの一部を別のファイルシステムをmountして構成する仕組みです。

$ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Jan 4 23:55:50 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
:
省略
:
/aaa_HDD/aaa/env /aaa/env none rw,bind 0 0
/aaa_HDD/aaa/comp /aaa/comp none rw,bind 0 0
/aaa_SSD/aaa/csv /aaa/csv none rw,bind 0 0
/aaa_SSD/aaa/host /aaa/host none rw,bind 0 0
$

上記例だと、/aaa_HDD と /aaa_SSD というディレクトリで /aaa というディレクトリを構成している図となります。

/aaa  <-- 実体は /aaa 
|-- env <-- 実体は /aaa_HDD/aaa/env
|-- comp <-- 実体は /aaa_HDD/aaa/comp
|-- csv <-- 実体は /aaa_SSD/aaa/csv
|-- host <-- 実体は /aaa_SSD/aaa/host

OSからどう見えているかと見ると以下の様に見えるはずです。

$ df -a
ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
rootfs - - - - /
:
省略
:
/dev/sda1 508580 121064 387516 24% /boot
/dev/mapper/data--vg01-data--lv01 8587829248 57004 8587772244 1% /aaa/env
/dev/mapper/data--vg01-data--lv01 8587829248 57004 8587772244 1% /aaa/comp
/dev/mapper/data--vg01-data--lv01 8587829248 57004 8587772244 1% /aaa/csv
/dev/mapper/data--vg01-data--lv01 8587829248 57004 8587772244 1% /aaa/host
:
省略
:
$

上記の例だと、でかいHDD領域(/aaa_HDD)とSSD領域(/aaa_SSD)を使って一つのディレクトリを構成しています。

こうやって別のディレクトリを使って構成したディレクトリを NFS で export するのは以下の様な方法をとります。

$ cat /etc/exports
/aaa IPアドレス/24(fsid=0,crossmnt,rw,no_root_squash)
/aaa/env IPアドレス/24(rw,no_root_squash)
/aaa/comp IPアドレス/24(rw,no_root_squash)
/aaa/csv IPアドレス/24(rw,no_root_squash)
/aaa/host IPアドレス/24(rw,no_root_squash)

ディレクトリ構造をそのまま export するような感じですね。

では、クライアント側ですが、単純に export されている /aaa を mount するだけではダメです。
export するのと同じ様に /etc/fstab を記述します。

$ cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Jan 4 23:55:50 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#

省略

ホスト名:/aaa /aaa nfs nfsvers=3,rsize=1048576,wsize=1048576,async,bg,intr,hard 0 0
ホスト名:/aaa/env /aaa/env nfs nfsvers=3,rsize=1048576,wsize=1048576,async,bg,intr,hard 0 0
ホスト名:/aaa/comp /aaa/comp nfs nfsvers=3,rsize=1048576,wsize=1048576,async,bg,intr,hard 0 0
ホスト名:/aaa/csv /aaa/csv nfs nfsvers=3,rsize=1048576,wsize=1048576,async,bg,intr,hard 0 0
ホスト名:/aaa/host /aaa/host nfs nfsvers=3,rsize=1048576,wsize=1048576,async,bg,intr,hard 0 0

#

するとクライアント側では以下の様に見えます。

$ df -ah
ファイルシス   サイズ  使用  残り 使用% マウント位置
rootfs              -     -     -     - /
sysfs               0     0     0     - /sys
proc                0     0     0     - /proc
devtmpfs          55G     0   55G    0% /dev
securityfs          0     0     0     - /sys/kernel/security
tmpfs             55G     0   55G    0% /dev/shm

省略

ホスト名:/aaa    512G   20G  492G    4% /aaa
:
省略
:
#

ちゃんと安定して使えてます。

最初に bind mount を試した後に NFS を試すと良いです。
一度にやると何が悪いか判りませんからね。