*********************服务器端********************
# 1.安装软件包
sudo apt install nfs-kernel-server nfs-common
# 2.修改配置文件
vim /etc/exports
# 添加内容:
/nfsroot *(rw,sync,no_root_squash)
# 解析:
/nfsroot ——NFS服务器端的目录,用于与nfs客户端共享
# 欲共享出去的用户
* 允许所有的网段访问
192.168.152.13 指定IP地址的主机
nfsclient.test.com 指定域名的主机
192.168.1.0/24 指定网段中的所有主机
*.test.com 指定域下的所有主机
# 括号内参数详解
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
# 3. 新建共享目录
mkdir -p /nfsroot
# 4. 重启nfs
service nfs-kernel-server restart
# 5. 检测
showmount -e localhost
# 显示已经mount到本机的目录和可允许访问的ip 如: nfsroot *
# 6. 其他常用命令
#在安装NFS服务器时,已包含常用的命令行工具,无需额外安装。
#将配置文件中的目录全部重新export一次!无需重启服务。
sudo exportfs -rv
#查看NFS的运行状态
sudo nfsstat
#查看rpc执行信息,可以用于检测rpc运行情况和端口情况
sudo rpcinfo -p
#查看网络端口,NFS默认是使用111端口。
sudo netstat -tu -4
********************客户机端********************
# 1.安装NFS服务(如果是centos系列的,需要改为安装nfs-utils,默认自带)
sudo apt install nfs-common
# 2. 创建本地挂载路径
sudo mkdir -p /nfsshare
# 3. 挂载
mount <服务端IP>:/nfsroot /nfsshare # 服务端ip:/共项目录 /客户端挂载目录
# 4. 测试
sudo showmount -e <服务端IP>
# 如果出现和服务端一样的结果,则说明配置成功
# 5. 卸载
umount /nfsshare
# 如果显示device busy ,可以强制卸载
umount -lf /nfsshare
********************安装依赖********************
# 以下,为安装nfs-common和nfs-kernel-server所需的依赖包
# 仅在离线状态下需要手动安装
keyutils_1.5.9-9.2ubuntu2.1_amd64.deb
libevent-2.1-6_2.1.8-stable-4build1_amd64.deb
libnfsidmap2_0.25-5.1_amd64.deb
libtirpc1_0.2.5-1.2ubuntu0.1_amd64.deb
rpcbind_0.2.3-0.6ubuntu0.18.04.4_amd64.deb
nfs-common_1%3a1.3.4-2.1ubuntu5.5_amd64.deb
nfs-kernel-server_1%3a1.3.4-2.1ubuntu5.5_amd64.deb
********************端口设置********************
nfs涉及到到服务有:nfs、portmapper、rquotad、mountd、nlockmgr,
nfs和portmapper是固定端口,分别为2049、111,
其他三个是随机端口,所以需要将这三个端口改成固定的,方便配置防火墙
具体参考方式如下
http://bryanw.tk/2012/specify-nfs-ports-ubuntu-linux/
或者 https://its301.com/article/w0801101117/114702374
亲测,照着以上方法配置的nlockmgr不好使,所以需要在 /etc/sysctl.conf中添加个配置
fs.nfs.nlm_udpport=40001
fs.nfs.nlm_tcpport=40001
* 端口固定成什么数值,随便