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

首先 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
以后复制文件一般都很稳定了


你可能感兴趣的:(Linux学习)