在Ubuntu下搭建NFS文件服务,NFS是一种通用的网络文件系统。可以在计算机中很方便的挂载,读取或者写入。如果需要HTTP协议进行读写文件,那么可以参考这里。
Ubuntu版本号:19.04
1、安装NFS服务
apt install nfs-kernel-server
2、编辑导出规则
nano /etc/exports
NFS3.x示例:
/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
NFS4.x示例:
/srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
其中常用的几个设置:
参数 | 作用 |
---|---|
ro | 该主机对该共享目录有只读权限 |
rw | 该主机对该共享目录有读写权限 |
sync | 资料会先暂存于内存中,而非直接写入硬盘 |
async | 允许从这台机器过来的非授权访问 |
3、设置文件权限(可选)
chown nobody:nogroup /var/nfs/general
注意,如果导出的目录权限不是nobody:nogroup,那么导出后,不管你在配置文件中配置的是读写,都不允许客户端通过nfs写入。
4、重启服务
systemctl restart nfs-kernel-server
重新配置导入导出的项目:
exportfs -rv
5、显示NFS共享的项
showmount -e localhost
配置防火墙需要自定义端口,不能是动态端口
自定义端口配置步骤:
1、编辑/etc/defaults/nfs-kernel-server
原始文件内容:
# Number of servers to start up RPCNFSDCOUNT=8 # Runtime priority of server (see nice(1)) RPCNFSDPRIORITY=0 # Options for rpc.mountd. # If you have a port-based firewall, you might want to set up # a fixed port here using the --port option. For more information, # see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS # To disable NFSv4 on the server, specify '--no-nfs-version 4' here RPCMOUNTDOPTS="--manage-gids" # Do you want to start the svcgssd daemon? It is only required for Kerberos # exports. Valid alternatives are "yes" and "no"; the default is "no". NEED_SVCGSSD="" # Options for rpc.svcgssd. RPCSVCGSSDOPTS="" # Options for rpc.nfsd. RPCNFSDOPTS=“”
找到这行,改为:
RPCMOUNTDOPTS="--manage-gids -p 2000”
2、编辑/etc/sysctl.d/30-nfs-ports.conf,指定内容为:
fs.nfs.nlm_tcpport = 2001 fs.nfs.nlm_udpport = 2002
3、防火墙配置
Tcp和Udp都开放的端口:111、2049、2000
配置仅Tcp开放的端口:2001
配置仅Udp开放的端口:2002
4、重启机器,应用配置
如果没有应用Sysctl的配置,则调用以下命令更新
sysctl —system
5、查看端口占用情况:
rpcinfo -p [servername]
输出结果:
100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 2000 mountd 100005 1 tcp 2000 mountd 100005 2 udp 2000 mountd 100005 2 tcp 2000 mountd 100005 3 udp 2000 mountd 100005 3 tcp 2000 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 100003 3 udp 2049 nfs 100227 3 udp 2049 100021 1 udp 2002 nlockmgr 100021 3 udp 2002 nlockmgr 100021 4 udp 2002 nlockmgr 100021 1 tcp 2001 nlockmgr 100021 3 tcp 2001 nlockmgr 100021 4 tcp 2001 nlockmgr