Custom Search

JITAKU_SVR_Wiki



nfs

nfs(network file system)の略。

サーバ側、クライアント側で設定がある。

サーバ側設定

パッケージがインストールされていることを確認。

# rpm -qa | grep nfs
nfs-utils-1.0.6-45EL

CentOS:nfs-utils
SuSE:yast2-nfs-server
以上がそれぞれnfsサーバを利用する上でのパッケージになる。



nfsの設定

# vi /etc/exports

/home/any1      192.168.0.39/255.255.255.255(rw)
/home/any2      192.168.0.39/255.255.255.255(rw,no_root_squash)

書式方法は、
nfsをさせるディレクトリを指定し、許可するホストを指定する。
括弧内はオプションの指定になる。
上記例では、
/home/any1(nfsをさせるディレクトリ) 192.168.0.39/255.255.255.255(許可するホスト) (rw)(オプション)

/home/any1を192.168.0.39のホストからのread、writeを許可する。

exportsファイルに記述できるオプション

オプション意味
ro読み取りのみ許可する
rw読み取りと書き込みを許可する
noaccessエクスポートしたディレクトリ以下のディレクトリにアクセスできないようにする
link_relative絶対パスで指定されているシンボリックリンクを相対パス指定に変換する
root_squashエクスポートされたディレクトリに対して、root権限ではアクセスできないようにする
no_root_squashエクスポートされたディレクトリに対して、root権限でアクセスできるようにする
squash_uids=n-mUIDがnからmのユーザーは、nobodyユーザーとしてしかアクセスできないようにする
all_squashrootを含めて全てのユーザーがnobodyユーザーにマッピングされる

最後に、nfsサーバのデーモンを再起動する。

# /etc/init.d/nfs restart
(# /etc/init.d/nfsserver)

※おまけ
環境によってはなかなかnfsサーバを再起動させるのが難しいことがよくある。
そんな時にはexportsfsコマンドを利用するれば良い。
exportfsを使用すればnfsを再起動することなく、exportsファイルを再読み込みすることが出来る。オプション等は以下を確認。

# exportfs -ra
オプション

-a 全てのディレクトリをエクスポート・アンエクスポートする。
-r 全てのディレクトリを再エクスポートする。 /var/lib/nfs/xtab を /etc/exports と同期させる。 
/etc/exports から削除されたエントリを /var/lib/nfs/xtab からも削除し、 既に無効になったエントリをカーネルのエクスポートテーブルから削除する。

トラブルシュート

ポートの開放

この方法はCentOS4.5以降で可能。
今回検証を行ったCentOS3.9では未実装。
古いOSの場合は基本概念として、nfsで使用するポートは不特定、となる。

iptablesをかけていると、nfsの通信が止められてしまう。
ポートを開放する方法は

# rpcinfo -p | grep nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs

以上のコマンドで確認できるので、このポートをiptablesで開放する。
または、指定したIPアドレスからの通信をすべて許可するなどし、開放する。

-A INPUT -s 192.168.0.0/24 -i eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp -j ACCEPT
-A INPUT -s 192.168.0.0/24 -i eth0 -p udp -m state --state NEW,RELATED,ESTABLISHED -m udp -j ACCEPT

クライアント側設定

クライアントとなる側の設定は特に必要ではないが、nfsサーバにマウントさせる必要がある。

手動でマウント

書式は
リモートホスト:リモートホストのディレクトリ ローカルホストのディレクトリ

# mount remote-host:/home/remote-nfs /home/local-nfs
具体的に上記のnfsサーバ側(仮に192.168.0.1とする)の設定にあわせるのであれば

(192.168.0.1の/home1/any1ディレクトリをローカルの/nfsdirにマウントする場合)

# mount 192.168.0.1:/home/any1 /nfsdir

エラー例)

# mount 192.168.0.1:/home/any1 /nfsdir
mount: wrong fs type, bad option, bad superblock on 192.168.0.1:/var/feisty,
      missing codepage or helper program, or other error
      In some cases useful info is found in syslog - try
      dmesg | tail  or so

上記エラーが出た場合は、以下のパッケージが足りていない可能性があるので、確認すること。

# yum install nfs-utils

fstabに記入

手動でマウントさせると、サーバの再起動があった場合には、当然解除されてしまう。
次回サーバ起動時に自動でマウントされるようにfstabに記入する方法もある。
ただし、間違った記述をすると、サーバが起動しなくなってしまうので、テスト出来る場合は必ず行うこと

書式
リモートホスト:リモートホストのディレクトリ ローカルディレクトリ タイプ(今回はnfs) オプション(チューニング)

# vi /etc/fstab
192.168.0.1:/home/any1 /nfsdir nfs rsize=1024,wsize=1024 0 0

rsize=1024,wsize=1024は読み込み、書き込みのチューニング(デフォルト1024)。最大値は32768。
数値は1024の倍数を入力すること。
最後から2番目の「0」はdump コマンドによってバックアップする必要がないことを示す。
最後の「0」はfsck コマンドでチェックする必要が無いことを示す。

手動、fstabの書き込み、ともにmountがされたかを確認する。

nfsの注意点

nfsを使用し、一般ユーザにreadもwriteも権限を与えたい場合には、permissionの設定が必要になる。
特に気を付ける点として、サーバ側とクライアント側のUID、GIDを合わせる必要があること。
これが違っていると基本はエラーになり書き込みが出来ない。
※シェアウェア等でUID、GIDを管理出来る物もある。(NIS、NIS+ 等)

nfsの詳細設定、オプション等について


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-12-17 (木) 16:46:25 (648d)