网络文件系统NFS.docx

上传人:b****5 文档编号:4532417 上传时间:2022-12-01 格式:DOCX 页数:8 大小:49.35KB
下载 相关 举报
网络文件系统NFS.docx_第1页
第1页 / 共8页
网络文件系统NFS.docx_第2页
第2页 / 共8页
网络文件系统NFS.docx_第3页
第3页 / 共8页
网络文件系统NFS.docx_第4页
第4页 / 共8页
网络文件系统NFS.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

网络文件系统NFS.docx

《网络文件系统NFS.docx》由会员分享,可在线阅读,更多相关《网络文件系统NFS.docx(8页珍藏版)》请在冰豆网上搜索。

网络文件系统NFS.docx

网络文件系统NFS

网络文件系统(NFS)

 网络文件系统(NFS) 收藏

网络文件系统(NFS)

一、NFS简介

1、NFS就是NetworkFileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目录,访问该目录就像访问本地目录一样,所以也可以简单的将它看作一个文件服务器(FileServer)。

注意:

一般而言,使用NFS服务能够方便地使各unix-like系统之间实现共享,但如果需要在unix-like和windows系统之间共享,那就得使用samba了。

2、NFS是通过网络进行数据传输,那么NFS使用哪些端口呢,答案是……不知道,因为NFS传输数据时使用的端口是随机的,唯一的限制就是小于1024,客户端怎么知道服务器使用的是哪个端口,此时就要用到远程过程调用RPC。

其实,NFS运行在SUN的RPC(RemoteProcedureCall,远程过程调用)基础上,RPC定义了一种与系统无关的方法来实现进程间通信,由此,NFSServer也可以看作是RPCServer。

正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定。

比如:

某个NFSClient发起NFS服务请求时,它需要先得到一个端口(port),所以它先通过portmap得到portnumber(不仅是NFS,所有的RPC服务程序启动之前,都需要先设定好portmap)。

注意:

在启动RPC服务(比如NFS)之前,需要先启动portmap服务。

3、NFS允许系统将其目录和文件共享给网络上的其他系统。

通过NFS,用户和应用程序可以访问远程系统上的文件,就像它们是本地文件一样。

那么NFS最值得注意的优点有:

(1)本地工作站可以使用更少的磁盘空间,因为常用数据可以被保存在一台机器上,并让网络上的其他机器可以访问它。

(2)不需要为用户在每台网络机器上放一个用户目录,因为用户目录可以在NFS服务器上设置并使其在整个网络上可用。

(3)存储设备如软盘、光驱及USB设备可以被网络上其它机器使用,这可能可以减少网络上移动设备的数量。

二、与NFS相关的几个文件和命令

1、/etc/exports

对NFS服务的访问是由exports来批准,它枚举了若干有权访问NFS服务器上文件系统的主机名。

在主机上安装NFS服务软件,因为Debian/Ubuntu上默认是没有安装的。

1、安装端口映射器portmap(可选)

$sudoapt-getinstallportmap

2、在终端提示符后键入以下命令安装NFS服务器

$sudoapt-getinstallnfs-kernel-server

3、安装NFS客户端(可选)

$sudoapt-getinstallnfs-common

注意:

nfs-kernel-server和nfs-common都依赖于portmap。

另外,在一些文档中提出还需要使用apt-get来手动安装NFS的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时,apt会自动把它们安装好。

这样,宿主机就相当于NFSServer。

同样地,目标系统作为NFS的客户端,需要安装NFS客户端程序。

如果是Debian/Ubuntu系统,则需要安装nfs-common(第3步)。

四、NFS配置

1、配置portmap

方法1:

编辑/etc/default/portmap,将"-i127.0.0.1"去掉;

方法2:

$sudodpkg-reconfigureportmap,出现“正在设定portmap”软件包设置界面,对Shouldportmapbeboundtotheloopbackaddress?

选择“否(No)”。

2、配置/etc/hosts.deny

禁止任何host(主机)能和你的NFS服务器进行NFS连接。

在该文件中加入:

###NFSDAEMONS

portmap:

ALL

lockd:

ALL

mountd:

ALL

rquotad:

ALL

statd:

ALL

3、配置/etc/hosts.allow

允许那些你想要的主机和你的NFS服务器建立连接。

下列步骤将允许任何IP地址以192.168.1开头的主机连接到NFS服务器上,具体要看你目标板的端口地址,也可以指定特定的IP地址。

在该文件中加入:

###NFSDAEMONS

portmap:

192.168.1.

lockd:

192.168.1.

rquotad:

192.168.1.

mountd:

192.168.1.

statd:

192.168.1.

通过/etc/hosts.deny和/etc/hosts.allow设置对portmap的访问,采用这两个配置文件有点类似"mask"的意思。

先在/etc/hosts.deny中禁止所有用户对portmap的访问,再在/etc/hosts.allow中允许某些用户对portmap的访问。

然后重启portmapdaemon:

$sudo/etc/init.d/portmaprestart

4、配置/etc/exports

