OpenSUSE Leap 42: NFSサーバのnfs-kernel-serverをインストールする

NFSサーバのnfs-kernel-serverをインストールする手順を記載します。

1 nfs-kernel-serverをインストールする

nfs-kernel-serverパッケージをインストールします。

> sudo zypper -n in nfs-kernel-server
> sudo systemctl enable nfsserver
> for t in FW_CONFIGURATIONS_EXT FW_CONFIGURATIONS_DMZ FW_CONFIGURATIONS_INT; do
  sudo sed -e "s/^${t}=\"\(.*\)\"/${t}=\"\1 nfs-kernel-server\"/g" \
       -i /etc/sysconfig/SuSEfirewall2
done
> sudo systemctl restart SuSEfirewall2

nfs-kernel-serverを起動するために再起動します。

> sudo reboot

2 ディレクトリをNFSで公開する

/etc/exportfsに公開するディレクトリを記載します。

> cat /etc/exports
<path> <ipaddr>(<option>)

exportfsで公開します。

> sudo exportfs -ra

2.1 nfsroot用のディレクトリ

  • no_root_squashを指定するとクライアントからのアクセスはクライアント側のUIDとGIDが使われます。
  • LDAPでUIDとGIDを統一している場合はno_root_squashを使用すると良いですが、統一していない場合はroot_squashが良いです。
  • クライアント側でnfsrootを用いた起動用のルートファイルシステムとして用いる場合はno_root_squashの指定が必須です。
  • no_subtree_checkでクライアント側からアクセスしたファイルのパスがexportされたディレクトリ配下にあるかどうかを確認しないようにします。ここでのno_subtree_checkはパフォーマンスの向上を見込んでいます。
> cat /etc/exports
/srv/nfsroot 192.168.11.0/24(rw,sync,no_root_squash,no_subtree_check)
> sudo mkdir /srv/nfsroot
> sudo exportfs -ra

2.2 共有ディレクトリ

  • root_squashを指定するとクライアントからのアクセスはnobody:nogroupになります。
  • subtree_checkでディレクトリ配下のチェックを有効にします。
> cat /etc/exports
/srv/nfsshare *(rw,sync,root_squash,subtree_check)
> sudo mkdir /srv/nfsshare
> sudo chmod 777 /srv/nfsshare
> sudo exportfs -ra

3 NFSをマウントする

mount.nfsでマウントします。

> sudo zypper -n in nfs-client
> sudo mount -t nfs 127.0.0.1:/srv/nfsshare /mnt