10.网络文件系统( NFS)使用

网络文件系统( NFS) 使用

  • NFS 优点:
    • 开发过程中不受开发板空间的限制,直接使用网络文件就像使用本地文件一样;
    • 调试过程中避免一一将编译后的应用程序和库文件复制到开发板上。
  • 在开发板中使用网络文件系统可以为开发和调试节省不少时间。下面具体介绍其使用步骤。

1. 虚拟机设置

  • 配置虚拟机,让其能够直接访问局域网内的任何主机。前面为了能够让虚拟机与宿主机进行通信,将虚拟机的网络连接设置为 NAT 方式,下面分别介绍桥接模式和 NAT 模式 :

    • 桥接模式:虚拟机相当于局域网中一台独立主机,可以访问网内任何一台机器。在这种模式下,需将虚拟机IP 地址配置成和宿主机同一网段,这样二者可以通信。如果再配置好网关和DNS 的地址,虚拟机还可以通过局域网的网关或路由器访问互联网。
    • NAT 模式:虚拟机借助 NAT(网络地址转换)功能,通过宿主机所在网络来访问互联网。 NAT 模式下的虚拟机 IP 是由 VMnet(NAT)虚拟网络的 DHCP 服务器提供的,无法手动修改,因此虚拟机和局域网中的其他真实主机无法通信。
  • 为了使虚拟机、宿主机和开发板能达到互相通信的目的,虚拟机的网络连接方式应该采用桥接方式

    1. 通过选择菜单 "虚拟机 " ,然后在下拉菜单中选择 "设置 " 选项,在弹出的 "虚拟机设置" 窗口中进行设置,需要注意的是,设置虚拟机网络连接时,应该在虚拟机没有启动时进行设置,否则无法设置或者设置无法生效。

    2. 启动虚拟机,查看虚拟机的 IP 地址和网络连接状态。

      • 如果虚拟机右下角的虚拟网卡标识显示已经连接上,那么在终端输入 ifconfig 查看网卡是否已设置。如果需要修改IP地址信息,则可以单击右上角的网络图标,然后在弹出的面板中,单击"网络设置"按钮,打开"网络"对话框,单击设置图标进入网卡设置对话框,在该对话框中对虚拟机 IP 地址和网关进行设置 :

      • 如果虚拟机右下角的虚拟网卡标识显示未连接,则有可能是安装虚拟机时少选了一项 VMware Bridge Protocol ,那么需要在宿主机上完成以下设置:

        • 打开网络连接的属性窗口,在该窗口中有本地连接 VMnet1、 VMnet8 和网络连接。右击 VMnet1 或者 VMnet8,选择 "属性" 进入"VMware Network Adapter VMnet1属性"对话框,如果没有找到"VMware Bridge Protocol "项的话,那就需要重新安装该桥接协议。

          • 首先单击 "安装 " 按钮,进入 "选择网络功能类型 " 对话框后,选择 "服务 " 选项,并单击 "添加" 按钮:
        • 在 "选择网络服务 " 窗口单击 "从磁盘安装 " 按钮,在虚拟机安装路径下的 VMware Workstation 目录中找到 netbridge.inf 文件,然后点击 "打开" 按钮进行安装:

        • 安装完成后,在 "VMware Network Adapter VMnet1 属性" 窗口出现了 VMware Bridge Protocol 项,如图所示。

        • 最后,重新启动计算机并且重启虚拟机,验证网络联通性。假设,主机的 IP 地址为 192.168.1.109,虚拟机的 IP 地址为 192.168.1.111,开发板的 IP 地址为 192.168.1.113。分别通过 ping ip地址命令,验证两两之间是否可以通信。正常情况下是可以互相ping 通,但是如果物理网卡没有连接网线则无法实现通信(开发板与主机采用交叉网线连接)。

