嵌入式Linux之NFS配置
1、RPC和rpcbind
RPC(Remote Procedure Call)即远程过程调用,是分布式应用的基础,即允许计算机远程调用网络上其他计算机的程序。RPC通常由提供RPC服务的服务端和使用RPC服务端的客户端组成。
rpcbind(亦称rpc.portmap, port mapper, portmap)是一个运行在网络节点(提供其他RPC服务)上的RPC服务。rpcbind是RPC服务的管理者。当一个RPC服务端开启时,它会告诉rpcbind它提供的RPC服务的端口号、协议类型(TCP/UDP)、过程调用服务号和版本号键值对。当RPC客户端请求指定过程调用号和版本号的RPC服务时,首先必须通过rpcbind获取端口号和协议类型。rpcbind服务必须在其他RPC服务端之前开启。
rpcbind协议的前身是portmap协议,从第三版开始更名为rpcbind。rpcbind协议占用TCP/UDP的111号端口。使用rpcinfo -p命令可以查询当前系统中提供的RPC服务的服务名称、端口号、协议类型、过程调用号和版本号等信息。
$rpcinfo -p
program vers proto port
tcp portmapper
udp portmapper
udp nfs
udp nfs
udp nfs
tcp nfs
tcp nfs
tcp nfs
udp status
udp nlockmgr
udp nlockmgr
udp nlockmgr
tcp status
tcp nlockmgr
tcp nlockmgr
tcp nlockmgr
udp mountd
tcp mountd
udp mountd
tcp mountd
udp mountd
tcp mountd
2、NFS介绍
NFS(Network File System)是Sun公司开发的分布式文件系统,由提供NFS服务的NFS Server端和使用NFS服务的NFS Client端组成。
NFS服务本质上是一个RPC服务,因此它必须依赖rpcbind服务“广播”自己的过程调用号、版本号、端口号、协议类型等信息。
通过实现NFS服务,NFS Client端可以在本地文件系统的NFS挂载点对NFS Server端的文件系统进行直接读写操作。
一般情况下,NFS服务通过2049号端口进行数据传输,用户也可以指定端口号。
在Linux系统中部署NFS服务需要系统的支持,mount程序版本v2.10及以上版本,且需要Linuxn内核支持NFS文件系统。
一般情况下,通过nfs-utils组件实现NFS服务端和客户端,它会在后台运行5个守护进程:

3、NFS配置
首先必须配置Linux内核支持NFS文件系统,即使能CONFIG_EXPORTFS和CONFIG_NFS_FS配置选项

3.2、根文件系统集成nfs-utils和rpcbind服务组件
通过buildroot搭建根文件系统时,在buildroot配置选项中选中nfs-utils和rpcbind