(1)共享的NFS目录在/etc/exports中列出,这个文件控制对目录的共享(NFS挂载目录及权限由该文件定义),书写规则是每个共享为一行)。

格式:

[共享目录][主机名或IP](参数,参数...)

第一个参数是要让客户机访问的目录,第二个是你允许的主机IP,最后的()内是访问控制方式。

注意:

客户端可以使用主机名或者IP地址指定,在主机名中可以使用通配符(*),IP地址后也可以跟掩码段(/24),但出于安全原因这种情况应该尽量避免。

客户端的说明后可在圆括号中加入一系列参数。

很重要的一点,不要在最后一个客户端声明的后面留下任何空白或者没关闭括号,因为空白都被解释成客户端的分隔符。

例如我要将/opt/FriendlyARM/mini2440/root_nfs目录让用户的IP共享,则在该文件末尾添加下列语句:

/opt/FriendlyARM/mini2440/root_nfs*(rw,sync,no_root_squash)

其中:

/opt/FriendlyARM/mini2440/root_nfs表示NFS共享目录,它可以作为开发板的根文件系统通过NFS挂接;

*表示所有的客户机都可以挂接此目录;

rw表示挂接此目录的客户机对该目录有读写的权力;

sync表示所有数据在请求时写入共享,即数据同步写入内存和硬盘;

no_root_squash表示允许挂接此目录的客户机享有该主机的root身份。

注意:

可以用主机名来代替*,尽量指定主机名以便使那些不想其访问的系统不能访问NFS挂载的资源。

另外,最好加上sync,否则$sudoexportfs-r时会给出警告,sync是NFS的默认选项。

(2)下面是一些NFS共享的常用参数:

ro只读访问

rw读写访问

sync所有数据在请求时写入共享

asyncNFS在写入数据前可以相应请求

secureNFS通过1024以下的安全TCP/IP端口发送

insecureNFS通过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_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squashroot用户具有根目录的完全管理访问权限

anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx指定NFS服务器/etc/passwd文件中匿名用户的GID

(3)查看NFSServer的exportlist:

$sudoshowmount-e

若更改了/etc/exports,运行以下命令进行更新:

$sudoexportfs-r

然后重启NFS服务:

$sudo/etc/init.d/nfs-kernel-serverrestart

五、启动和停止NFS服务

1、启动NFS的方法和启动其他服务器的方法类似,首先需要启动portmap和NFS这两个服务,并且portmap服务一定要先于NFS服务启动。

$sudo/etc/init.d/portmapstart

$sudo/etc/init.d/nfs-kernel-serverstart

2、停止NFS服务

在停止NFS服务的时候,需要先停止NFS服务再停止portmap服务,如果系统中还有其他服务需要使用portmap服务,则可以不停止portmap服务。

$sudo/etc/init.d/nfs-kernel-serverstop

$sudo/etc/init.d/portmapstop

3、重新启动portmap和NFS服务

$sudo/etc/init.d/portmaprestart

$sudo/etc/init.d/nfs-kernel-serverrestart

4、检查portmap和NFS服务状态

$sudo/etc/init.d/portmapstatus(不知原文是否有误,我的ubuntu上portmap貌似没status这个命令参数)

$sudo/etc/init.d/nfs-kernel-serverstatus

5、设置自动启动NFS服务

(1)检查NFS的运行级别:

$sudochkconfig--listportmap     (我的电脑也没chconfig这个工具,不过没多大关系,如果有问题再回头)

$sudochkconfig--listnfs-kernel-server

(2)在实际使用中,如果每次开启计算机之后都手工启动NFS服务是非常麻烦的,此时可以设置系统在指定的运行级别自动启动portmap和NFS服务。

$sudochkconfig--level235portmapon  (由于没有chkconfig工具,所以我就用services-admin(也就是图形界面的“系统─>“服务”)来代替,至于level就不管了,用默认设置)

$sudochkconfig--level235nfs-kernel-serveron

六、NFS客户端配置(NFS测试)

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

通常都是在内部局域网中进行开发,再安装系统时最好不要安装防火墙等网络安全软件,以方便使用时的配置。

如果你有防火墙,请确保32771、111和2049端口保持开放。

2、手动挂载

使用mount命令来挂载其他机器共享的NFS目录。

格式:

$sudomount[ServerIP]:

/[sharedir][localmountpoint]

例如:

$sudomount-tnfs[-onolock]localhost:

/opt/FriendlyARM/mini2440/root_nfs/mnt/root_nfs或

$sudomount-tnfs-onolock192.168.1.101:

/opt/FriendlyARM/mini2440/root_nfs/mnt/root_nfs

其中,localhost可以是具体的IP地址,同时挂载点/mnt/root_nfs目录必须已经存在,而且在/mnt/root_nfs目录中没有文件或子目录。

3、自动挂载

(1)另一个挂载其他机器的NFS共享的方式就是在/etc/fstab文件中添加一行,该行必须指明NFS服务器的主机名、服务器输出的目录名以及挂载NFS共享的本机目录,同时必须是根用户才能修改/etc/fstab文件(目标板上可能没有fstab,需要自己创建一个)。

