嵌入式LINUX NFS服务的配置

简介:
NFS   简介
在嵌入式系统开发过程中,由于可执行程序的编译过程和执行过程分别在宿主机和目标机上完成,因此实现宿主机和目标机之间的实时交互能够大幅度提高嵌入式系统开发的效率。由于目标机也带有操作系统,因此可以通过实现不同机器之间的网络共享来完成实时交互。NFS为为网络文件系统(Network File System)的缩写, NFS 最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持,而且还被IETE(国际互联网工程组)制定为RFC1904RFC1813RFC3010标准 使用NFS服务,至少需要启动以下3个系统守护进程。
 
  1rpc.nfsd
它是基本的NFS守护进程,主要功能是管理客户端是否能够登入服务器。
2rpc.mountd
它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利地通过rpc.nfsd登录NFS服务器后,在使用NFS服务器所提供的文件前,还必须通过文件使用权限的验证,rpc.mountd会读取NFS的配置文件/etc/exports来对比客户端的权限。
3portmap
portmap 的主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口号提供给客户端,从而使客户端可以通过该端口向服务器请求服务。值得注意的是,虽然portmap只用于RPC,但它对NFS服务来说是必不可少的。portmap没有运行,NFS客户端就无法查找从NFS服务器中共享的目录 , 要检查NFS服务是否正常运行,可使用rpcinfo -p命令。如果NFS服务运行正常,就可在该命令执行结果中看到关于portmapper等守护进程的条目。
NFS 安装主要软件包
portmap-4.0-54.i386.rpm// 提供port端口软件包
nfs-untils-1.0.1-2.9.i386.rpm//nfs 服务包
[root@localhost root]#rpm  qa|grep portmap
// 查看portmap软件包是否安装
[root@localhost root]#rpm  qa|grep nfs
// 查看nfs软件包是否安装
[root@localhost root]#mount /dev/cdrom /mnt/cdrom
// 如果没有安装,则将Red Hat Linux 9.0的第一张镜像盘挂载到虚拟机上,两个主安装包都在第一张镜像盘
[root@localhost RPMS]#cd /mnt/cdrom/RedHat/RPMS/
// 切换到安装包目录,
[root@localhost RPMS]#ls  l portmap*
// 显示以portmap开头安装包的详细信息
[root@localhost RPMS]#rpm  ivh portmap-4.0-54.i386.rpm
// 安装并用进度条显示安装过程
[root@localhost RPMS]#ls  l nfs-utils*
// 同理,显示nfs安装包
[root@localhost RPMS]#rpm  ivh nfs-untils-1.0.1-2.9.i386.rpm
// 安装nfs
[root@localhost RPMS]#ls  l redhat-config-nfs-1.0.4-5.noarch.rpm
解压是一样道理的。
 
 
[root@localhost root]#service portmap status
// 查看portmap端口的运行情况
[root@localhost root]#service nfs status
// 查看nfs服务是否启动
[root@localhost root]#service portmap start
// 启动portmap服务
[root@localhost root]#service nfs start
// 启动nfs服务,如果重启服务用service nfs restart
 
 
[root@localhost root]#rpcinfo  p
// 显示nfs程序版本协议端口
 
DEVICE=eth0 // 设备别名
BOOTPROTO=static // 静态类型
IPADDR=192.168.1.10 //IP 地址
NETMASK=255.255.255.0 // 子网掩码
NETWORK=192.168.1.0 // 网络地址
BORADCAST=192.168.1.255  // 广播地址
 
 
 
