====== NFS ======
===== ZFSでのNFS共有 =====
==== マウント場所作成 ====
# zfs create /zpool0/share
==== nfsで共有 ====
# zfs set sharenfs="-network xxx.yyy.zzz.0 -mask 255.255.255.0 -maproot=root" zpool0/share
maproot=root ですが,共有先の root ユーザが NFS で共有されたファイルシステムに書き込む際に root として書き込む事を許可します((この設定は/etc/zfs/exportsに書き込まれてます))
^オプション^意味^
|-network 192.168.123.0 -mask 255.255.255.0|アクセスを許可するネットワーク|
|-network=192.168.123.0/24|:::|
|192.168.123.111|アクセスを許可するIP|
|host.example.com|アクセスを許可するhost|
|-ro|ReadOnly|
|-alldirs|配下のディレクトリを任意にマウントできる|
|-maproot|root権限付与|
==== 確認 ====
# zfs get sharenfs
==== rc.conf ====
nfs_server_enable="YES"
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_enable="YES"
NFSv4 を起動する場合
nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
$ cat /etc/exports
V4: /
==== 起動 ====
# service nfsd start
NFS用の各デーモンを起動しますが、依存関係があるため起動順序が重要です。
(rcorder /etc/rc.d/* というコマンドで順番はわかります)
# /etc/rc.d/rpcbind start
# /etc/rc.d/mountd start
# /etc/rc.d/nfsd start
実際にポートマップがどうなっているのかは、
# rpcinfo -p
を実行するとわかります。
==== 共有リスト ====
# showmount -e
==== 共有解除 ====
# zfs set sharenfs=off zpool0/share
===== NFSマウント =====
==== NFS クライアント設定 ====
/etc/rc.conf に以下の行を追加。
nfs_client_enable="YES" # This host is an NFS client (or NO).
==== NFS クライアント起動 ====
#/etc/rc.d/nfsclient start
==== マウント場所作成 ====
# md /mount/here
==== NFS クライアント設定(手動) ====
# mount -t nfs xxx.yyy.zzz.abc:/zpool0/share /mount/here
==== NFS クライアント設定(起動時) ====
/etc/fstab
xxx.yyy.zzz.abc:/zpool0/share /mount/here nfs rw 0 0
オプション類
^設定^意味^デフォルト^
|nfsv4|nfs v4|nfs v3 -> v2|
|:::|v4を使う場合rc.confの設定が違うので注意|:::|
|ro|ReadOnly|-|
|rw|ReadWrite|-|
|noatime|ファイル読み取り時に、ファイルアクセス時刻を更新しません| |
|rsize=nnnnn|読み取りバッファサイズ|8192|
|:::|サイズは 1024 以上で,2 のべき乗を指定|:::|
|:::|ex.8192->16384->32768->65536|:::|
|wsize=nnnnn|書き込みバッファサイズ|8192|
|:::|サイズは 1024 以上で,2 のべき乗を指定|:::|
|async|すべてのI/Oを非同期に行う。**非常に危険**| |
===== 参考 =====
* [[https://qiita.com/je3kmz/items/5ffe992605c06467ca81|NFS サーバ構築 2024 年度版w]]
* [[https://kaeru.my/notes/nfsv4-and-zfs-on-freebsd|NFSv4 and ZFS on FreeBSD]]