UNIXのファイル共有システム、NFSv4をインストールする

NO IMAGE

Windowsのファイル共有はsambaですが、LinuxにはNFSというファイル共有システムがあります。

sambaは共有設定などが非常に面倒なことと、WindowsからNFSを利用することもできるようなので、今回はUbuntu20.04にNFSをセットアップしてみましょう。

NFSサーバのインストール

まずはNFSサーバをインストールします。

sudo apt install nfs-kernel.server

共有の設定

続いて、共有設定である /etc/exports を開きます。

 sudo nano /etc/exports

最初の段階ではコメントしか記載されていません。

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

パーミッションは、ファイルシステムのものがそのまま使われる。smbより楽である。

共有フォルダごとに1行、次のように記載する。

/exthdd/nfs/git 192.168.10.0/24(rw,crossmnt,fsid=0,no_subtree_check)
/exthdd/nfs/free 192.168.10.0/24(rw,crossmnt,fsid=0,no_subtree_check)

[共有したいフォルダ] [接続許可IP/サブネットマスク](オプション)

となっている。

指定できるオプションは次の通り。

rw書き込み可
ro読み込み専用
sync同期書き込み:ストレージに保存されるまで次の動作に移らない。ストレージの書き込み速度に依存する。
async非同期書き込み:メモリにキャッシュしてから書き込む。ストレージが遅い場合などに高速で書き込むが、クラッシュしたり停電すると、データが失われる危険性が高くなる。
root_squashroot権限でのアクセスを許さない。rootでアクセスした場合、nobodyユーザーとして扱われる。指定しなくてもデフォルトで有効。
subtree-checkアクセス権を厳密に確認する。セキュリティ性は高まるが、遅くなるのでファイルが多い場合は使わないほうが良いとされているらしい。
no-subtree-checkアクセス権を厳密に確認しない。
crossmnt
fsid=0
エクスポートする親ディレクトリに指定するおまじない的なもの。
hide / nohideあとで

共有を開始する

exportsを設定し終えたら、次のコマンドを実行する。

sudo exportfs -ra

共有の確認

共有されているフォルダを確認する。

sudo exportfs -v

/exthdd/nfs/git
192.168.10.0/255.255.255.0(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/exthdd/nfs/free
gss/krb5i(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)

sudo showmount -e

Export list for macmini:
/exthdd/nfs/free gss/krb5i
/exthdd/nfs/git 192.168.10.0/255.255.255.0

クライアントのインストール

クライアントは次のようにインストールする。

sudo apt install nfs-common

NFSフォルダのマウント

マウントするには次のようにする。

sudo mount [ホスト名]:[共有フォルダ名] [マウントポイント]

mkdir ~/nfs
sudo mount macmini.local:/exthdd/nfs/git/ ~/nfs/

具体例

ポイントは、共有フォルダ名はホストPCのフォルダをフルパスで記載すること。Windowsの共有のつもりで末端の共有フォルダ名を指定する感覚でやると、マウントできない。

sudo mount macmini.local:/git/ ~/nfs/

ダメな例(フルパスで指定していない)

アンマウント

マウントを解除するには次のようにする

sudo umount [マウントポイント]