Manjaro LinuxでNFSを使う
今回はLinux系のネタになります。
ManjaroLinuxでNFSマウントしようとしたら少しハマったので解決方法を記載します。
そもそもNFSとは?
NetworkFileSystem(ネットワークファイルシステム)の略です。
基本的にはLinuxホスト間でネットワーク上でのファイル共有をする際のプロトコルとなります。
LinuxのAサーバのある特定のフォルダをLinuxのBサーバからもアクセスしたいという際に、
Aサーバで公開を行い、Bサーバでマウントして自分のドライブのように利用するものです。
Windowsでいうファイル共有サービスのLinux版とイメージしてください。
Ubuntuの場合は、クライアントには「nfs-common」というパッケージをインストールすれば、
NFSが使えるようになるのですが、ManjaroLinuxの場合は少し異なっていました。
ManjaroLinuxでインストールしたパッケージは以下
ManjaroLinuxでは下記のコマンドでnfsを含むパッケージを検索してくれます。
sudo pacman -Ss nfs
上記コマンドにより一覧に表示されたパッケージの中で筆者が
インストールしたのが以下パッケージになります。
mkinitcpio-nfs-utils
nfs-utils
nfsidmap
gvfs-nfs
liblockfile
libnfs
unionfs-fuse
以下コマンドでインストールします。
sudo pacman -S mkinitcpio-nfs-utils nfs-utils nfsidmap gvfs-nfs liblockfile libnfs unionfs-fuse
NFSサーバの準備
まずはNFSサーバを準備します。
NFSサーバには以下のパッケージをインストールします。
$ sudo pacman -S nfs-utils nfsidmap
共有したいフォルダを作成し、設定ファイル(/etc/exports)に記述します。
$ sudo mkdir /nfs/share
$ vi /etc/exports
/nfs/share 192.168.1.0/255.255.255.0(rw)
サービスを有効化、起動します。
$ sudo systemctl enable nfs-server
$ sudo systemctl enable rpcbind
$ sudo systemctl start nfs-server
$ sudo systemctl start rpcbind
これでサーバ側の準備完了です。
NFSマウントの方法(手動)
上記パッケージをインストールしたら、クライアント側で共有したいフォルダを作成します。
例:/home/nfs
$ sudo mkdir /home/nfs
次に以下コマンドでNFSサーバ側の共有フォルダとクライアント側のマウントポイントと
オプションを指定することでマウントできます。
$ sudo mount -t nfs 192.168.1.x:/nfs/share /home/share -o hard,intr
・192.168.1.xはNFSサーバのIPで、/nfs/shareがサーバ上の共有フォルダです。
・パラメータhardはサーバ側との接続が切断されたらリトライを繰り返します。
ここで仮にsoftオプションを指定してマウントするとサーバが応答しなくなるとエラーを返します。
しかし、hardオプションが指定されていると、サーバが応答するまで再試行が続けられます。
ここはサーバとして永続的に使うのか、一時的な共有利用かで使い分けかと思います
・intrオプションはサーバーダウン又はサーバーへ接続できない場合にNFS要求を割り込ませることができます。
上記コマンド実行後、クライアント側のLinuxにおいて、
以下コマンドでNFSサーバ側のフォルダが確認できれば成功です。
$ ls /home/nfs
これでNFSマウントが出来ることが確認できました。しかし、毎回Linuxのクライアントを起動する度に
上記コマンドを実行するのは手間ですよね。というわけで自動的にNFSマウントを行う方法を紹介します。
NFSマウントの方法(自動)
この場合、特に追加のパッケージは不要です。
設定ファイル(/etc/fstab)に追記を行います。
※上記設定ファイルはLinuxで外付けディスクを
自動マウントさせる場合の設定ファイルと同一です。
$ sudo vi /etc/fstab
上記ファイルをvi エディタで開き、以下を追記して保存して終了します。
192.168.1.x:/nfs/share /home/nfs nfs defaults 0 0
おまけその1
macOSXからnfs共有にアクセスしたい場合は、以下コマンドを実行します。
$ sudo mount -t nfs -o resvport,rw 192.168.1x:/nfs/share /Volumes/HackintoshSSD/Users/osmaniax/share
おまけその2
利用状況を見てみるには「nfsstat」コマンドを使用します。
$ nfsstat
Server rpc stats:
calls badcalls badfmt badauth badclnt
13572 0 0 0 0
Server nfs v3:
null getattr setattr lookup access
1 100% 0 0% 0 0% 0 0% 0 0%
readlink read write create mkdir
0 0% 0 0% 0 0% 0 0% 0 0%
symlink mknod remove rmdir rename
0 0% 0 0% 0 0% 0 0% 0 0%
link readdir readdirplus fsstat fsinfo
0 0% 0 0% 0 0% 0 0% 0 0%
pathconf commit
0 0% 0 0%
Server nfs v4:
null compound
4 0% 13567 99%
Server nfs v4 operations:
op0-unused op1-unused op2-future access close
0 0% 0 0% 0 0% 66 0% 24 0%
commit create delegpurge delegreturn getattr
21 0% 5 0% 0 0% 0 0% 13409 32%
getfh link lock lockt locku
35 0% 0 0% 0 0% 0 0% 0 0%
lookup lookup_root nverify open openattr
73 0% 0 0% 0 0% 24 0% 0 0%
open_conf open_dgrd putfh putpubfh putrootfh
0 0% 0 0% 13505 32% 0 0% 8 0%
read readdir readlink remove rename
0 0% 19 0% 0 0% 2 0% 1 0%
renew restorefh savefh secinfo setattr
0 0% 0 0% 1 0% 0 0% 21 0%
setcltid setcltidconf verify write rellockowner
0 0% 0 0% 0 0% 272 0% 0 0%
bc_ctl bind_conn exchange_id create_ses destroy_ses
0 0% 0 0% 8 0% 4 0% 0 0%
free_stateid getdirdeleg getdevinfo getdevlist layoutcommit
0 0% 0 0% 0 0% 0 0% 0 0%
layoutget layoutreturn secinfononam sequence set_ssv
0 0% 0 0% 4 0% 13555 33% 0 0%
test_stateid want_deleg destroy_clid reclaim_comp allocate
0 0% 0 0% 0 0% 4 0% 0 0%
copy copy_notify deallocate ioadvise layouterror
0 0% 0 0% 0 0% 0 0% 0 0%
layoutstats offloadcancel offloadstatus readplus seek
0 0% 0 0% 0 0% 0 0% 0 0%
write_same
0 0%