在根目录下建立一个arm2410cl主目录,在arm2410cl建立1个子目录temp
 
 
基本:
目录:自己定义的
/arm2410cl   * (或缺省)      所有主机
/arm2410cl/temp   192.168.1.0/24 (或 192.168.1.*     指定子网中的所有主机
/arm2410cl/mail     www.chen.com         指定域名的主机
/arm2410cl/samba    *.chen.com       指定域中的所有主机
/arm2410cl/ftp   192.168.1.10 指定 IP 地址的主机 
基本权限:
ro:  只读
rw:  读写
两个基本权限是单选的,选择ro,rw就不能存在。同理,选择rw就不能选择ro
常规选项:
Insecure: 允许来自高于1024的端口的连接
Insecure_locks: 允许不安全的文件锁定
no_subtree_check: 禁用子树查询
sync: 按要求同步写操作
no_wdelay: 立即强制同步写操作
用户访问:
no_root_squash: 把远程根用户当作本地根用户
all_squash: 把所有客户用户当作匿名用户
anonuid=XXX: 为匿名用户指定本地用户ID
anongid=XXX: 为匿名用户指定本地组群ID
维护NFS服务的输出目录列表
每当修改了/etc/exports文件的内容后,实际上不需要重新启动NFS服务,而直接使用命令exportfs就可以使设置立即生效。
exportfs 命令就是用来维护NFS服务的输出目录列表的,命令的基本格式如下:
 
 
exports [ 选项]
选项有以下几个。
-a :输出在/etc/exports文件中所设置的所有目录。
-r :重新读取/etc/exports文件中的设置,并使设置立即生效,而不需重新启动NFS服务。
-u :停止输出某一目录。
-v :在输出目录时将目录显示到屏幕上。
1. 重新输出共享目录
每当修改了/etc/exports文件的内容后,可使用下面的命令来重新输出共享目录
Exports  -rv
2. 停止输出所有共享目录
要停止输出当前主机中NFS服务器的所有共享目录,可使用下面的命令。
exportfs  -auv
NFS 服务的配置
NFS 服务的配置方法相对比较简单,只需在NFS的主配置文件/etc/exports中进行设置,然后启动NFS服务即可。
2 .使用showmount命令测试NFS服务器的输出目录状态
showmount 命令的基本格式为:
showmount  -e 192.168.1.10
showmount
showmount 命令如下:
# showmount [-ae] hostname
参数说明如下。
1-a:以host:dir这样的格式来显示客户主机名和挂载点目录。
2-d:仅显示被客户挂载的目录名。
3-e:显示NFS服务器的输出清单。
4-h:显示帮助信息。
5-v:显示版本信息。
6--no-headers:禁止输出描述头部的信息。
当要扫描某一主机所提供的NFS共享的目录时,使用showmount -e IP(或主机名称hostname)即可。
 
# netstat -utln  // 观察激活的端口号
nfs 所开启的端口是2049,其他端口是RPC Server其他程序(例如rpc.mountdrpc.rquotadrpc.nfsd.)随机产生的。即端口号不会是固定的,每次restart nfs都会得到不一样的端口号 值得注意的是,在使用showmount -e命令查看NFS服务器上的输出目录时,如果出现如图4-14所示的故障,其原因可能是NFS服务器上没有启动portmapnfs服务,也可能是被防火墙过滤掉了。解决办法是启动NFS服务器上的portmapnfs服务,并重新设置NFS服务器上的防火墙(包括iptablesTCP_Wrappers)。若是iptables防火墙引起的故障,为了测试NFS服务器功能,可简单地用service iptables stop命令先关掉该防火墙。如果不想关掉防火墙也可以,RPC port端口:111 NFS启动端口2049,允许对外开放
iptables -A INPUT -p tcp -m multiport --dport 111,2049 -j ACCEPT 
iptables -A INPUT -p udp -m multiport --dport 111,2049 -j ACCEPT 
启动时自动连接NFS要想让系统在启动时自动挂载NFS服务器上的输出目录,应编辑文件/etc/fstab,在该文件中加入如下格式的语句
[root@localhost root]#vim /etc/fstab
NFS服务器名或IP地址:输出目录 本地挂载目录 nfs defaults 0 0
192.168.1.10:/arm2410cl /mnt/nfs nfs defaults 0 0
IP
[root@EmbedSky /]#ifconfig eth0 192.168.1.11 netmask 255.255.255.0
[root@EmbeSky /]#ping c 4 192.168.1.10
//ping
[root@EmbeSky /]#mount t nfs o nolock 192.168.1.10:/arm2410cl /mnt/nfs
/arm2410cl 
NFS
[root@EmbedSky]#umount /mnt/nfs
//不能在挂载目录卸载,否则卸载会显示系统繁忙无法卸载
NFS服务器的故障排除
故障排除思路
NFS出现了故障,可以从以下几个方面着手检查。
1NFS客户机和服务器的负荷是否太高,服务器和客户端之间的网络是否正常。
2/etc/exports文件的正确性。
3)必要时重新启动NFSportmap服务。
运行下列命令重新启动portmapNFS
service portmap restart
service nfs start
4)检查客户端中的mount命令或/etc/fstab的语法是否正确。
5)查看内核是否支持NFSRPC服务
 
NFS
PortmapNFS
挂载时命令打错了的
挂载时没有那个目录的状态
 
欢迎热爱嵌入式linux的圈友、坛友,多多发言,学习交流。给我多点建议,我很乐意接受。同时感谢你的阅读。









本文转自 chen138 51CTO博客,原文链接:http://blog.51cto.com/chenboqiang/285346,如需转载请自行联系原作者
目录
相关文章
|
28天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
54 3
|
1天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
8 0
|
8天前
|
Linux 网络安全
Centos6.5安装并配置NFS服务
该内容描述了在Linux系统中设置NFS服务的步骤。首先挂载yum源,然后安装NFS服务,并编辑配置文件。接着,重启rpcbind和NFS服务,可能需要重复此过程以解决初始可能出现的问题。此外,关闭防火墙策略,并再次重启服务。最终,根目录被共享,特定IP网段被允许访问。
19 0
|
12天前
|
数据可视化 Linux Docker
Linux系统使用Docker部署Dashy导航页服务并实现公网环境访问
Linux系统使用Docker部署Dashy导航页服务并实现公网环境访问
|
12天前
|
数据可视化 数据挖掘 Linux
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
如何在Linux部署DataEase数据分析服务并实现无公网IP远程分析内网数据信息
|
12天前
|
存储 网络协议 Ubuntu
如何使用内网穿透远程访问Linux SVN服务?
如何使用内网穿透远程访问Linux SVN服务?
|
15天前
|
存储 关系型数据库 MySQL
Linux服务详解
Linux服务详解
29 0
|
16天前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
|
16天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
|
16天前
|
Linux 开发工具
【ZYNQ】配置嵌入式 Linux 静态 IP 地址
【ZYNQ】配置嵌入式 Linux 静态 IP 地址