NFS(Network File System)即网络文件系统,NFS允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS体系至少有两个部分组成:1.一台NFS服务器;2.若干客户机。
虚拟系统:Ubuntu 16.04 LTS
方法和步骤:
1.安装NFS服务
$ sudo apt-get install nfs-kernel-server nfs-common # 或su 使用root用户权限

2.创建共享文件夹(共享文件目录为已存在情况下,请忽略此步骤)
1 $ sudo mkdir /sharedfile # 创建你要共享的目录(共享文件夹,因为我在根目录创建sharedfile目录,所以需要使用root权限) 2 $ sudo chmod 777 /sharedfile # 我将该目录权限全部开放(根据个人需求配置权限) 3 $ ls -l / # 查看sharedfile共享目录和权限

3.修改配置文件中挂载目录和权限
$ sudo vi /etc/exports #服务器的设定都是在/etc/exports文件,用户把需要共享的文件系统直接编辑到/etc/exports文件中

(1) rw:可读写权限
(2) ro:只读权限
(3) no_root_squash:但登陆NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都非变成nobody身份。
(4) root_squash:如果登陆NFS主机使用共享目录的使用者是root,那么对于这个共享目录来说,它具有root权限。
(5) all_squash:忽略登陆NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
(6) anonuid:通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
(7) anongid:同anonuid,但是变为Group ID。
(8) sync:同步写入资料到内存与硬盘中。
(9) async:资料会先暂存于内存中,而非直接写入硬盘。
(10) subtree_check(默认):若输出目录是一个子目录,则NFS服务器将检查其父目录权限。
(11) no_subtree_check:即便输出目录是一个子目录,NFS服务器不检查其父目录的权限,此选项打开非有轻度的安全问题,但会提高效率,增加可靠性。
4.重启NFS服务
$ sudo /etc/init.d/nfs-kernel-server restart
5.测试NFS
(1) 在共享目录新建文件(目的为了识别共享目录)
1 $ cd /sharedfile 2 $ ls 3 $ mkdir 01 02 03 04 05 06 07 08 09 #在本机其他目录或其他主机目录下观测到01~09等目录为共享成功(随意创建的文件就好,只要你能识别)

(2) 本机测试NFS
- 查看本机IP和端口
$ ifconfig
- 将配置的共享目录挂载到/mnt/cdrom目录下
sudo mount -o nolock 192.168.1.8:/sharedfile /mnt/cdrom
- 查看/mnt/cdrom目录下
ls /mnt/cdrom

(3) 其他主机测试NFS
- 查看客户端和服务器的网络时候连通
$ ping 192.168.1.8
- 查看服务端的共享目录
showmount -e 192.168.1.8
- 将该目录挂载到本地计算机
$ sudo mount 192.168.1.8:/sharedfile /mnt
- 访问本地路径
$ ls /mnt
- 卸载(非必要)
$ sudo umount /mnt

6.NFS相关命令
(1) exportfs
不重启nfs服务应用更新,相关选项如下:
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports中的信息,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
(2) nfsstat
查看NFS的运行状态
(3) rpcinfo
查看rpc服务注册情况。
相关选项:
-p 显示所有的端口与程序信息。
示例:
rpcinfo -p localhost #列出本机的RPC注册状况。
(4) showmount
查询NFS共享目录信息,相关选项如下:
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录
示例:
showmount -e localhost #查询本机NFS共享目录
showmount -a localhost #查询本机共享目录连接情况

浙公网安备 33010602011771号