hsy75的个人空间 https://blog.eetop.cn/vivilife [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【转】How to configure NFS on Linux (2) 中文

已有 1327 次阅读| 2012-8-30 17:03 |个人分类:linux

  

网络文件系统(NFSNetwork File System

是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌入式目标系统上,就可以直接在嵌入式目标系统上操作Linux 服务器,同时可以在线对程序进行调试和修改,大大的方便了软件的开发。因此,NFS 的是嵌入式Linux 开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式Linux NFS 开发环境。

嵌入式Linux NFS 开发环境的实现包括两个方面:

一是Linux 服务器端的NFS 服务器支持;

二是嵌入式目标系统的NFS 客户端的支持。因此,NFS 开发环境的建立需要配置linux 服务器端和嵌入式目标系统端。


一、Linux 服务器端NFS 服务器的配置

root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。

执行如下命令编辑文件/etc/exports

# vi /etc/exports

在该文件里添加如下内容:

/home/work 192.168.0.*rw,sync,no_root_squash

然后保存退出。

添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

/home/work 也称为服务器输出共享目录。

括号内的参数意义描述如下:

rw:读/写权限,只读权限的参数为ro

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。

no_root_squashNFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。

接着执行如下命令,启动端口映射:

# /etc/rc.d/init.d/portmap start

最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:

# /etc/rc.d/init.d/nfs start

用户也可以重新启动Linux 服务器,自动启动NFS 服务。

NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptablesipchains 等选项的设置,以及/etc/hosts.deny/etc/hosts.allow 文件。

我们首先在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令:

# mount –t nfs 192.168.0.20:/home/work /mnt

# ls /mnt

命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。


二、嵌入式目标系统NFS 客户端的配置

Linux 服务器设置好后,还需要对客户端进行相关配置。在配置内核时选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:

选中networking options-》IP:kernel level auloconfiguralion

选中file systems-》network file systems-》下的root file system on nfs

nfs file system support重新编译内核下载bootloaderkernel到开发板上

在嵌入式目标系统的Linux Shell 下,执行如下命令来进行NFS 共享目录挂载:

# mkdir /mnt/nfs //建立Linux 服务器输出共享目录的挂载点;

# mount –t nfs 192.168.0.20:/home/work /mnt/nfs –o nolock

# cd /mnt/nfs

# ls

此时,嵌入式目标系统端所显示的内容即为Linux 服务器的输出目录的内容,即Linux 服务器的输出目。

/home/work 通过NFS 映射到了嵌入式目标系统的/mnt/nfs 目录。用户可以用增//修改文件的方式来验证实际效果。mount 命令中的192.168.0.20 Linux 服务器的IP 地址,/home/work Linux 服务器端所配置的共享输出目录,/mnt/nfs 为嵌入式设备上的本地目录。

在开发过程中,来回输入命令非常烦人,我写了两个简单的脚本来完成nfs的启动,挂载。

host启动nfs
snfs
#!/bin/bash
ifconfig eth0 192.168.0.20
/etc/rc.d/init.d/portmap start
/etc/rc.d/init.d/nfs start
嵌入式目标机挂载nfs
mnfs

#!/bin/sh
mount -t nfs 192.168.0.20:/home/work/nfs /mnt/nfs -o nolock
echo “nfs ok

核心提示:
nfs
服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfs nfs

nfs 服务是基于 rpc 来实现的一个方便的共享文件系统, linux windows 之间共享的文件非常的便利。 linux nfs 已经被完全整合进了内核,只要在编译内核的时候选择编译文件系统,那么默认就支持 nfs
nfs
主服务进程使用的端口是 2049 udp 2049 tcp 其他进程端口都是半随机的基于 portmap 建议在 /etc/sysconfig/nf 将随机端口定义成静态端口,使端口不混乱,并且利于配置 iptables 防火墙策略
nfs
装置包是 nfs-utils 基于 uid 识别用户,配置文件 /etc/export /etc/sysconfig/nf
nfs
多进程的
nfsd
主服务进程 工作于内核中的只能以 root 用户来运行
1 rpc.mountd
基于 rpc 实现的挂载监控的进程
2 rpc.srard
用户建立的连接若是断掉,负责通知服务器重新建立 4 连接
3 lockd
处置客户端请求文件锁,防止多用户同时对一个文件写入造成的抵触
4 rpc.rquotad RPC
辅助进程,默认监察随机端口

若是想让系统在启动时自动挂载 NFS 服务器上的输出目录,就编辑 /etc/fstab 加入如下格式
NFS
服务器名或 IP 地址:输出目录 外地挂载目录 nf default 0 0
实现 nfs 服务 只需要编译 /etc/export , 该文件默认为空的每一行表示你共享的一个文件系统
添加格式:
共享文件目录 允许访问的主机(访问权限)
注:被导出的目录为独立的文件系统,若不是则在权限中定义 subtrww_check 使更安全,如果共享文件中有空格用括起来,
定义允许访问的主机可以是 IP 网段, IP NIS 域( @NIS 域名)并且可以通配)
下面介绍几种常用的访问权限
ro
可读
rw
可读可写
async
异步写入


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 1

    好友
  • 2

    获赞
  • 14

    评论
  • 3241

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 09:05 , Processed in 0.014203 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部