实现文件共享的前提:两台机器能够相互ping通!!!

服务器端设置如下:
1. 安装NFS server软件

sudo apt-get install nfs-kernel-server

2. 创建共享目录并将目录的权限改为777

mkdir -p share
chmod 777 share

3. 配制文件vi /etc/exports

sudo vi /etc/exports

添加以下条目

/share *(rw,sync,no_root_squash)

其中/share为共享目录, rw为可读写操作
共享目录 可以访问的主机(权限) 代表所有用户(权限)
这个配置文件很简单,每一行前面是要共享的目录,是以目录为单位。然后这个目录可以依照不同的权限共享给不同的主机,不同的主机用空格分开,主机后面是以小括号"()“定义权限参数,若权限参数不只一个时,则以逗号”,“分开,并且主机名与小括号是连在一起的,主机与共享目录之间用空格分开,在这个文件内也可以利用#号来进行注释。
可以使用完整的IP或者网络号,例如:
单个主机:192.168.1.100 网络号:192.169.1.0/24或192.168.1.0/255.255.255.0
可以使用主机名,但这个主机名必须要在/etc/hosts内,或可以使用DNS找到该名称,重点是可以找到IP地址,如果是主机名可以支持通配符,例如”*“或”?"均可接受。
小括号内常用的权限参数如下:

  • ro:共享目录只读;
  • rw:共享目录可读可写
  • sync:同步,将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
  • async:异步,将数据先保存在内存缓冲区中,必要时才写入磁盘,效率高,但有丢失数据的风险;
  • wdelay(默认):如果有多个客户端要对同一个共享目录进行写操作,则将这些操作集中执行。对有很多小的IO写操作时,使用该选项可以有效的提高效率;
  • no_wdelay:如果有多个客户端要对同一个共享目录进行写操作则立即写入。当设置了async选项时,no_wdelay选项无效,应与sync配合使用;
  • root_squash(默认):将来访的root用户映射为匿名用户或用户组;
  • no_root_squash:来访的root用户保持root帐号权限;
  • all_squash:所有访问用户都映射为匿名用户或用户组;
  • no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
  • anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
  • anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
  • secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
  • subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
  • no_subtree_check(默认) :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
  • hide:共享一个目录时,不共享该目录的子目录;
  • no_hide:共享子目录;

如果想了解更多的参数,可以使用man exports
4. 开启nfs服务

sudo systemctl start nfs-kernel-server

客户端设置如下:

  1. 安装nfs-common (在另一台机器执行以下命令)
sudo apt-get install nfs-common
  1. 远程mount
sudo mount x.x.x.12:/share /home/share

把远程目录mount到本地/media/share下

遇到的问题及对策:

1)mount.nfs: access denied by server while mounting x.x.x.124:/home/share
对策:如果客户端的端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作
修改配置文件/etc/exports,加入 insecure 选项

/home/share  *(insecure,rw,async,no_root_squash)

保存退出
然后重启nfs服务:

service nfs restart

然后问题就解决了
2)文件夹访问失败
对策:将当前访问文件夹统一给权限,服务端和客户端给一样的权限

chmod 777 /share

3)两台机器连不通
对策:关闭两台机器的防火墙

sudo ufw disable

4)客户端开机没有共享文件夹

重启nfs服务+重新挂载即可
sudo /etc/init.d/rpcbind restart 重启rpcbind
sudo /etc/init.d/nfs-kernel-server restart 重启nfs

sudo mount x.x.x.124:/share/home/share

5)Ubuntu nfs重启服务**

sudo systemctl restart nfs-kernel-server

如果报错,有可能是/etc/exports配置错误,检查错误,重新启动