これは、なにをしたくて書いたもの?
- Ubuntu Linuxで、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
/etc/exports ファイルに設定できる主なオプション - ご先祖様はきっと農民。
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」を指定したのと同じになるそうな。
とあるエンジニアの備忘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クライアントを設定する
続いて、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 コマンド集 一覧表
「/etc/fstab」に設定を書いたら、「mount」コマンドでマウント。
$ sudo mount -a
こんなところで。