通过busybox集成mount命令时,使能busybox配置选项的FEATURE_MOUNT_NFS选项
3.4、NFS Server配置
首先配置/etc/exports文件,该配置文件提供给exportfs命令使用,主要是用来配置NFS共享目录及其属性。
/mnt/share 192.168.100.2(insecure,rw,sync,fsid=0,no_subtree_check,no_root_squash)
其中/mnt/share为共享目录路径,192.168.100.2为NFS Client端的IP地址,其他的为配置参数。
其次,在系统启动脚本中执行以下命令:
exportfs –arv //根据/etc/exports配置文件更新共享目录列表
rpc.mountd -p 52400 //指定rpc服务数据报文端口号
rpc.statd --no-notify //该守护进程用于监听其他主机的重启消息,并管理本地主机重启时需要通知的主机列表。
sm-notify //在本地系统重启时通知NFS对端
在系统启动脚本中执行以下命令挂载NFS Server共享目录
sm-notify
rpc.statd
mount -t nfs 192.168.100.1:/mnt/share /mnt/share -o nfsvers=3 –v
[共享的目录] [主机名或IP(参数,参数)]
其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是sync,ro,root_squash,no_delay。
当主机名或IP地址为空时,则代表共享给任意客户机提供服务。
当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:
[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]
rw 读写访问
sync 同步写入资料到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
嵌入式Linux之NFS配置的更多相关文章
- 嵌入式Linux内时区配置
一般情况下,嵌入式Linux系统的时区,也是国际事件. 但是我们是属于东八区的时区,所以有一些时候要更改一下 TZ 变量可以配置时区,如下
- Linux:NFS配置
NFS配置 1.创建分享的文件:touch /var/www/html/aa.txt2.查看是否安装NFS:rpm -qa|grep nfs3.查看IP地址:ifconfig4.配置NFS:vi /e ...
- Linux的NFS配置
1.NFS简介 (1)什么是NFS? 1)NFS是Net File System的简写,即网络文件系统.NFS是由SUN公司开发,并于1984年推出的一个RPC(远程过程调用)服务系统,它使我们能够达 ...
- 嵌入式Linux之gdb配置和使用
背景: ARM Cortext-A53核+Linux 4.1.12,内核空间64位,用户态32位,gdb版本7.10.1 GDB编译: 1)手动下载gdb-7.10.1.tar.gz源码编译 ./co ...
- 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...
- 嵌入式Linux系统挂载NFS系统
在建立交叉编译环境的时候,经常需要网嵌入式Linux环境中拷贝文件,nfs网络共享文件系统是一种很方便的方式. 在嵌入式Linux挂载nfs系统,需要用到如下命令: mount -t nfs -o n ...
- 嵌入式Linux开发环境搭建,问题ping、nfs的解决
一. 嵌入式软件层次 1) Bootloader->引导加载程序 整个嵌入式系统的加载启动任务完全交给Bootloader完成,它的主要任务是将内核映象从硬盘读到RAM中,然后跳转到内核入口启动 ...
- 基于mini2440嵌入式Linux根文件系统制作(Initramfs和nfs两种跟文件系统)
嵌入式系统由三部分构成: 1.bootoader---bootparameters---2.kernel 3.Root-filesysytem 一个内核可以挂载多个文件系统,但是有一个根文件系统所以叫 ...
- Linux下NFS的搭建与配置
一.简介 1.NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布. 2.NFS可实现Linux系统之间的文件 ...
随机推荐
- Jquery复习(二)之stop()易忘点
jQuery stop() 方法 jQuery stop() 方法用于停止动画或效果,在它们完成之前. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. 语法:$ ...
- BZOJ 3118 Orz the MST
权限题qwq 如果我们要使得某棵生成树为最小生成树,那么上面的边都不能被替代,具体的,对于一个非树边,它的权值要\(\ge\)它两端点在树上的路径上的所以边的权值,所以对于每个非树边就可以对一些树边列 ...
- 使用 supervisor 管理 Celery 服务
使用 supervisor 管理 Celery 服务 Celery 后台运行 如果我们想让celery worker运行在后台而不是终端上,在后台以守护进程的方式运行,我们可以使用supervisor ...
- mysql 关于log_bin_trust_function_creators变量
在mysql创建自定义函数的时候,有时候会报以下错误: Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or RE ...
- python多线程之threading、ThreadPoolExecutor.map
背景: 某个应用场景需要从数据库中取出几十万的数据时,需要对每个数据进行相应的操作.逐个数据处理过慢,于是考虑对数据进行分段线程处理: 方法一:使用threading模块 代码: # -*- codi ...
- keymaps - 对键盘映射文件的描述
描述 (DESCRIPTION) loadkeys(1) 能够 通过 调入 指定的 文件 修改 键盘翻译表, 键盘翻译表 通常 用于 内核的 键盘驱动程序; 另外 dumpkeys(1) 可以 根据 ...
- java内存区域及溢出异常
内存划分: java虚拟机在执行java程序过程中会把内存分为以下区域进行管理 线程私有的 虚拟机栈 局部变量表 基本数据类型 long和double占用两个slot 对象引用 返回地址 操作数栈 动 ...
- 用jmeter进行接口测试(2)
1.jmeter配置元件之HTTP信息头管理器使用 右击线程组-[添加]-[HTTP信息头管理器] 是打发 Jmeter请求元件之参数化txt
- 批处理实现自动Git push
用Git用的多,每次修改文件后都需要敲几条命令: git add git commit git push ······ 太麻烦了 于是想到使用批处理(.bat)来自动化这个过程(注意:Windows环 ...
- 【NOIP2016提高A组五校联考2】tree
题目 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1.每个结点上有一个物品,第i 个结点上的物品价值为vi. 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的 ...