`
oceandeep
  • 浏览: 23800 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论
阅读更多

自己的实验NFS的例子

server 172.17.1.239 将 239下的 /home 目录共享

client 172.17.1.240 将 239下的 /home 挂载到本地的 /mut下

 

 

 

 

 

 

网络文件系统(NFS,Network 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_squash:NFS 服务器共享目录用户的属性,如果用户是 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 服务器iptables,ipchains 等选项的设置,以及/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重新编译内核下载bootloader和kernel到开发板上

在嵌入式目标系统的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 network file system 的简称,最早由 sun 公司开发,一般 NFS 广泛应用在集群服务器上,他的最大特点是可以通过网络让不同的机器,不同的操作系统可以彼此的共享文件,所以它可以看作一个简单的文件服务器。 NFS 其实可以被视为一个 RPC 服务程序,在启动 RPC 程序前我们先要做好端口的映射工作这就是 portmap,portmap 的意思是当 Client 要连接服务器时必须知道服务器的一个空闲端口这时 Client 会向服务器的 portmap 请求一个端口然,然后 Server 告诉 Client 这端口后才可以建立连接,所以在启动 NFS 前要先启动 portmap


[wds@localhost ~]# rpm –qa |grep nfs && rpm –qa | grep portmap # 查找这两个是否安装

[wds@localhost ~]# vi /etc/exports # 这文件是 NFS 的主要配置文件

[wds@localhost ~]# /usr/sbin/exportfs # 这个文件是 nfs 共享资源命令

[wds@localhost ~]# /usr/sbin/showmount # 可以查看远程服务器的共享目录

[wds@localhost ~]# /var/lib/nfs/xtab #nfs 的日志文件


[wds@localhost ~]# vi /etc/exports

[ 你想要的共享的目录 ] + ip 地址 ( 参数一,参数二 ) [ 主机名二 ] (参数三,参数四)

参数列表

rw: 可以写入权限

ro: 只读权限

no_root_squash: 登陆 NFS 主机共享目录的如果是 root 用户那么那的权限也为 root 但是这样并不安全

root_squash: 登陆的用户如果为 root 它的权限将变成 nobody

all_squash: 不论登陆的用户是什么用户都以匿名用户的权限

sync: 数据同步写入硬盘和内存中

async: 数据先暂时存放在内存中,而不写入硬盘

anounid: 这个可以自己设定 uid, 但是必须与 /etc/passwd 目录中用户 uid 一样

anongid: anonuid, 但是变的是 group id

服务器端配置

[wds@localhost ~]# service portmap start # 首先打开 portmap

[wds@localhost ~]# service nfs start # 在打开 nfs

[wds@localhost ~]#i iptables –F # 清空防火墙命令

[wds@localhost ~]#

比如说我要共享 /var/www/html 目录 但是只是让和我一个网段的机器访问 192.168.0.0/24 这个网段读或写,其他的就只能读,然后在发布一个私人目录 /home/wds/ 只开放给 192.168.0.8

这个 IP

[wds@localhost ~]# vi /etc/exports

/var/www/html 192.168.0.0/24 (rw) *(ro)

/home/wds 192.168.0.8(rw)

现在想要 *.chinaunix.com 网段的机器登陆我的 NFS ,并且访问我的 /home/wds/ 但是它们存储时我希望它们的 uid gid 都变成 40 这个用户身份

[wds@localhost ~]# vi /etc/exports

/var/www/html 192.168.0.0/24 (rw) *(ro)

/home/wds 192.168.0.8(rw)

/home/wds *.chinaunix.com(rw,all)squash,anounid=40,anongid=40)


如果我们修改 /etc/exports 这个文件后,是否要从新启动 nfs 呢?答案是不不需要,只要使用 exportfs 来从新扫描一次 /etc/exports 文件 , 并且从新设置文件加载即可

语法为:

[wds@localhost ~]# exportfs [-aruv]

参数说明:

-a: 全部挂载(或者卸载) /etc/exports 文件的设置

-r: 从新挂载 /etc/exports 里设置,此外,同步更新 /etc/exports /var/lib/nfs/xtab 的内容

-u: 卸载某一目录

-v: 在导出时,将共享目录显示在屏幕上

例如 :

[wds@localhost ~]# exportfs –rv 全部从新导出一次

[wds@localhost ~]# exportfs –au 全部卸载掉

Showmount 的是显示是否有挂载

语法为:

[wds@localhost ~]# showmount [-ae] hostname

参数说明:

-a: 在屏幕上显示与当前的 client 连接后使用目录的状态

-e: 显示 Hostname 这台机器的 /etc/exports 中的共享信息

[wds@localhost log]# showmount -e localhost

Export list for localhost:

/var/www/html (everyone)

Rpcinfo [-p]hostname[or ip]

-p 显示端口与程序的信息

[wds@localhost log]# rpcinfo -p localhost

program vers proto port

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100024 1 udp 1024 status

100024 1 tcp 1024 status

100011 1 udp 837 rquotad

100011 2 udp 837 rquotad

100011 1 tcp 840 rquotad

100011 2 tcp 840 rquotad

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100003 4 udp 2049 nfs

100003 2 tcp 2049 nfs

100003 3 tcp 2049 nfs

100003 4 tcp 2049 nfs

100021 1 udp 1026 nlockmgr

100021 3 udp 1026 nlockmgr

100021 4 udp 1026 nlockmgr

100021 1 tcp 1026 nlockmgr

100021 3 tcp 1026 nlockmgr

100021 4 tcp 1026 nlockmgr

100005 1 udp 858 mountd

100005 1 tcp 861 mountd

100005 2 udp 858 mountd

100005 2 tcp 861 mountd

100005 3 udp 858 mountd

100005 3 tcp 861 mountd

Client 端的设置

Server 端设置完毕 , 接下来就是让 client 端连接上 server! 连接 server 步骤如下 :

1. 扫描可以使用的 server 目录 :

2. client 端建立装载点

3. 使用 mount 命令远程挂载远程共享目录

4. 解决可能发生的问题(被防火墙过滤掉了)

Showmount 是显示远程主机共享资源

[wds@localhost ~]# showmount -e 192.168.0.8

Export list for 192.168.0.8:

/var/www/html (everyone)

/home/wds *.chinaunix.com,192.168.0.6

[wds@localhost ~]# mount -t nfs 192.168.0.8:/var/www/html /mnt 把远程的 /var/www/html 挂载到本地

[wds@localhost ~]# umount /mnt 卸载远程目录

如果你想要开机启动时自动加载 NFS 服务器导出目录,我们在 NFS /etc/fstab 文件中加入以下一行

192.168.0.8:/var/www/html /mnt nfs rsize=8192,wsize=8192,timeo=14,intr


======================================================
======================================================

 

【IT168 服务器学院】 在192.168.16.125上修改 /etc/exports
  #
  / 192.168.16.107(rw,no_root_squash)
  
  注释:
  
  /: 接入点
  192.168.16.107: 允许的客户端
  rw: 允许读写
  no_root_squash: root不映射到匿名账户
  
  启动
  /etc/init.d/portmap start
  /etc/init.d/nfs start
  
  在192.168.16.107上执行:
  
  mount -o rw -t nfs 192.168.16.125:/ /mnt/nfs
  
  OK
  
  测试中忘记重新启动portmap 导致修改 exports加上读写选项部工作。
  
  
  环境:
  192.168.16.125
  Red Hat Linux release 9 (Shrike)
  
  192.168.16.107
  Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
分享到:
评论

相关推荐

    NFS服务端源码.zip

    在本压缩包中,我们主要关注NFS服务端的源码,特别是`nfs-server-2.2beta47-ubuntuok.tar.bz2`和`nfs-server-2.2beta47.tar.gz`这两个文件,它们包含了NFS服务器的实现代码。通过分析这些源码,我们可以深入了解NFS...

    nfs安装部署文档

    NFS(网络文件系统)是一种分布式文件系统协议,允许网络中的计算机之间共享文件和目录。在Linux环境中,NFS服务的安装和部署涉及服务端和客户端的配置。以下是一个详细的NFS安装部署过程: 一、NFS服务端配置 1. ...

    NTFS互换FAT32

    标题“NTFS互换FAT32”涉及的是在Windows操作系统中将NTFS文件系统转换为FAT32文件系统的技巧。这个过程通常被称为“无损转换”,意味着在转换过程中不会丢失数据,用户无需手动备份文件。这适用于那些因为特定设备...

    实现window同linux的nfs共享目录服务

    - 右键点击要共享的NTFS目录,选择“属性”,转至“NFS Sharing”选项卡。 - 启用NFS共享,指定共享名,选择字符编码为GB2312-80。 - 允许匿名访问并设置读写权限,必要时启用root访问。 **步骤2:禁用简单文件共享...

    NFS完全配置手册(全)

    ### NFS完全配置手册知识点概述 #### 一、NFS(网络文件系统)概念与功能 NFS,即网络文件系统,是一种分布式文件系统协议,它允许一个系统在网络上共享目录和文件。通过使用NFS,用户和应用程序可以在网络上透明...

    Window环境nfs安装配置指南

    在Windows环境中搭建NFS(Network File System)服务可以让Windows服务器与使用NFS协议的设备,如Linux或Unix系统,进行文件共享。以下是一份详细的Windows NFS安装和配置指南: **一、安装环境要求** 在开始NFS...

    VMware下Fedora9与tiny210的NFS配置

    在IT领域,网络文件系统(Network File System,简称NFS)是一种允许不同计算机之间共享文件和目录的技术。在本配置中,我们将详细讨论如何在VMware下的Fedora9虚拟机中设置NFS服务器,以便与tiny210开发板进行通信...

    Linux NFS服务器的安装与配置

    ### Linux NFS服务器的安装与配置 #### 一、NFS服务简介 NFS(Network File System,网络文件系统)是一种允许不同操作系统之间的机器共享文件的协议。它最初由Sun Microsystems开发,并于1984年公开发布。NFS的...

    NFS服务器客户端配置

    NFS (Network File System) 是一个允许网络中的计算机之间共享文件和目录的协议。NFS 服务器客户端配置涉及两个主要部分:服务器端配置和客户端配置。以下是对这两个部分的详细说明: **NFS 服务器端配置** 1. **...

    NFS-TexEd-0.9.1

    《NFS-TexEd-0.9.1:纹理编辑器在极品飞车9中的应用与探索》 在游戏世界中,尤其是赛车类游戏,视觉效果对于玩家的沉浸感至关重要。"NFS-TexEd-0.9.1"是一款专为极品飞车9(Need for Speed: Most Wanted)设计的...

    Linux-AIX上NFS共享2

    【Linux-AIX上NFS共享2】:在IT领域,NFS(Network File System)是一种分布式文件系统协议,允许网络中的计算机共享文件和目录。在Linux和AIX操作系统上配置NFS共享,可以让多台机器间透明地访问彼此的文件资源,这...

    Ubuntu下nfs服务器的搭建.

    Ubuntu下搭建NFS服务器是一个涉及到网络文件系统配置与管理的过程,目的是使得不同的计算机可以共享文件。NFS服务器的主要作用是允许网络中的多台计算机访问同一目录下的文件和数据,这样做的好处包括简化数据管理、...

    linux下搭建DNS、NFS服务器

    在Linux环境中,搭建DNS(Domain Name System)和NFS(Network File System)服务器是系统管理员必备的技能之一。这两个服务对于任何大型网络环境都至关重要,DNS负责将域名转换为IP地址,而NFS则允许不同计算机之间...

    HaneWin NFS服务器1.169中文版.rar

    HaneWin NFS Server能够快速帮助你搭建NFS服务器,即网络文件共享存储服务,允许挂载远程设备,自动转换windows驱动器卷标为小写字母。NFS主要用于文件的共享,用于不同的系统间,其通讯的协议与主机系统无关,...

    高性能RPC框架 nfs-rpc.7z

    NFS(Network File System)最初是UNIX系统间用于文件共享的协议,而这里的“nfs-rpc”可能是指将NFS协议与RPC概念相结合的一种实现,旨在提供高效的网络服务。 RPC框架的核心目标是简化分布式系统中的通信,通过...

    sep4020 linux讲座

    同时,通过配置NFS网络文件系统,使得开发板能够访问主机的资源,并将NFS转换为Cramfs文件系统,便于在嵌入式设备上运行。这一环节还包括定制和编译Linux内核,以适应SEP4020开发板的需求。 在第三部分,培训内容将...

    nfs6 音乐修改包含音乐播放工具和音乐修改工具

    《NFS6音乐修改:深度解析音乐播放与编辑工具》 在电子游戏领域,音乐不仅是营造氛围的关键元素,更是提升玩家沉浸感的重要手段。在《极品飞车6:热力追踪2》(Need for Speed: Hot Pursuit 2,简称NFS6)这款经典...

    Linux NFS配置.pdf

    NFS 安装需要 5 个 RPM,分别是:setup-*:共享 NFS 目录在/etc/exports 中定义initscripts-*:包括引导过程中装载网络目录的基本脚本nfs-utils-*:包括基本的 NFS 命令与监控程序portmap-*:支持安全 NFSRPC 服务的连接...

Global site tag (gtag.js) - Google Analytics