CLOVER🍀

That was when it all began.

Ubuntu Linux 18.04 LTSで、NFSの設定を行う

これは、なにをしたくて書いたもの?

  • Ubuntu Linuxで、NFSサーバーおよびマウントの設定方法を確認するため

環境

NFSサーバー、クライアントとも、環境はこちら。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

Ubuntu Linux 18.04 LTSです。

参考

今回参考にしたのは、こちらのエントリたち。

SettingUpNFSHowTo - Community Help Wiki

How To Set Up an NFS Mount on Ubuntu 18.04 | DigitalOcean

Ubuntu 18.04: NFSサーバのnfs-kernel-serverをインストールする - Narrow Escape

8.7. NFS サーバーの設定 - Red Hat Customer Portal

Man page of EXPORTS

/etc/exports ファイルに設定できる主なオプション - ご先祖様はきっと農民。

NFSサーバーをセットアップする

NFSサーバーのセットアップを行います。

パッケージインストール。

$ sudo apt install nfs-kernel-server

今回は、exportするディレクトリを「/var/nfs/exports」としましょう。NFSのオプションに「all_squash」を使用するので、
nobody.nogroupで権限設定。

$ sudo mkdir -p /var/nfs/exports
$ sudo chown nobody.nogroup /var/nfs/exports

で、エクスポートするディレクトリの設定をするわけですが、まずはデフォルトの「/etc/exports」ファイルを見てみます。
/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)

NFSv4では、エクスポートするルートディレクトリに「fsid=0」、「crossmnt」を入れるそうです。この例では、2つ目の
記載はサブディレクトリになりますね。

# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)

親ディレクトリに「crossmnt」を指定すると、サブディレクトリに「nohide」を指定したのと同じになるそうな。

第26章 NFS共有ファイルシステム

とあるエンジニアの備忘log: NFS v3 と v4 設定まとめ (RHEL/CentOS/Ubuntu編)

さらにサブディレクトリを書く場合は、「/srv/nfs4/homes」の例に習って追加していけば良さそうですね。

では、設定。 「192.168.0.0/24」のネットワークでマウントすることにします。
/etc/exports

/var/nfs/exports 192.168.0.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check,insecure,all_squash)

「insecure」は、「secure」(IPPORT_RESERVED (1024)より小さなポートのアクセスしか受け付けない設定で、
デフォルトで有効)を無効にする設定です。

「/etc/exports」ファイルを設定したら、次のコマンドを実行。

$ sudo exportfs -ra

これで、NFSサーバー側の設定はOKです。

NFSクライアントを設定する

続いて、NFSクライアント側。まずは、パッケージをインストールします。

$ sudo apt install nfs-common

マウント先を、「/mnt/nfs」としましょう。

$ sudo mkdir /mnt/nfs

マウント。NFSサーバーの接続先は、「192.168.0.3」とします。

$ sudo mount 192.168.0.3:/ /mnt/nfs

これで、NFSマウントできました。

確認。

$ echo 'Hello World' > /mnt/nfs/message

NFSクライアントから見ても作成できていますし
/mnt/nfs/message

Hello World

NFSサーバー側でもファイルが確認できます。
/var/nfs/exports/message

Hello World

OKそうですね。

ファイルのオーナーは、「nobody.nogruop」です。

-rw-rw-r-- 1 nobody nogroup 12 10月  6 00:24 /var/nfs/exports/message

アンマウント。

$ sudo umount /mnt/nfs

再起動してもマウントするように、「/etc/fstab」にも設定しておきましょう。
/etc/fstab

192.168.0.3:/ /mnt/nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

オプションの意味。

/etc/fstabのマウントオプション | OpenGroove

/etc/fstabファイル(ファイルシステムテーブル)|Linux入門

mount - システム管理コマンドの説明 - Linux コマンド集 一覧表

nfs - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表

@IT:/etc/fstabに記述されている数字の意味

「/etc/fstab」に設定を書いたら、「mount」コマンドでマウント。

$ sudo mount -a

こんなところで。