- 前提:在freebsd中用zfs创建了一个目录,并将目录使用nfs导出。
- 为什么使用zfs?因为使用zfs创建的目录可以使用NFSv4的acl,比POSIX的acl功能强大。至于此处的NFSv4与/etc/exports中的NFSv4有什么联系还不太清楚。
FreeBSD服务器端
NFS server的配置如下(仅列出NFS相关行):
root@static:~ # cat /etc/rc.conf
zfs_enable="YES"
nfs_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
root@static:~ # cat /etc/exports
/static/data/videos/channel v.srv.local
Linux客户端
在linux client中挂载:
root@vdo :~ #mount static.srv.local:/static/data/videos/channel /vlocal
挂载失败,提示信息:
mount.nfs: access denied by server while mounting static.srv.local:/static/data/videos/channel
同时:
root@static:~ #tail /var/log/message
RPC: server static.srv.local requires stronger authentication.
分析可能是因为NFSv4中有多种身份验证方式,而linux连接时并未使用NFS server默认的验证方式。
修改/etc/exports,在顶部加上一行
root@static:~ # cat /etc/exports
V4: /static/data -sec=sys
/static/data/videos/channel v.srv.local
指定NFS server使用的身份验证方式。NFS server重启mountd服务。
root@static:~ # service mountd onerestart
Stopping mountd.
Waiting for PIDS: 30245.
Starting mountd.
linux client挂载成功。
为了实现linux client在启动时自动挂载nfs,需要将挂载参数写入/etc/fstab
root@vdo :~ # cat /etc/fstab
static.srv.local:/static/data/videos/channel /vlocal nfs defaults,nolock 0 0
同时必须启动netfs
服务。因为在系统挂载fstab中的挂载点时,网络接口可能并未启动,所以会导致无法挂载nfs。
如果挂载参数不加nolock
,则必须启动rpcbind
服务。