目标板挂载NFS时 需要nolock参数的网摘

来源:互联网 发布:b站黑历史知乎 编辑:程序博客网 时间:2024/05/16 17:06

nfs方式共享主机文件

作者:qtopia2009-7-3 10:00:00
一.   检查nfs状态:
#service nfs status

二.   在主机创建nfs共享文件夹:
#mkdir /nfsroot
#e cho “/nfsroot 192.168.1.118(rw,sync,no_root_squash)” >/etc/exports
#cat /etc/exports
/nfsroot 192.168.1.118(rw.sync,no_root_squash)
这里我们创建了/nfsroot以用于nfs 共享,并在/etc/exports文件中将共享属性IP设置为192.168.1.118(开发板的)的用户可读写,并且由no_root_squash指定信任客户端.

三.   起动主机nfs服务
#service nfs start

四,在开发板mount
#mount 192.168.1.100:/nfsroot  /mnt/

无任何提示表示成功,可以操作/mnt目录,cp、mv文件等
有如下错误提示:
/ # mount -t nfs 192.168.1.249:/appdata /mnt
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
mount: Mounting 192.168.1.249:/appdata on /mnt failed: Input/output error

可能原因:
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能;
简单的解决方法:kill 文件锁(lockd)或者mount -o nolock ;
上面说的文件锁具体是什么原因,还没有找到更好的解决办法。
注意:主机防火墙有设置时,也可能导致目标板无法正常访问。

改用: mount  -o nolock 192.168.1.100:/nfsroot /mnt 可解决.

嵌入式开发中配置和使用NFS
主机系统:RHEL 4
目标板:AT91SAM9263-EK

配置主机NFS服务
主机IP:192.168.1.249
编辑/etc/exports文件,格式可以参考man exports,里面有详细的参数说明和示例。
如,要共享主机的/appdata目录给目标板,具有读写功能,一般都指定用户(root)来操作,否则默认会出现uid和gid都是-2的数字(可以通过anonuid和anongid来设置匿名操作的相关ID,或者用root_squash来设置root操作),最后写出的exports样子如下:
[wqch@localhost ~]$ cat /etc/exports
/appdata 192.168.1.*(rw,sync,no_root_squash)

以root执行exportfs –r,重新加载导出内容,若修改了文件exports,直接执行此命令即可;
启动portmap服务,service portmap start ;(为什么要这个?因为portmap定向RPC通信数据流如果,若不运行portmap,则NFS客户机无法找到从NFS服务器共享的目录。)
启动nfs服务,service nfs start;

目标板操作
目标板IP:192.168.1.8
启动目标板并连通网络后,首先查看kernel自身是否支持nfs,
cat /proc/filesystems
查看其中是否有nfs一行,若没有则表示内核不支持nfs,就需要重新编译和烧内核;有则OK,接下来就可以直接mount操作。
具体命令是:
mount –o nolock 192.168.1.249:/appdata /mnt
无任何提示表示成功,可以操作/mnt目录,cp、mv文件等。
使用命令mount –t nfs 192.168.1.249:/appdata /mnt ,有如下错误提示:
/ # mount -t nfs 192.168.1.249:/appdata /mnt
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
lockd_up: makesock failed, error=-5
portmap: server localhost not responding, timed out
RPC: failed to contact portmap (errno -5).
mount: Mounting 192.168.1.249:/appdata on /mnt failed: Input/output error

可能原因:
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能;
简单的解决方法:kill 文件锁(lockd)或者mount -o nolock ;
上面说的文件锁具体是什么原因,还没有找到更好的解决办法。
注意:主机防火墙有设置时,也可能导致目标板无法正常访问。
转自:http://blog.21ic.com/user1/5823/archives/2009/60250.html
原创粉丝点击