您的位置:首页 > 其它

利用nfs实现开发板与虚拟机ubuntu共享文件的方法

2015-12-11 21:48 489 查看
首先 mkdir /home/a123/nfsroot 建立一个nfsroot共享目录

1)nfs 安装

apt-get install nfs-kernel-server

(2)

编辑/etc/exports

/home/a123/nfsroot  *(insecure,rw,async,no_root_squash)

/home/a123/nfsroot 是共享目录的路径

括号中的4个参数都是说明共享目录的属性

(3)

关掉防火墙

sudo iptables -F

(4)

重启nfs

sudo /etc/init.d/nfs-kernel-server restart      (网上有人说这两个启动顺序不能相反。要先启动下面)

sudo /etc/init.d/rpcbind restart

(5)

在ubuntu测试

sudo mount 192.168.2.101:/home/a123/nfsroot /mnt

这里的IP地址为nfs服务器的地址,就是ubuntu虚拟机的IP地址   

(备注:/home/a123/nfsroot 是共享目录的路径

       /mnt 共享目录的挂载点)

(6)

开发板上挂载:

1 设置虚拟机与本地机的网络模式为桥接

2 开发板与本地机的连接用交叉网线

3 设置本地机,虚拟机,开发板的网络在同一个网段中

 ping一下能通

4.mkdir /mnt/nfs

 

挂载命令:(开发板上操作)

# mount -o nolock,rw -t nfs 192.168.2.101:/home/a123/nfsroot  /mnt/nfs

(备注:192.168.1.200 是ubuntu的ip地址,/mnt/nfs 是开发板的挂载点)

 

(以下内容没实践过)

要加参数:-o nolock(一开始,我没加,就挂载不了,老是提示超时)

注意事项:

【1】 NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。则终端会出现:nfs:server is not responding,still trying提示信息

解决方案是:在客户端改用TCP协议,使用下面的命令,

mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.0.121:/主机nfs目录 /挂载路径 

下面是一些NFS共享的常用参数: 
ro:只读访问 

rw:读写访问 

sync:所有数据在请求时写入共享 

async:NFS 在写入数据前可以响应请求 

secure:NFS通过1024以下的安全TCP/IP端口发送 

insecure:NFS通过 1024以上的端口发送 

wdelay:如果多个用户要写入NFS目录,则归组写入(默认) 

no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 

hide:在NFS共享目录中不共享其子目录 

no_hide:共享 NFS目录的子目录 

subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 

no_subtree_check:和上面相对,不检查父目录权限 

all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 

no_all_squash:保留共享文件的UID和GID(默认) 

root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认) 
no_root_squash:root用户具有根目录的完全管理访问权限 
anonuid=xxx:指定NFS服务器/etc /passwd文件中匿名用户的UID 

anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID


nfs:server is not responding,still trying 原因与解决方案(转)

今天,用开发板通过nfs挂载主机,想从主机上面拷贝一些资料,可是竟然出现:nfs:server is not responding,still trying , 我用的是友善之臂的mini2440,操作系统使用的是Ubuntu8.04。

    本来还以为是nfs出了故障,但是google了一下发现原来不是nfs的原因,而是由于传送的数据太大,出现数据包丢失现象。

   NFS 的默认传输协议是 UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象。可用的解决方案是:在客户端改用TCP协议,使用下面的命令,

mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.0.121:/主机nfs目录 /挂载路径

   注意:中间使用的是逗号,而非英文中的句号。

---------------------------------------------------以下方法也可以解决-----------------------------------------------------------------------

原来nfs默认是用udp协议传输的,所以你在主机复制很多或者很大的文件给目标板时,很可能做成包的丢失。
解决方法

目标板下:mount -t nfs -o nolock -o tcp 192.168.1.121:/root/share /host

以后复制文件一般都很稳定了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: