最近在做嵌入式方面的项目开发,用到虚拟机和开发板之间的文件传输,我们选用NFS,不过在使用过程中总是有这个那个的小毛病,主要还是不能mount的问题,今天把目前遇到的一些问题及NFS的基本配置做一下个人总结:
一、NFS的概念
NFS (Network File System/网络文档系统):
1 、配置Linux 系统之间的文档共享(Linux 和Windows 间的文档共享需采用SAMBA 服务);
2 、NFS 只是一种文档系统,本身没有传输功能,是基于RPC 协议实现的,才能达到两个Linux 系统之间的文档目录共享;
3 、NFS 为C/S(客户机/服务器) 架构;
二、服务器端配置
1 、配置文档
主要配置文档为:/etc/exports
格式为:共享目录可mount 主机IP(参数1 ,参数2 ,……)
如:/var/nfs 172.20.*.* (rw,sync,all_squash,anonuid=65534 ,anongid=65534)
说明:必须注意nfs/目录的访问权限,必须配置成777 权限;父目录/var权限无需要,普通的755 即可;
2 、启动相关服务
然后依次启动相关服务:portmap ,nfslock ,nfs
3 、检查共享目录
随后能够采用showmount –e 查看一下,看看共享的目录情况:
[root@ns var]# showmount -e
Export list for ns.osserver :
/var/nfs 172.20.*.*
OK,到此为止,NFS 服务器搭建完毕;
三、客户端配置
1 、确保portmap 运行
客户端必须确保RPC 协议相应的portmap 正常运行,否则mount 将失败;
2 、挂载/var/nfs目录(本地挂载点为/mnt/nfs)
mount -t nfs 172.20.65.16 :/var/nfs /mnt/nfs
成功mount 以后,即可同本地目录相同随意操作;
四、其他相关命令
1 、当修改了/etc/exports文档后,能够不用重新启动nfs 服务,直接采用exports –rv即可重新导出共享目录;
该命令格式如下:
exportfs [-aruv]
-a:全部mount 或unmount /etc/exports中的内容
-r:重新mount /etc/exports中分享出来的目录
-u:umount目录
-v:在 export 的时候,将周详的信息输出到屏幕上。
具体例子:
[root@ns var]# showmount -e
Export list for ns.osserver :
/var/nfs 172.20.*.*
[root@ns var]# exportfs –au #全部卸载
[root@ns var]# showmount -e
Export list for ns.osserver :
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20.*.*:/var/nfs
[root@ns var]#
2 、showmout命令对于NFS 的操作和查错有很大的帮助,所以我们先来看一下showmount 的用法
showmout
-a:这个参数是一般在NFS SERVER上使用,是用来显示已mount 上本机nfs目录的cline 机器。
-e:显示指定的NFS SERVER上export出来的目录。
例如:
[root@localhost ~]# showmount -e 172.20.65.16
Export list for 172.20.65.16:
/var/nfs 172.20.*.*
[root@ns var]# showmount -a
All mount points on ns.osserver :
172.20.*.*:/var/nfs
五、常见问题解答
1 、提示:mount to NFS server ‘172.20.67.203′ failed: server is down.
解决方案:可能是NFS 服务器的防火墙有问题;
2 、提示:mount : RPC: Timed out
解决方案:由于RPC 协议没运行;启动portmap 服务;
也有可能是防火墙问题;Server/Client 均有可能。
在这里再提一点,也很有可能是你的DNS或是网关在搞鬼,我在工作中就遇到了这样的问题,在以上都测试过没有问题后,但NFS还是不好用,那么你就应该支ping一个网关或是DNS了,我的主DNS不好用时,NFS就不好用了,加个备用的DNS服务器地址就好用了。