ubuntunfs服务搭建

Posted iriczhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntunfs服务搭建相关的知识,希望对你有一定的参考价值。

一、开篇

在嵌入式linux开发过程中,由于目标平台的资源限制,开发环境一般都不会放到目标板卡上(需要放在开发宿主机上),如果需要宿主机与目标板卡之间进行文件传输,该怎么办呢。这时候nfs就派生用场了。nfs(Network File System)是一个网络文件系统。使用该文件系统,便能在目标板卡上访问开发宿主机上的文件,还能进行互相拷贝和移动,非常方便。

本文主要描述nfs的搭建方式,由于不同环境和系统下,nfs服务搭建方式可能不同,故将环境描述如下:

【环境描述】

  • 选择虚拟机ubuntu 18.04作为主机。

  • 硬件平台为一块搭载瑞芯微rk3568处理器的板卡。软件方案:linux平台

  • 通信方式:路由器(开启了DHCP) + 网线

二、搭建nfs服务

(2-1)下载nfs服务软件包

首先,在终端使用下列命令安装nfs:

sudo apt-get install nfs-kernel-server


(注:由于笔者已经安装过了,故没有新安装软件包)

(2-2)配置nfs

使用以下命令:

gedit /etc/exports

在文件最后一行添加如下内容:/home/nfs/ *(rw,sync,no_root_squash)

完成后如下图所示:

  • /home/nfs/:指示要共享的目录;“/home/nfs/ ”目录需要自己创建。

  • *:代表允许所有的网络段访问。

  • rw:指示具有可读写的权限。

  • sync:指示资料同步写入内存和硬盘

  • no_root_squash:是 Ubuntu nfs 客户端分享目录使用者的权限。例如:如果客户端使用的是 root 用户,那么对于该共享目录而言,该客户端就具有 root 权限。

(2-3)启动rpcbind服务

使用以下命令重新启动rpcbind服务:

/etc/init.d/rpcbind restart

(2-4)启动nfs服务

使用以下命令重新启动nfs服务:

/etc/init.d/nfs-kernel-server restart

(2-5)验证nfs

使用以下命令:

showmount -e

可以查看系统是否成功挂载nfs目录。

(注:如果没有输出,可能需要重新启动ubuntu后,再使用该条命令查看!!!)

在上图中,看到了输出信息为:/home/nfs *,则证明nfs已经启动成功。

至此,虚拟机ubuntu上的nfs服务就搭建好了。接下来,就需要在硬件板卡上挂载nfs文件系统了。

三、硬件板卡端接入nfs服务

在接入之前,需要获取ubuntu和硬件板卡的ip地址:

回到硬件板卡的终端中:

  • 查看硬件板卡的ip地址:


(注:硬件板卡有两个网口且网线连接的是eth1)

回到虚拟机ubuntu中:

  • 查看虚拟机ubuntu的ip地址:

在硬件板卡linux命令行终端下使用以下命令:

mount -t nfs -o nfsvers=3,nolock 192.168.155.44:/home/nfs /mnt/

挂载nfs文件系统。上面这条命令的意思是:以nfs方式将指定ip地址(文本是192.168.155.44)上的(/home/nfs) 目录挂载到/mnt/路径上。

随后,我们便可以使用:

cd /mnt/

切换到nfs服务器对应的目录路径下,该目录就是虚拟机ubuntu与硬件板卡之间的通信桥梁了(共享目录)。

在硬件板卡上,路径/mnt/则是共享目录,在该目录下的文件则是虚拟机ubuntu路径/home/nfs目录下的文件,我们就通过这两个目录互传文件啦。

【备注】

(1)如果不使用nfs了,我们可以使用:

umount /mnt/

卸载nfs挂载服务。

(2)在获取到虚拟机ubuntu系统和硬件板卡的IP地址后,需要互ping一下,确保二者之间能够互相ping通。

(3)硬件板卡上的linux内核需要支持nfs特性。

Ubuntu 14.04安装配置NFS服务器

(一)安装NFS服务器
1.1-安装Ubuntu nfs服务器端:

sudo apt-get install nfs-kernel-server

1.2-安装nfs的客户端:

sudo apt-get install nfs-common?

(在安装nsf-kernel-server的时候,也会安装nfs-commom。如果没有安装这个软件包,则要执行1.2中的命令了)
1.3-设置共享的文件目录

sudo mkdir /***/***

(二)配置NFS
2.1-修改配置文件/etc/exports

在最后一行添加:/home/USER/nfs *(rw,sync,no_root_squash,no_subtree_check)
前面那个目录是与nfs服务客户端共享的目录,*代表允许所有的网段访问(也可以使用具体的IP)
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:客户机用root访问该共享文件夹时,不映射root用户。(root_squash:客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户)
no_subtree_check:不检查父目录的权限。
2.2-nfs是一个RPC程序,使用它前,需要映射好端口,通过rpcbind 设定:

sudo service rpcbind restart restart

2.3-重启nfs服务:

sudo service restartnfs-kernel-server restart

2.4-测试
运行以下命令来显示一下共享出来的目录:

showmount -e?

(三)挂载指令
到任意一台服务器中执行挂载指令,则可以将指定ip服务器上的共享路径,挂载到本地。

sudo mount -t nfs ***.***.***.***:/home/USER/nfs /nfs-client/
***.***.***.***是NFS服务器的IP地址

如果想开机自动挂载:
把上述指令 sudo mount -t nfs ***.***.***.***:/home/USER/nfs /nfs-clinet/ 写到 /etc/rc.local 文件中。

(四)其它
客户端报错:
mount:文件系统类型错误、选项错误、***.***.***.***:/home/USER/nfs 有坏超级块,
       缺少代码页或助手程序,或其他错误
       (对某些文件系统(如 nfs、cifs) 您可能需要
       一款 /sbin/mount.<类型> 助手程序)
       有些情况下在 syslog 中可以找到一些有用信息- 请尝试

       dmesg | tail  这样的命令看看。
解决:

sudo apt-get install nfs-common

以上是关于ubuntunfs服务搭建的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 14.04安装配置NFS服务器

Linux Ubuntu搭建Git服务器

Ubuntu Linux下快速搭建Samba服务

转linux(Ubuntu)配置svn仓库,搭建svn服务器

ubuntu 16.04 nfs服务的搭建

ubuntu 16.04 nfs服务的搭建