硬件环境:
两台Ubuntu18.04服务器使用局域网连接,IP分别为192.168.11.66 和 192.168.11.206。
===============================================================
nfs的安装:
分别在192.168.11.66 和 192.168.11.206电脑上执行命令:
sudo apt-get install nfs-kernel-server
查看nfs运行状态,查看是否安装成功:
执行命令:
sudo service nfs-kernel-server status
在两台电脑上安装nfs成功后开始进行配置。
=====================================================
简单配置nfs:
首先我们需要从两台电脑192.168.11.66 和 192.168.11.206中选出一个作为服务端,另一个则为客户端。
这里我们选电脑192.168.11.206为服务端,电脑192.168.11.66为客户端。
由于nfs是网络文件系统,所以文件其实是存储在服务端上的,客户端是通过网络访问服务端上的文件的,由于在linux系统中我们可以挂载网络文件系统到本地文件上,因此对网络文件系统上的操作和本地文件系统上进行的操作均是一致的。
服务端配置(电脑 192.168.11.206):
在服务器上新建文件夹,该文件夹为提供给客户端访问的,这里我们假设新建的文件夹路径为: /data ,该路径可以根据需要自己设定。
文件夹新建后以后需要更改权限(不更改服务端文件夹权限即使客户端挂载以后也是无权访问的):
sudo chown nobody:nogroup /data
解释说明下,用户nobody,用户组nogroup:
查看 /etc/passwd 和 /etc/group ,可以看到
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
nogroup:x:65534:
也就是说为了linux系统中不管是哪一台电脑(不论客户端和服务端)都有一个相同的uid 和 gid, nfs默认也是将客户端的用户权限squash为65534:65534,即nobody用户,nogroup用户组。
编辑配置文件:
sudo vim /etc/exports
默认配置如下:
添加内容:
/data 192.168.11.66(rw,sync,fsid=0,crossmnt,no_subtree_check,root_squash,all_squash)
其中, /data是服务端的文件夹, 192.168.11.66为客户端IP。上面语句的意思就是把服务端192.168.11.206主机的/data 文件夹作为nfs的根目录。上面的配置除了权限配置以外都是默认配置这里就不多讲了。
我们同样可以配置 192.168.11.0/24这个网络下的所有主机均可以作为客户端访问服务端的 /data ,配置如下:
/data 192.168.11.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check,root_squash,all_squash)
查看配置是否正确,服务端执行命令:
sudo exportfs -v
输出没报错,证明配置没有语法错误:
重启服务端的nfs服务:
sudo service nfs-kernel-server restart
服务端配置结束。
==========================================================
客户端配置:
指定客户端进行挂载网络文件系统的路径,这里我们假设路径为 ~/data
创建本地的挂载目录:
mkdir ~/data
挂载nfs网络文件系统:
sudo mount 192.168.11.206:/data ~/data
查看挂载服务端文件系统情况:(下面的ip是服务端的)
showmount -e 192.168.11.206
显示结果不为空,证明客户端成功挂载服务端的文件系统。
在本地挂载的网络文件系统中创建文件,看下文件权限:
touch ~/data/xxx.txt
ls -al ~/data/xxx.txt
可以看到本地用户在本地挂载的nfs文件系统中创建文件,该文件的用户显示为nobody,用户组显示为nogroup 。
(注意: nobody , nogroup 在linux电脑上uid和gid均是一致的,就如何root用户,root组,在任何linux电脑上默认均为uid=0,gid=0)
还需要注意的一点是,这样配置的话客户端在挂载的nfs文件系统中创建的文件权限均为 nobody:nogroup , 此时如果服务端不切换为nobody用户的话在服务端指定的共享路径(这里是 /data )中创建文件在客户端是无法读写的,具体参考nfs的权限设置。
卸载掉挂载的nfs文件系统:
sudo umount ~/data
需要注意的是卸载的时候不在挂载的文件夹中操作,需要先退出来,不然会提示busy,无法卸载。
==========================================================
参考:
https://www.cnblogs.com/devilmaycry812839668/p/15127755.html