マウント状況の表示
showmount
コマンドで、エクスポートされた情報や、マウントしているリモートホストの情報が確認できる。
【例】マウントしているリモートホストの情報
shell> showmount -a
All mount points on nfsserver:
nfsclient:/home
※パスが通っていない環境では以下のようにパスも含めて記述する必要あり
/usr/sbin/showmount -a
【例】エクスポートの設定状況
shell> showmount -e
Export list for nfsserver:
/home nfsclient
どのようなオプションでエクスポートしたかも含めて確認するには /proc/fs/nfs/exports
の内容を参照すればよい[15]
【例】
shell> cat /proc/fs/nfs/exports
# Version 1.1
# Path Client(Flags) # IPs
/home *(rw,no_root_squash,sync,wdelay,no_subtree_check,uuid=61683f47:9ae36803:00000000:00000000)
現在、実際にmountされているNFSクライアントを確認するにはnetstatを使ってtcp 2049に接続しに来ているクライアントを調べればよい19
$ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
...
$ netstat -an | grep 192.168.181.223:2049
tcp 0 0 192.168.181.223:2049 192.168.181.221:969 ESTABLISHED
→192.168.181.221が接続している
上の階層へ(リモートマウント)
自動マウント(autofs)
/etc/fstab
を使って固定的にNFSマウントを行い、そのリモート領域が利用できない状態に陥った場合、yumインストール・アップデート、dfコマンドなどが途中で固まってしまう現象が生じうる。この場合、autofsを用いてリモート領域が利用可能な場合だけ自動マウントするように設定しておくと無効なNFSマウントが生じることがなくなり問題が回避できる。
/etc/auto.misc
に書けば、/misc
配下にマウントされる。その他の任意の場所にマウントするには、/etc/auto.master
に/etc/auto.direct
を利用する宣言を行い、/etc/auto.direct
にマウントの指定を記述する[5]。fstabとは記述順序などが異なるので注意。
- 1. /etc/fstab からNSFマウントに関する記述を削除
- 2. /etc/auto.master を編集
-
以下の1行がなければ追記。
/- /etc/auto.direct
- 3. /etc/auto.direct を編集
-
なお、fstabとは異なり、マウントポイントとなるローカルディレクトリは存在しなくてよい。
【書式】
ローカルマウントポイント -オプション NFSサーバ:パス
【例】nfssv:/data をローカルシステムの /data に自動マウントする
/data -fstype=nfs,rw nfssv:/data
- 4. autofs サービスを再起動
-
# /etc/init.d/autofs restart
Stopping automount: [ OK ]
Starting automount: [ OK ]
システムログ(/var/log/messages
)に「lookup_read_master: lookup(nisplus): couldn't locate nis+ table auto.master」のメッセージが表示される場合、/etc/auto.master
内の「+auto.master
」先頭のプラスを除去すればいいらしい[14]
上の階層へ(リモートマウント)
ローカルの他の場所でも参照できるようにする(bind)
同じリソースを複数のローカルマウントポイントで参照できるようにするには、bindを使う。
fstabの例
cat /etc/fstab
autofsの書式
cat /etc/auto.direct
autofsの書式
バインド先 -bind バインド元
autofsの例(ローカル同士)
/var/www/html/files -bind :/data/files
NFS Version 4の設定
NFSのバージョン3と4で一部設定方法の異なる箇所がある。
【例1】server:/hoge を client:/server/hoge で自動マウントにより参照する
[root@server ~]# cat /etc/exports
/hoge client(rw,sync,no_root_squash,fsid=0,crossmnt)
[root@client ~]# cat /etc/auto.master
/- /etc/auto.direct
[root@client ~]# cat /etc/auto.direct
/server/hoge -default server:/
# ver.3 の場合
/server/hoge -default,nfsvers=3 server:/hoge
トラブルシューティング
NFSマウントがかからず「実効性のないNFSファイルハンドルです」と表示される
netfsサービスを再起動したらマウント復帰した[11][13]。
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 9.3G 6.4G 2.5G 73% /
/dev/sda6 9.3G 487M 8.3G 6% /opt
/dev/sda5 19G 9.4G 8.2G 54% /var
/dev/sda1 950M 29M 872M 4% /boot
tmpfs 16G 0 16G 0% /dev/shm
df: `/home': 実効性のないNFSファイルハンドルです
# mount -a
# これでもdfコマンドの結果は変わらず
# /etc/init.d/netfs restart
Unmounting NFS filesystems: [ OK ]
NFS ファイルシステムをマウント中: [ OK ]
その他のファイルシステムをマウント中: [ OK ]
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 9.3G 6.4G 2.5G 73% /
/dev/sda6 9.3G 487M 8.3G 6% /opt
/dev/sda5 19G 9.4G 8.2G 54% /var
/dev/sda1 950M 29M 872M 4% /boot
tmpfs 16G 0 16G 0% /dev/shm
server:/home 7.2T 4.3T 2.6T 63% /home
↑ページトップに戻る
「mount.nfs: requested NFS version or transport protocol is not supported」と表示されNFSマウントができない
NFSエクスポート側のシステムログには以下のようなメッセージが出ている。
[root@nfsserver ~]# grep nfsclient /var/log/messages
...
Aug 5 10:35:46 nfsserver portmap[21225]: connect from nfsclient to getport(mountd): request from unauthorized host
Aug 5 10:35:50 nfsserver portmap[21231]: connect from nfsclient to getport(nfs): request from unauthorized host
Aug 5 10:35:50 nfsserver portmap[21232]: connect from nfsclient to getport(nfs): request from unauthorized host
これはhosts.allow
、hosts.deny
の設定が原因とのこと[12]。hosts.allow
にNFSクライアントを許可するよう記述を追加すればマウントできるようになった。
NFSクライアントのIPは192.168.0.3
[root@nfsclient ~]# ifconfig eth0 | grep 'inet addr'
inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
[root@nfsserver ~]# diff /etc/hosts.allow /etc/hosts.allow.orig
...
既に192.168.0.2が許可されているところに192.168.0.3を許可対象として加える
< lockd : 192.168.0.2 192.168.0.3
< mountd : 192.168.0.2 192.168.0.3
< rquotad : 192.168.0.2 192.168.0.3
< statd : 192.168.02. 192.168.0.3
---
> lockd : 192.168.0.2
> mountd : 192.168.0.2
> rquotad : 192.168.0.2
> statd : 192.168.0.2
↑ページトップに戻る
設定を書いてもマウントされない
既にNFSマウントをかけている領域の配下に、別のところから追加でNFSマウントをかけることはどうもできないらしい。
以下のようにしても、/nfs/server1/server2 のマウントはかからなかった
# cat /etc/auto.direct
/nfs/server1 -default server1:/nfs-export
/nfs/server1/server2 -default server2:/nfs-export
↑ページトップに戻る
システムログに「nfsidmap[XXXXX]: nss_XXXX: name 'user@localdomain' does not map into domain 'hoge.com'」のような記録が多数出る
NFS version4を使っているとき、NFSサーバ・クライアントで共通のドメイン名を設定しておく必要があるらしい。設定は/etc/idmapd.conf
で「Domain=ドメイン名」の形で記す[15][16]。