QNX系统配置NFS实战

2 篇文章 0 订阅


原创CSDN博客链接: 原创链接 https://blog.csdn.net/nigaoshang/article/details/107779932
最近在项目中要使用NFS进行文件共享,且使用的操作系统为QNX,通过对QNX的文档进行查阅并最终成功。该文章主要简述如何在QNX侧进行NFS服务端的配置,以及遇到的问题的解决方式。

目标简述

测试通过对QNX系统进行NFS服务端配置,使用Ubuntu系统对NFS服务端共享的目录进行挂载,并在Ubuntu系统本地使用QNX系统通过NFS共享的文件

硬件软件环境

高通8155平台(QNX系统7.0),PC(windows10上虚拟机中运行Ubuntu18.04)

系统连接方式

使用telnet方式连接

前提条件

  1. QNX系统网络配置ok
  2. Ubuntu系统网络配置ok
  3. QNX与Ubuntu系统之间可以通过telnet正常连接通信

配置描述

  1. QNX要配置NFS服务器,需要依赖两个可执行文件,即rpcbind和nfsd两个服务,请确定你的qnx系统中是否已经存在这两个服务。rpcbind服务是将RPC程序/版本号映射为TCP和UDP端口号。仅当rpcbind在服务器上运行时,客户端才能进行RPC调用。nfsd守护程序读取/etc/exports文件,该文件列出了可以共享的文件系统,并可以选择指定可以将这些文件系统共享到哪些客户机。如果未指定客户端,则将向所有发出请求的客户端授予访问权限。具体请参考链接NFS文件系统rpcbind服务nfsd服务
  2. 由于rpcbind 服务的运行需要用到/etc/netconfig网络配置文件,请确保该文件在qnx系统中存在。我用的配置文件如下所示:
# 
# cat /etc/netconfig 
#
# Entries consist of:
#
#       <network_id> <semantics> <flags> <protofamily> <protoname> \
#               <device> <nametoaddr_libs>
#
# The <device> and <nametoaddr_libs> fields are always empty.
#
udp6       tpi_clts      v     inet6    udp     -       -
tcp6       tpi_cots_ord  v     inet6    tcp     -       -
udp        tpi_clts      v     inet     udp     -       -
tcp        tpi_cots_ord  v     inet     tcp     -       -
rawip      tpi_raw       -     inet      -      -       -
local      tpi_cots_ord  -     loopback  -      -       -

该网络配置文件大同小异,如果你的qnx系统中没有,可参照我的配置文件使用
另外,需要确保在/etc/services文件中有以下两行信息,如下:

sunrpc		111/tcp		portmapper	# RPC 4.0 portmapper
sunrpc		111/udp		portmapper
  1. 由于上述1中提到的nfsd需要读取/etc/exports配置文件,请确保系统中是否存在该文件。一般情况没有默认文件,故通常在QNX系统中该文件是不存在的,所以需要我们自己去编辑一个,具体内容请参考/etc/exports文件描述
    我测试的配置文件如下所示:
# cat /etc/exports 
/usr/test  192.168.1.111
/usr/haha  192.168.1.111

我是将qnx上的两个目录都共享给IP地址为192.168.1.111的客户机.
4. 以上文件和服务如果均准备就绪,则先运行rpcbind,之后再运行nfsd。运行参数请参考上述1中的链接说明。
5. 在qnx端的rpcbind和nfsd运行之后,在Ubuntu系统使用 showmount -e 192.168.1.1(192.168.1.1为我的qnx端的ip地址,如果你的配置不一样,请使用你自己的配置ip)查看nfs服务端的共享信息,如下为我使用showmount的输出信息

$ showmount -e 192.168.1.1
Export list for 192.168.1.1:
/usr/haha 192.168.1.111
/usr/test 192.168.1.111

如未正确输出,请检查你的网络连接是否正常,以及防火墙等是否关闭。或使用rpcinfo -p <host ip地址>查看rpc信息是否正常,

$ rpcinfo -p 192.168.1.1
   program vers proto   port  service
    100000    4     0    111  portmapper
    100000    3     0    111  portmapper
    100000    2     0    111  portmapper
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp   2049  mountd
    100003    2   udp   2049  nfs
    100005    3   udp   2049  mountd
    100003    3   udp   2049  nfs
    100005    1   tcp   2049  mountd
    100003    2   tcp   2049  nfs
    100005    3   tcp   2049  mountd
    100003    3   tcp   2049  nfs
  1. 如果能够正常显示showmount的信息,则现在在Ubuntu系统中应该可以成功挂载了。使用sudo mount -t nfs 192.168.1.1:/usr/test /mnt(由于mount时必须使用root权限,所以Ubuntu在使用mount时需要加上sudo)挂载成功之后就可以查看到nfs服务端共享的目录中的内容了。

问题以及解决方式

在配置的过程中肯定会遇到了各种各样的问题,在此我仅列出我遇到的问题,具体的解决方式还要case by case。

问题1:运行nfsd时出现错误,如下所示:
连接拒绝
出现该问题的原因是,在运行nfsd时,rpcbind服务未正常运行。注:一定要先运行rpcbind,再运行nfsd。如果出现以下错误,请使用pidin确保rpcbind服务是否存在。

问题2:使用showmount能够正常显示服务端的共享信息,但在mount时,出现timeout错误,如下所示:

$ sudo mount -t nfs 192.168.1.1:/usr/test ./nfs/test
mount.nfs: Connection timed out

出现该问题的原因是,在运行nfsd服务时没有使用-t 参数,-t参数为使用tcp协议。如果mount时出现timeout的问题,可以使用rpcinfo -p <host ip>查询rpc信息,查看是否有nfs使用tcp协议的信息,如下图所示:nfsd使用tcp协议
问题3:在客户端挂载之后,对目录没有写权限
这种情况,首先确认下/etc/exports是否设置了共享的权限为ro(只读),然后确认共享的目录的权限是否设置为了777(rwx),共享目录如果没有x权限,则在客户端能mount成功,但无法cd进入目录的,如果没有w权限,则无法对目录中的文件进行修改或创建新的文件。

问题4:客户端挂载时出现Stable file handle错误

$ mount -t nfs 192.168.1.1:/usr/test /mnt
mount.nfs: Stale file handle

该情况主要是由于在客户端挂载成功之后,host取消了目录的共享,或将共享的目录删除了等情况导致的。这时使用sudo umount <挂载目录>是无法成功的,如果遇到这种问题可以使用强制umount,命令如下:sudo umount -lf <挂载目录>

上述内容仅为我个人测试时的步骤以及问题记录,如果你在配置过程中遇到其他问题,欢迎留言共同探讨

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

去你妹起个名字真难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值