LinuxではおなじみのNFS(Network File System)サーバの構築方法について
まずはNFSサーバ(NFSD)がインストールされているか、確認する
# yum list | grep nfs-utils nfs-utils.i386 1:1.0.9-47.el5_5 installed nfs-utils-lib.i386 1.0.8-7.6.el5 installed ・・・以下省略・・・
nfs-utilsがinstalledになっていればOK
baseなどになっている場合はインストールを指示する。
# yum -y install nfs-utils*
# cd / # mkdir nfs
# vi /etc/exports /nfs *(rw,no_root_squash,sync)
CentOS 6.xの場合 # /etc/rc.d/init.d/nfs start CentOS 7.xの場合 # systemctl start rpcbind nfs-server
CentOS 6.xの場合 # chkconfig --list nfs nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig nfs on # chkconfig --list nfs nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off CentOS 7.xの場合 # systemctl enable rpcbind nfs-server
これらは多少マイナーな挙動があるとかなんとかゴニョゴニョ書かれていた。
英語ドキュメントから読んだので、あやふやですが。
ちゃんとテストしてから使おう。
恒久的なinode番号を提供する能力を持っていないファイルシステム等はエクスポートできないとかなんとか。
通常、上にもあるように、tmpfsはNFSサーバでエクスポートできない(一見できているようには見えるが、NFSクライアントからアクセスすると拒否される)が、次に示す方法で擬似的にエクスポートできる。
# dd if=/dev/zero of=/dev/shm/export bs=1M count=1000
# mkfs.ext3 /dev/shm/export
# mount -o loop /dev/shm/export /mnt
と、簡単に書くとこんな感じ。
とりあえず、tmpfsで作成した領域上にブロックデバイスを作成し、そのブロックデバイスをマウントした上でNFSに公開させる。という形です。
やる意味としては、tmpfsが物理メモリ内にちゃんと収まるのであれば、パフォーマンスが上がるかも?って事になりますが、実際パフォーマンスの計測は行なっていませんので、なんとも言えません。
さらに言うと、tmpfs上にある以上、サーバを再起動するとデータは消えてしまいますので、恒常的に利用する事は出来ません。
OSの起動時、シャットダウン時に、それぞれ安全に利用できるようにいろいろ仕込んでやる必要がありそうです。
NFSの領域をマウントした時、確認するならmountコマンドで…というのはよく見かけるが、サーバ側で「どこからマウントされているか」を確認するには意外に見かけない。
サーバ側からの確認方法は大きく2つ。
showmountコマンドで接続してきているクライアントの一覧が見れる。
# showmount
Hosts on nfssrv.nfsdomain:
192.168.1.242
※ただし、これはクライアント側の切断の仕方がマズいと延々と情報が残る為、精度に難がある。
netstat(RHEL/CentOS 6.x)やss(RHEL/CentOS 7.x以降)コマンドでNFS用ポートの通信状況を確認する方法
# ss -all | grep -i estab | grep nfs tcp ESTAB 704 1860856 192.168.1.250:nfs 192.168.1.242:740