格式(参考PC上的fstab):

host_ip:

/nfs_path/target_pathnfsrsize=8192,wsize=8192,timeo=14,intr,nolock 0  0

注意:

可以根据实际情况修改NFS服务器共享文件夹":

/usr/local/pub"和在本机的挂载点"/pub",同时挂载点/pub在客户端机器上必须存在。

(2)NFS常见挂载参数:

intr 允许通知中断一个NFS调用。

当服务器没有应答需要放弃的时候有用处。

timeo如果超时,客户端等待的时间,以十分之一秒计算

retrans超时尝试的次数

bg后台挂载(很有用)

hard如果server端没有响应,那么客户端一直尝试挂载

rsize读块大小

wsize写块大小

4、使用autofs来挂载NFS

(1)挂载NFS共享的第三种方法是使用autofs,它使用automount守护进程来管理挂载点,只在文件系统被访问时才动态地挂载。

autofs访问主映射配置文件/etc/auto.master来决定要定义哪些挂载点,然后使用适用于各个挂载点的参数来启动automount守护进程。

主映射配置中的每一行都定义一个挂载点,一个分开的映射文件定义在该挂载点下要挂载的文件系统。

如/etc/auto.misc文件可能会定义/misc目录中的挂载点,这种关系在/etc/auto.master文件中会被定义。

(2)/etc/auto.master文件中的每个项目都有3个字段,第1个字段是挂载点;第2个字段是映射文件的位置;第3个字段可选,可以包括超时数值之类的信息。

例如:

要在机器上的/misc/myproject挂载点上挂载远程机中的/project52目录。

在/etc/auto.master文件中添加以下行:

/misc/etc/auto.misc--timeout60

在/etc/auto.misc文件中添加以下行:

myproject-rw,soft,intr,rsize=8192,wsize=8192:

/proj52

/etc/auto.misc中的第1个字段是/misc子目录的名称,该目录被automount动态地创建,它不应该在客户端机器上实际存在;第2个字段包括挂载选项,如rw代表读写访问权,第3个字段是要导出的NFS的位置,包括主机名和目录。

(3)autofs是一种服务,要启动这项服务,在shell提示下键入以下命令:

$sudo/sbin/serviceautofsrestart

要查看活跃的挂载点,在shell提示下键入以下命令:

$sudo/sbin/serviceautofsstatus

如果在autofs运行时修改了/etc/auto.master配置文件,则必须在shell提示下键入以下命令来通知automount守护进程重新载入配置文件:

$sudo/sbin/serviceautofsreload

5、可以运行df命令查看是否挂载成功:

$sudodf

取消挂载的命令如下:

$sudoumount/mnt/root_nfs

七、目标板NFS配置操作

主机IP:

192.168.1.101

目标板IP:

192.168.1.230

将USB转串口连接上,在终端输入minicom与板子连起,作为“超级终端”使用。

启动目标板并连通网络后,首先查看目标板kernel自身是否支持NFS,在minicom中输入cat/proc/filesystems命令查看其中是否有NFS一行,若没有则表示内核不支持NFS,就需要重新编译和烧写内核;有则OK,接下来就可以直接进行mount操作了。

具体命令是:

#mount-tnfs -onolock192.168.1.101:

/opt/FriendlyARM/mini2440/root_nfs/mnt/root_nfs

无任何提示表示成功,这时可以进入/mnt/root_nfs目录,对文件进行cp、mv等操作。

但是如果使用命令mount-tnfs192.168.1.101:

/opt/FriendlyARM/mini2440/root_nfs/mnt/root_nfs,则会有如下的错误提示(也就是省去了"-onolock"):

# mount-tnfs192.168.1.101:

/opt/FriendlyARM/mini2440/root_nfs/mnt/root_nfs

portmap:

serverlocalhostnotresponding,timedout

RPC:

failedtocontactportmap(errno-5).

portmap:

serverlocalhostnotresponding,timedout

RPC:

failedtocontactportmap(errno-5).

lockd_up:

makesockfailed,error=-5

portmap:

serverlocalhostnotresponding,timedout

RPC:

failedtocontactportmap(errno-5).

这时如果使用ls/mnt/root_nfs命令查看该目录内容时,你会发现此时NFS确确实实已经挂载成功了。

然后取消挂载的时候会出现如下的错误提示:

#umount/mnt/root_nfs/

lockd_down:

nolockdrunning.

而成功取消挂载时没有任何提示,同样此时NFS也确实已经取消挂载了。

那么出现上面错误提示的可能原因是:

nfsmount默认选项包括文件锁,依赖于portmap提供的动态端口分配功能。

简单的解决方法:

kill文件锁(lockd)或者使用mount-onolock命令。

上面说的文件锁具体是什么原因,目前还没有找到更好的解决办法。

不过,如果主机防火墙有设置时,也可能导致目标板无法正常访问。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1