嵌入式LINUX NFS服务的配置

本文涉及的产品
云防火墙,500元 1000GB
简介:
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
Portmap NFS
挂载时命令打错了的
挂载时没有那个目录的状态
 
欢迎热爱嵌入式linux的圈友、坛友,多多发言,学习交流。给我多点建议,我很乐意接受。同时感谢你的阅读。









本文转自 chen138 51CTO博客,原文链接:http://blog.51cto.com/chenboqiang/285346,如需转载请自行联系原作者
目录
相关文章
|
24天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
42 5
linux系统服务二!
|
24天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
43 3
linux系统服务!!!
|
4月前
|
Linux
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
29天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
145 3
|
29天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
72 3
|
2月前
|
Unix Linux 网络安全
NFS挂载服务
【10月更文挑战第14天】
50 2
|
2月前
|
Ubuntu Linux 网络安全
Linux中服务管理问题
【10月更文挑战第4天】
26 2
|
2月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
78 0
|
3月前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
435 3
|
3月前
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。