2. 共享目录设置

  • 编辑文件/etc/exports,在文件末尾添加/home/nfs 192.168.1.*(rw, sync, no_root_squash)
    • /home/nfs:表示共享给其他主机的共享目录;
    • 192.168.1.*:表示 IP 地址为 192.168.1.(2~254) 的主机都能够挂载/home/nfs 目录;
    • rw:表示挂接此目录的客户机对该目录具有读写的权力;
    • sync:表示同步写入存储器;
    • no_root_squash:表示允许挂接此目录的客户机享有该主机的 root 身份。
  • 修改/etc/exports 配置文件后,应该使配置文件重新生效,执行exportfs --rv
    • -r:重新挂载 /etc/exports 中共享出来的目录;
    • -v:在 export 的时候,显示共享目录信息;
    • -a:全部 mount 或者 unmount /etc/exports 中的内容;
    • -u: 卸载目录
  • 查看共享目录: showmount -a
    • 如果出现错误: showmount: can't get address for localhost.localdomain,则修改文件/etc/hosts,将::1 localhost.localdomain localhost 修改为 127.0.0.1 localhost.localdomain localhost

3. 启动并挂载NFS

  • 首先需要设置虚拟机防火墙,使之允许 NFS 和 RPC-bing 服务,并且启动RPC-bing 服务;

  • 然后,分别启动 RPC-bing 服务和 NFS 服务。注意,如果在启动过程中出现"启动 NFS 守护进程失败"等错误提示,则重新计算机后再尝试;

    bash 复制代码
    service rpcbing start 		//服务启动
    service rpcbing restart 	//服务重启
    service nfs start
    service nfs restart
  • 在虚拟机上修改共享目录/home/nfs 的权限为 777,并确保 "虚拟机、主机及开发板" 三者可以互相ping通,最后使用 mount 命令在开发板上挂载此目录:

    bash 复制代码
    chmod 777 /home/nfs
    mount --o nolock -t nfs 192.168.1.123:/home/nfs /mnt

4. 双网卡挂载NFS

  • 当拥有两张物理网卡时,专门用一张网卡将 ARM 板和虚拟机相连,将两者的 IP 设置在一个 IP 段内。具体过程和单网卡类似,首先做到虚拟机和 ARM 能相互 ping 通,能正常启动 NFS 服务,最后挂载网络文件系统。

  • 在搭建 NFS 时,给出一些错误情况解决的方法:

    • 当启动 NFS 服务失败时,解决的办法通常是修改/etc/exports 文件,出错的原因通常是权限引起的。
    • 当出现 RPC 等报错时,应该注意防火墙是否关闭。
    • 当挂载 NFS 时,出现 Permission denied 报错时,检查/etc/exports 文件中的权限设置,另外检查共享目录的权限设置。
  • 在挂载过程时,给出一些错误情况解决的方法:

    • mount: RPC: Timed out:该问题是由主机的防火墙引起的,关闭了虚拟机的防火墙后请注意,主机的防火墙也可能对 RPC 的包进行拦截。遇到此类问题时,请读者注意虚拟机和主机两者的防火墙是否关闭。

    • 在使用 mount -t nfs 192.168.1.123:/home/nfs /mnt 命令挂载时,提示错误:

      bash 复制代码
      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      • 需要将挂载命令修改为:mount --o nolock --t nfs 192.168.1.123:/home/nfs /mnt

(errno 5).

```

    - 需要将挂载命令修改为:`mount --o nolock --t nfs 192.168.1.123:/home/nfs /mnt ` 
相关推荐
ZachOn1y24 分钟前
计算机网络:物理层 —— 信道及其极限容量
网络·计算机网络·信道·物理层·知识点汇总
limengshi1383921 小时前
通信工程学习:什么是IP网际协议
网络·网络协议·学习·tcp/ip·信息与通信
李的阿洁3 小时前
OSPF的不规则区域
运维·服务器·网络
逸狼3 小时前
【JavaEE初阶】网络原理
服务器·网络·智能路由器
shmily ....4 小时前
文件上传漏洞原理
网络·安全
IPFoxy6664 小时前
如何判断静态代理IP地址是否被污染?
网络·安全·web安全
网络研究院5 小时前
什么是 ARP 欺骗和缓存中毒攻击?
网络·安全·ddos·攻击·arp·实践·缓解
没有名字的小羊5 小时前
网络通信——OSPF和RIP的区别(总结)
网络·网络协议
it00zyq6 小时前
Linux网络编程
linux·网络
是小李呀~6 小时前
websocket实战
网络·websocket·网络协议