下载
第29章使用网络文件系统(NFS)
作者:Neal S. Jamison
本章内容包括:
• 什么是N F S
• 实现—N F S工作过程
• NFS使用的文件及命令
• 示例:共享及登录N F S文件系统
• 与N F S常见问题及解决方案
• 相关协议及产品
T C P / I P提供相应的协议及服务,允许多个计算机共享数据。这一特性被广泛用于互联网
应用中,在众多此类应用中,最常见的T C P / I P应用是网络文件系统,简称N F S。
29.1 什么是NFS
N F S是分布式文件系统,它允许计算机通过T C P / I P网络共享资源。在N F S中,N F S客户端
应用可透明地读/写位于N F S服务器上的文件。在N F S出现之前,计算机间共享数据的惟一途
径是复制数据或集中使用数据。这种方式存在明显的缺陷—复制数据浪费存储空间而且存
在实时一致性问题,集中使用数据意味着大型机及多个终端,而且只存在于单一网络中。
随着N F S的诞生,用户可以共享数据且与平台无关,所有上述问题迎刃而解。
注意在本书中,文件系统指以目录结构有组织存放的一组文件的集合。例如,Unix系
统中的/usr就是一个文件系统。
N F S服务器共享资源,使它们可被网上的客户使用。如下所述, N F S既可以使用于L A N,
也可以使用于WA N,并且N F S与操作系统及硬件无关,它允许各种计算机共享资源。N F S实
际上由两个协议组成: M o u n t和N F S。
29.1.1 NFS的历史
N F S由S u n (升阳)公司于1 9 8 4年提出。它首先实现于其4 . 2 B S D上(通常称之为S u n O S )。由
于它受到广泛的关注并且应用需求很广,因此N F S迅速在其他各种平台上实现。至1 9 8 6年止,
N F S可在1 6种不同的硬件平台上的五种操作系统间共享资源。目前, N F S可应用于多种硬件平
台及操作系统平台,并且增加了基于We b的功能。
29.1.2 为何使用NFS
N F S的目标是使计算机共享资源。在它的发展过程中(即8 0年代),计算机工业飞速发展。
廉价C P U及客户/服务器技术促进了分布式计算环境的发展。然而,当处理器价格下降时,大
容量的存储系统相对而言价格仍高居不下。因此,必须采用某种机制在充分发挥单个处理器
性能的同时使计算机可共享存储资源和数据, N F S应运而生。
29.2 实现—NFS工作过程
N F S使用T C P / I P提供的协议和服务,它运行于O S I模型的应用层,如表2 9 - 1所示。
表29-1 OSI层次模型上的N F S
层数名称功能
1 应用层N F S
2 表示层X D R
3 会话层R P C
4 传输层U D P, TCP
5 网络层I P
6 数据链路层
7 物理层E t h e r n e t
出于性能上的原因, N F S起初采用性能较好的U D P,而并未采用可靠性较高的T C P。虽然
U D P在可靠性较好的局域网中工作良好,但在可靠性较差的广域网如I n t e r n e t上运行时, U D P
则不能胜任。当前,随着T C P的改进,运行于T C P上的N F S不但可靠性高而且性能良好。从
Solaris 2.6开始,S u n公司使用基于T C P的N F S。
注意要了解关于TCP和UDP的详细信息,参见第9章。
29.2.1 远程过程调用(RPC)和外部数据表示(XDR)
为了实现平台无关性, N F S基于O S I底层实现。基于会话层的远程过程调用( R e m o t e
Procedure Call,R P C )和基于表示层的外部数据表示(External Data Representation,X D R )为
N F S提供所需的网络连接及解释基于这些连接发送的数据格式。简单的说,它们使N F S可正常
工作于不同平台。本章针对此作详细讲解。
1. 理解R P C
R P C运行于O S I模型的会话层,它提供一组过程,使远程计算机系统可像调用本地过程一
样调用这些过程。使用R P C,本地计算机或应用程序可调用位于远程计算机上的服务。R P C
提供一组过程库,高层应用可以调用这些库而无需了解远程系统的底层细节。因为R P C的抽
象使得N F S与平台无关。
2. 理解X D R
外部数据表示库负责在不同的计算机系统间转换R P C数据, X D R设计了一种标准的数据
表示,使得所有计算机均可理解。
总而言之, R P C和X D R是N F S实现客户/服务器关系的基石。
29.2.2 加载类型
如前章所述, N F S的无状态特性允许客户端和客户应用程序从服务器不可用中恢复。加
载的类型决定当服务器崩溃时客户及客户应用的响应方式。加载类型将在本章2 9 . 5节中讨论。
1. 硬加载
当N F S服务器或资源不可用时,硬加载资源将导致不断尝试R F C调用。一旦服务器响应,
324使用第七部分使用T C P / I P应用
下载
R P C调用成功且进入下一个执行过程。如果服务器或网络问题持续,硬加载将引起持续等待
状态,使N F S客户端应用挂起。用户可以指定属性使硬加载可中断。
2. 软加载
使用软加载资源时, R P C调用失败将导致N F S客户应用同时失败,最终使数据不可用。此
种方法不可用于可写的文件系统或读取关键数据及可执行程序。
注意下一节与U N I X的帮助文档类似。要获取更详细的信息,参见相关文件及程序的
帮助文档。
29.3 NFS使用的文件及命令
本节主要讲述N F S使用的守护进程、程序和文件。因为N F S与U N I X系统紧密相连,本节
将以两个常见的U N I X操作系统(San Solaris 2.0和L i n u x )为例介绍共享和使用N F S资源。至于
基于其他系统的实现方法,包括基于P C的客户端将在本章2 9 . 6节中讨论。
守护进程工作过程
在U N I X中,守护进程是在后台运行的程序,它等待某些事件的发生。在英文中,守护进
程又称为精灵,即介于人与神之间的一种存在。在U N I X中,它位于两个进程之间。例如,打
印守护进程等待打印作业进入打印队列。在本章中, N F S守护进程等待客户请求文件系统。
29.3.1 NFS守护进程
N F S正常工作需要多个服务器守护进程协同工作。下面将以S o l a r i s和L i n u x操作系统分别
介绍N F S守护进程。
1. Solaris 2.x
下列S o l a r i s守护进程分别用于监听、处理及维护N F S请求。S o l a r i s服务器守护进程由脚本
/ e t c / i n i t . d / n f s . s e r v e r启动。
(1) nsfd
n s f d服务器守护进程用于监听N F S客户请求。
用法: /usr/lib/nfs/nfsd [-a] [-c #_conn] [-l listen_backlog] [-p protocol] [-t device]
[ n s e r v e r s ]
属性:
- a—运行N F S守护进程,可处理所有可用的面向连接和无连接请求,包括U D P和T C P。
-c # _conn—设置N F S服务器可处理的面向连接请求的最大连接数。缺省设置为无穷大。
- p—设置基于面向连接传输的NFS TCP连接队列的长度。缺省值为3 2。
-p protocol—启动基于指定协议的N F S守护进程。
-t device—在指定设备上启动N F S守护进程。
N s e r v e r s—指定可同时处理的最大请求数。
相关文件: / e t c / i n i t . d / n f s . s e r v e r;s h e l l脚本也可启动n f s d。
(2) mountd
m o u n t d响应N F S访问请求及文件系统加载请求。它通过读取/ e t c / d f s / s h a r e t a b确定文件系统
的可用性。m o u n t d为服务器守护进程。
第2 9章使用网络文件系统( N F S )使用325
下载
用法:/usr/lib/nfs/mountd [-v] [-r]
属性:
- v—冗余模式,在控制台显示信息。
- r—拒绝客户请求。
相关文件: / e t c / d f s / s h a r e t a b (参见2 9 . 3 . 2节)。
(3) statd
s t a t d为客户方守护进程,它与l o c k d协同工作,提供文件加锁服务的崩溃与恢复。
用法:/ u s r / l i b / n f s / s t a t d
相关文件: l o c k d。
(4) lockd
l o c k d是客户方守护进程,它是N F S锁管理器的一部分,用于对N F S文件加锁。
用法:/usr/lib/nfs/lockd [-g graceperiod] [-t timeout] [nthreads]
属性:
-g graceperiod—服务器重启后,客户端回收锁的时间间隔,单位为秒(缺省值为4 5 )。
-t timeout—客户重新请求锁的时间间隔,单位为秒(缺省值为1 5 )。
n t h r e a d s—响应锁请求的线程数(缺省值为2 0 )。
相关文件: s t a t d。
2. Linux
下列L i n u x守护进程分别用于监听、处理和维护N F S请求。它们的作用及语法与S o l a r i s中
的守护进程类似。
(1) rpc.nfsd
r p c . n f s d守护进程用于处理N F S请求,它是服务器守护进程。
用法:
属性:
-f exports-file—指定输出文件,缺省输出文件为/ e t c / e x p o r t s。
- h或- h e l p—提供帮助信息。
- l或- - l o g - t r a n s f e r s—记录所有文件的传输信息。
- n或- - a l l o w - n o n . r o o t—允许守护进程接收进入的N F S请求,即使这些请求不是由允许的
I P产生。
-P portnum 或--port portnum—让n f s d监听指定的端口,替代缺省端口2 0 4 9或文件
/ e t c / s e r v i c e s中指定的端口。
- p或- p r o m i s c u o u s—使服务器可被网络中任何主机使用。
- v或- v e r s i o n—显示程序的当前版本。
n u m s e r v e r s—允许用户同时运行多个n s f d实例。
326使用第七部分使用T C P / I P应用
下载
相关文件: exports, mountd
(2) rpc.mountd
r p c . m o u n t d接收加载请求并检测/ e t c / e x p o r t s文件中N F S文件系统的可用性。如果请求资源
可以使用, r p c . m o u n t d创建文件处理进程并在/ e t c / r m t a b中添加相应项。接收u m o u n t请求后,
从/ e t c / r m t a b文件中删除相应的项。
用法:
属性:
查询上一个命令,r p c . n f s d,可知r c p . m o u n t d命令属性的含义。
相关文件: /etc/exports, /etc/rmtab
(3) rpc.statd
参见s o l a r i s中的s t a t d。
(4) rpc.lockd
参见s o l a r i s中的l o c k d。
(5) biod
b i o d在N F S客户端启动指定数目的异步块I / O守护进程。这些进程用于在N F S文件系统上
执行提前读和推后写操作,以提高N F S的性能。
用法:/usr/etc/biod [numdaemons]
29.3.2 与NFS相关的文件
在共享或加载N F S文件系统前,必须首先修改服务器和客户方文件。
1. solaris 2.x文件
S o l a r i s中的下列文件定义和跟踪N F S资源。
(1) /etc/dfs/dfstab
d f s t a b文件中包含一组控制N F S文件系统输出的共享命令。关于s h a r e命令的详细信息将在
本章2 9 . 3 . 3节中讲述。
示例:
(2) /etc/dfs/sharetab
s h a r e t a b文件中包含与通过s h a r e命令共享的文件系统对应的项。这些项由系统自动生成。
s h a r e t a b文件中的每一项包含以下几部分:
• pathname—共享资源的路径。
• resource—远程系统访问资源的名称。
• fstype—共享资源的类型。
• specific_options—共享资源时指定可以使用的属性。
• description—共享资源的描述信息,当资源被共享时提供给客户。
示例:
第2 9章使用网络文件系统( N F S )使用327
下载
/export/home2-nfs rw=engineering "Engineering Home"
(3) /etc/rmtab
r m t a b文件中包含了当前被用户加载的N F S文件系统列表。它也是由系统自动生成,其每
一行的格式如下:
hostname: fsname
示例:
engineering5: /export/home2
(4) /etc/vfs/vfstab
v f s t a b文件用于描述被加载的本地和远程文件系统,它是N F S客户端文件。v f s t a b文件的
每一行包含以下几部分:
• 加载( m o u n t )设备
• fsck 设备
• 加载点
• 文件系统类型
• fsck pass
• 启动时加载
• 加载属性。
示例:
2. Linux文件
在L i n u x中下列文件定义和跟踪N F S资源。
(1) /etc/exports
e x p o r t s文件指定了可被N F S用户使用的文件的访问控制权限。e x p o r t s文件的每一行包含
N F S资源及允许加载资源的主机。访问控制属性以简写方式给出,也可以不指定权限。此时,
资源的访问权限由一组扩展的属性和参数管理。详细信息请查阅相关文档。
示例:
/users/home host.mydomain.com (ro)
示例表明:主机h o s t . m y d o m a i n . c o m可以加载/ u s e r s / h o m e文件系统,访问权限为只读。
(2) /etc/rmtab
r m t a b文件给出当前被用户加载的N F S文件系统列表。它由系统维护。其文件格式如下:
hostname: resource
示例:
d a t a h o u s e . a n v i . c o m : / u s e r s / h o m e
(3) /etc/fstab
/ e t c / f s t a b文件为系统可使用的每个文件系统建立一项。它等价于S o l a r i s中v f s t a b . f s t a b文件
中的每一项包含以下几部分:
• 远程文件系统(remote filesystem)—远程资源的路径。
• 加载点( m o u n t p o i n t )—远程资源在本地的加载点。
• fstype—远程资源的类型(例如n f s )。
• 加载属性( m o u n t _ o p t i o n s )—指定与文件系统相关的属性。
328使用第七部分使用T C P / I P应用
下载
• 备份属性(dump option)—指定文件系统是否应备份。缺省值表示不备份。
• fsck pass—指明f s c k在何时检查文件系统。缺省值表示f s c k不检查文件系统。关于f s t a b
的详细信息请查阅相关帮助文档。
示例:
solaris:/wwww /mnt nfs resize=1024, wsize=1024 hard, intr 0 0
29.3.3 NFS服务器命令
正确运行守护进程并且对相关文件进行修改后,共享及加载N F S资源非常简单。
1. 创建共享资源
在N F S资源可被网络客户使用之前,它们必须由N F S服务器共享。下面讲述如何在S o l a r i s
和L i n u x中使用正确的命令共享(输出)资源。
(1) slaris 2.x服务器命令
下列S o l a r i s命令用于共享及监视N F S资源。
s h a r e
s h a r e命令使指定的文件系统可被客户端使用。
用法:share [-F FSType] [-o specific_options] [-d description] [pathname]
属性:
-F FSTy p e—指定文件系统类型。
-o specific_options—用于控制访问共享资源。控制方式有以下几种:
rw 可读/写
rw=client [:client]⋯—仅能被指定客户读/写
R o 只读
ro=client [:client]⋯—仅能被列出的客户只读访问
-d description—对共享资源进行描述
p a t h n a m e—指明共享资源的路径
示例:
s h a r e a l l
s h a r e a l l命令用于共享特定文件、标准输入或d f s t a b文件列出的资源。
用法:shareall [-F FSType [, FSTy p e⋯]] [- file]
属性:
-F FSTy p e—指定文件系统类型。
[- file]—如果使用“ -”,s h a r e a l l命令以标准输入作为其输入参数。如果指令文件名,
则s h a r e a l l命令以文件的内容作为输入参数。如果项为空,则s h a r e a l l命令使用d f s t a b文件
( / e t c / d f s / d f s t a b )为输入参数。
s h o w m o u n t
s h o w m o u n t命令列出命令执行的服务器行上,加载该服务器文件系统的所有客户端。
用法:/usr/sbin/showmount [-ade] [hostname]
属性:
第2 9章使用网络文件系统( N F S )使用329
下载
- a—列出所有远程加载。
- d—列出被远程加载的目录。
- e—列出所有共享的文件系统。
(2) Linux服务器命令
下列L i n u x命令用于共享及加载N F S资源。
e x p o r t f s
e x p o r t f s命令使系统重取读取/ e t c / e x p o r t f s文件。某些L i n u x版本没有e x p o r t f s命令。如果用
户碰到这种情况,可创建s h e l l脚本完成相同的功能。
s h o w m o u n t
s h o w m o u n t命令检测N F S服务器加载守护进程,获取当前被加载的文件系统的信息。
用法:/usr/sbin/showmount [-adehv] [--all] [--directories] [--exports] [--help] [--version] [host]
属性:
- a或- a l l—以h o s t : d i r的格式列出客户端主机名及其加载的目录。
- d或- d i r e c t o r i e s—仅列出客户加载的所有目录。
- e或- e x p o r t s—列出服务器上可加载的文件系统。
- h或- h e l p—提供帮助信息。
- v或- v e r s i o n—显示当前程序的版本信息。
- n o - h e a d e r s—从输出中删除标题。
2. 不共享资源
出于某种原因,用户希望防止文件系统被加载时,既可以使用m o u n t命令加上- r属性,也
可以采用不共享资源的方法。
(1) Solaris 2.x
下列S o l a r i s命令用于不共享N F S资源。
u n s h a r e
u n s h a r e命令使共享文件系统不可用。
用法:unshare [-F FSType] [-o specific_options] [pathname | resourcename]
如果命令中未指定-F FSType, unshare命令将以/ e t c / d f s / d f s t a b文件的第一行中的F S Ty p e为
该项参数的缺省值。-o specific options根据F S Ty p e不同而不同。详细信息参见相关文档。
u n s h a r e a l l
u n s h a r e a l l命令不共享所有F S Ty p e类型的共享资源。
用法:unshareall [-F FSType [, FSTy p e⋯] ]
如果命令中未指定F S Ty p e,则停止所有共享资源的共享。
使用s h o w m o u n t进行确认
s h o w m o u n t命令可用于检查文件系统是否仍被客户加载。语法格式参见本章已讲述内容。
(2) 在L i n u x使用e x p o r t s命令停止资源共享
L i n u x缺少正式的命令用于停止资源的共享。完成这一工作的最佳方法是编辑共享文件即
330使用第七部分使用T C P / I P应用
下载
/ e t c / e x p o r t s文件,删去不希望继续共享的文件系统。然后运行e x p o r t s命令使系统重新读取共
享文件。如果系统没有e x p o r t s命令,可创建等价的s h e l l脚本完成相同的功能:
29.3.4 NFS客户命令
本节讲述用于加载及取消加载N F S资源的客户命令。
注意在加载到NFS资源前应首先创建加载点。
1. 加载N F S资源
下述命令用于加载共享资源:
(1) mount (Solaris/Linux)
m o u n t命令用于加载远程N F S文件系统。
用法( s o l a r i s ):
用法( L i n u x ):
mount (-hv] (打印帮助及版本信息)
S o l a r i s和L i n u x的m o u n t命令在功能上相似,但都包含一些特有的属性。详细信息参见有
关文档及帮助文件。
加载到N F S资源最简单的方法是利用v f s t a b或f s t a b文件中指定的加载点或设备。
例如,假设S o l a r i s中v f s t a b文件包含以下行:
则可以使用下述命令加载文件系统:
(2) mountall(solaris)
m o u n t a l l命令加载的v f s t a b文件指定所有资源。
用法:mountall [-F FSType] [-l -r] [file_system_table]
第2 9章使用网络文件系统( N F S )使用331
下载
属性:
-F FSTy p e—文件系统类型,本例为N F S。
- l—加载所有本地文件系统。
- r—加载所有远程文件系统。
f i l e - s y s t e m - t a b l e—缺省值为/ e t c / v f s t a b。
2. 自动加载
用户可以设置一个特殊的N F S守护进程来监视对远程N F S文件系统的需求。这一进程称为
自动加载。当应用或客户需要使用未加载的远程文件系统,自动加载进程自动加载到N F S服
务器的相应文件系统。当远程文件系统不被使用时,自动加载进程停止此加载。使用自动加
载有许多好处,如充分利用网络及便于管理。
自动加载既可用于S o l a r i s平台也可用于L i n u x平台,对于大多数U N I X平台都适用。详细
信息参见用户使用的操作系统的相关文档或U N I X帮助文件。
3. 不加载N F S资源
下列命令用于取消对共享资源的加载。
(1) umount (Solaris/Linux)
u m o u n t命令取消对共享资源的加载。
用法( S o l a r i s ):
用法( L i n u x ):
umount [-hv] (显示帮助及版本信息)
与m o u n t命令相似,L i n u x和S o l a r i s中的u m o u n t命令除了几个特别的属性外几乎完全相同,
详细信息参见相关文档及帮助。
u m o u n t命令也只能使用v f s t a b或f s t a b文件中指定的设备或加载点作为其参数。
例如,假设L i n u x中的f s t a b文件包含以下行:
remotehost:/export/home2 /export/myhomenfs rsize=1024, wsize=1024, hard, intr, 0 0
用户可使用以下命令卸载文件系统:
(2) umountall (Solaris)
u m o u n t a l l命令将卸载所有已加载的文件系统。命令属性可使用户仅卸载远程文件系统或
从特定主机加载的文件系统。
用法:
332使用第七部分使用T C P / I P应用
下载
属性:
- k—杀死所有使用文件系统的进程。
- s—不并行卸载文件系统。
-F FSTy p e—仅卸载指定类型的文件系统(如N F S )。
- l—仅卸载本地文件系统。
- r—仅卸载远程文件系统。
-h host—仅卸载从指定主机上加载的文件系统。
29.4 示例:共享及加载NFS文件系统
用户可在Solaris 2.6系统中共享文件系统,在Linux(Red Hat6.0)系统上加载共享文件系统。
用户首先需要修改/ e t c / d f s / d f s t a b文件,在文件中增加以下行:
此行将共享文件系统/ w w w。
在d f s t a b文件后,用户可以通过执行s h a r e a l l命令使/ w w w文件系统可被远程加载。
运行s h a r e命令检查/ w w w是否已经共享。
下一步用户需要确认守护进程是否正确运行。在S o l a r i s系统中,用户需要运行n f s d和
m o u n t d。可使用p s命令查看已运行的进程。
p s命令显示系统中当前活跃的进程,其中包含N F S守护进程,如下所示:
如果守护进程没有运行( p s命令未显示上面两项),可以使用NFS 初始化过程启动它们。
现在,用户可以在L i n u x客户端加载共享资源。
在L i n u x系统中,使用以下m o u n t命令:
卸载文件系统命令如下:
要使L i n u x系统可持续加载/ w w w文件系统,用户可在/ e t c / f s t a b文件中加入以下行:
此行指定将NFS /www文件系统加载到加载点/ m n t。h a r d及i n t r属性表明加载为硬加载且不
可中断(可靠性高)。
整个过程非常简单,但实际操作过程中总会出现问题。下一节将描述用户常见的问题及解决办法。
第2 9章使用网络文件系统( N F S )使用333
下载
29.5 NFS常见问题及解决方案
本节介绍在U N I X环境中设置和运行N F S的一些技巧,并讲述一些常见的问题及相应的解
决办法。因为需要修改许多文件并启动多个守护进程,正确使用N F S是一项有挑战性的工作。
29.5.1 不能加载
加载问题常由不正确的配置或网络问题引起。
除非用户可以确定问题的根源在何处(例如,在未查阅帮助的情况下配置v f s t a b文件),否
则解决加载问题最好从顶层开始。
用户首先需要检查是否可与N F S服务器通信。可以使用p i n g命令检查网络互连情况。
如果网络连接正常,检查守护进程是否正常运行。详细信息参见本章2 9 . 3 . 1节中的内容。
使用s h a r e命令或类似命令检查资源是否正确共享。如果资源共享不正确,检查服务器配置文
件( d f s t a b或e x p o r t s )。详细信息参见本章2 9 . 3 . 2节中的内容。确认服务器可识别客户。在
/ e t c / h o s t s中的客户主机名应与配置文件中的主机名相同。例如,如果服务器指定名为l o c o的系
统可加载某资源,则l o c o 应包含在h o s t s 文件中。N F S对主机名非常挑剔,即使
l o c o . m y d o m a i n . c o m存在于h o s t文件中,仍需文件中加入l o c o。
如果用户不能访问服务器,则需要请求系统管理员协助。
如果用户可以访问服务器,且服务器配置正确,则需进一步检查客户方配置。与服务器
类似,用户需要检查客户方的守护进程及相关文件( f s t a b或v f s t a b )的配置,检查h o s t s文件和
N F S配置文件中主机名的一致性。
29.5.2 不能卸载
如果发现不能卸载资源,首先需要检查用户是否正在使用资源。如果用户收到“文件系
统忙”此类模凌两可的信息,则需检查所有打开的s h e l l和终端,是否运行了打开文件系统的
文件管理器。同时需要确信没有编辑器正在使用系统中的文件。如果发现,则终止此编辑器
或文件管理器,并重新卸载。最后,不要忘记检查正在使用的s h e l l。
29.5.3 硬加载与软加载
N F S文件系统可使用两种方式加载:硬加载和软加载。如前所述,硬加载的可靠性高,
适用于加载可写资源或访问关键的文件和程序。如果资源被硬加载,一旦服务器崩溃或网络
连接异常,程序(或用户)访问将被挂起,这将导致不可预见的结果。缺省情况下, N F S资源均
采用硬加载。
与硬加载相对应的是软加载,采用软加载,客户与服务器连接异常将导致使用N F S资源
的应用程序中止。并且,在不可信网络上使用软加载也会导致不可预料的结果。
用户可以采用h a r d和i n t r属性加载N F S资源避免上述问题。这些m o u n t命令属性使硬加载可
响应中断。
29.6 相关协议及产品
由于N F S的普及,及对于在不同计算机平台间共享资源的迫切需求,出现了许多基于N F S
334使用第七部分使用T C P / I P应用
下载
的工具及与N F S类似的工具。本节将对这些工具作简单介绍。
29.6.1 WebNFS
Sun 公司最近推出了We b N F S,它是N F S协议的增强版。We b N F S提供更好的扩展性、可
靠性及性能。We b N F S也可与防火墙协同工作—这是基于R P C的N F S的弱点。
详细信息参见h t t p : / / w w w. s u n . c o m / w e b n f s。
29.6.2 基于PC的NFS及其他客户端软件
P C - N F S是S u n公司推出的适用于非U N I X平台的N F S客户端产品。它使用户的非U N I X系
统可充分利用用户所在组织的共享资源。它依赖于守护进程p c n f s d,并与其他S u n产品一起发
售。
用户也可以采用其他N F S客户方产品。表2 9 - 2列出了部分N F S客户方产品及产品信息所在
的We b地址。
表29-2 部分N F S客户方产品
29.6.3 SMB和CIFS
服务信息块简称为S M B,是由I B M、微软和其他几家公司一起开发的公用标准,主要用
于计算机间共享文件系统、打印机和其他资源。Windows NT、O S / 2和L i n u x均对S M B提供本
地支持,其他系统可以通过采用第三方软件对S M B提供支持。
关于S M B的详细信息,参见h t t p : / / w w w. s a m b a . o rg / c i f s / d o c s / w h a t - i s - s m b . h t m l。
通用互联网文件系统(C I F S)简介
通用互联网文件系统( C I F S )由一组厂商(微软、S C O、通用数据等公司)共同开发,
它是S M B的公用版本。它的最初实现与NT LM(Microsoft NT中的LAN Manager)非常
相似,支持在互联网上共享资源。
关于C I F S的详细信息参见h t t p : / / m s d n . m i c r o s o f t . c o m / w o r k s h o p / n e t w o r k i n g / c i f s /。
部分实现S M B的产品:
• samba
• Windows for workgroups 3.x, Windows NT, 95/98/2000
• LAN Manager
s a m b a支持S M B和C I F S协议
s a m b a是源码公开的客户服务器产品,它支持S M B和C I F S协议。用户可在遵守G N U的情
况下使用它。
第2 9章使用网络文件系统( N F S )使用335
下载
产品厂商U R L
s a m b a可使用户非常方便地共享服务器资源,如共享文件系统和打印机给同一网络的客
户。
29.6.4 其他产品
许多其他产品也可以实现在多个计算机间共享资源。与N F S和S M B不同,它们中的大多
数都不支持异构网络,不能在不同计算机平台间共享资源。这些协议包括: A p p l e Ta l k、
D e c n e t、N e t Wa r e等等。
注意相关RFC文档。
29.7 小结
本章讨论了N F S的历史及实现,介绍了与N F S相关的的守护进程、文件和其他程序,并给
出了一个加载和共享N F S文件系统的实例。最后讨论了相关的程序和协议,如客户端N F S程序
和S M B协议等。
使用N F S及其命令需要运行多个守护进程,配置多个文件,因此,本章简单介绍了常见
的问题及解决办法并给出了一些参考文档供用户进一步学习N F S。
336使用第七部分使用T C P / I P应用
下载
第29章使用网络文件系统(NFS)
作者:Neal S. Jamison
本章内容包括:
• 什么是N F S
• 实现—N F S工作过程
• NFS使用的文件及命令
• 示例:共享及登录N F S文件系统
• 与N F S常见问题及解决方案
• 相关协议及产品
T C P / I P提供相应的协议及服务,允许多个计算机共享数据。这一特性被广泛用于互联网
应用中,在众多此类应用中,最常见的T C P / I P应用是网络文件系统,简称N F S。
29.1 什么是NFS
N F S是分布式文件系统,它允许计算机通过T C P / I P网络共享资源。在N F S中,N F S客户端
应用可透明地读/写位于N F S服务器上的文件。在N F S出现之前,计算机间共享数据的惟一途
径是复制数据或集中使用数据。这种方式存在明显的缺陷—复制数据浪费存储空间而且存
在实时一致性问题,集中使用数据意味着大型机及多个终端,而且只存在于单一网络中。
随着N F S的诞生,用户可以共享数据且与平台无关,所有上述问题迎刃而解。
注意在本书中,文件系统指以目录结构有组织存放的一组文件的集合。例如,Unix系
统中的/usr就是一个文件系统。
N F S服务器共享资源,使它们可被网上的客户使用。如下所述, N F S既可以使用于L A N,
也可以使用于WA N,并且N F S与操作系统及硬件无关,它允许各种计算机共享资源。N F S实
际上由两个协议组成: M o u n t和N F S。
29.1.1 NFS的历史
N F S由S u n (升阳)公司于1 9 8 4年提出。它首先实现于其4 . 2 B S D上(通常称之为S u n O S )。由
于它受到广泛的关注并且应用需求很广,因此N F S迅速在其他各种平台上实现。至1 9 8 6年止,
N F S可在1 6种不同的硬件平台上的五种操作系统间共享资源。目前, N F S可应用于多种硬件平
台及操作系统平台,并且增加了基于We b的功能。
29.1.2 为何使用NFS
N F S的目标是使计算机共享资源。在它的发展过程中(即8 0年代),计算机工业飞速发展。
廉价C P U及客户/服务器技术促进了分布式计算环境的发展。然而,当处理器价格下降时,大
容量的存储系统相对而言价格仍高居不下。因此,必须采用某种机制在充分发挥单个处理器
性能的同时使计算机可共享存储资源和数据, N F S应运而生。
29.2 实现—NFS工作过程
N F S使用T C P / I P提供的协议和服务,它运行于O S I模型的应用层,如表2 9 - 1所示。
表29-1 OSI层次模型上的N F S
层数名称功能
1 应用层N F S
2 表示层X D R
3 会话层R P C
4 传输层U D P, TCP
5 网络层I P
6 数据链路层
7 物理层E t h e r n e t
出于性能上的原因, N F S起初采用性能较好的U D P,而并未采用可靠性较高的T C P。虽然
U D P在可靠性较好的局域网中工作良好,但在可靠性较差的广域网如I n t e r n e t上运行时, U D P
则不能胜任。当前,随着T C P的改进,运行于T C P上的N F S不但可靠性高而且性能良好。从
Solaris 2.6开始,S u n公司使用基于T C P的N F S。
注意要了解关于TCP和UDP的详细信息,参见第9章。
29.2.1 远程过程调用(RPC)和外部数据表示(XDR)
为了实现平台无关性, N F S基于O S I底层实现。基于会话层的远程过程调用( R e m o t e
Procedure Call,R P C )和基于表示层的外部数据表示(External Data Representation,X D R )为
N F S提供所需的网络连接及解释基于这些连接发送的数据格式。简单的说,它们使N F S可正常
工作于不同平台。本章针对此作详细讲解。
1. 理解R P C
R P C运行于O S I模型的会话层,它提供一组过程,使远程计算机系统可像调用本地过程一
样调用这些过程。使用R P C,本地计算机或应用程序可调用位于远程计算机上的服务。R P C
提供一组过程库,高层应用可以调用这些库而无需了解远程系统的底层细节。因为R P C的抽
象使得N F S与平台无关。
2. 理解X D R
外部数据表示库负责在不同的计算机系统间转换R P C数据, X D R设计了一种标准的数据
表示,使得所有计算机均可理解。
总而言之, R P C和X D R是N F S实现客户/服务器关系的基石。
29.2.2 加载类型
如前章所述, N F S的无状态特性允许客户端和客户应用程序从服务器不可用中恢复。加
载的类型决定当服务器崩溃时客户及客户应用的响应方式。加载类型将在本章2 9 . 5节中讨论。
1. 硬加载
当N F S服务器或资源不可用时,硬加载资源将导致不断尝试R F C调用。一旦服务器响应,
324使用第七部分使用T C P / I P应用
下载
R P C调用成功且进入下一个执行过程。如果服务器或网络问题持续,硬加载将引起持续等待
状态,使N F S客户端应用挂起。用户可以指定属性使硬加载可中断。
2. 软加载
使用软加载资源时, R P C调用失败将导致N F S客户应用同时失败,最终使数据不可用。此
种方法不可用于可写的文件系统或读取关键数据及可执行程序。
注意下一节与U N I X的帮助文档类似。要获取更详细的信息,参见相关文件及程序的
帮助文档。
29.3 NFS使用的文件及命令
本节主要讲述N F S使用的守护进程、程序和文件。因为N F S与U N I X系统紧密相连,本节
将以两个常见的U N I X操作系统(San Solaris 2.0和L i n u x )为例介绍共享和使用N F S资源。至于
基于其他系统的实现方法,包括基于P C的客户端将在本章2 9 . 6节中讨论。
守护进程工作过程
在U N I X中,守护进程是在后台运行的程序,它等待某些事件的发生。在英文中,守护进
程又称为精灵,即介于人与神之间的一种存在。在U N I X中,它位于两个进程之间。例如,打
印守护进程等待打印作业进入打印队列。在本章中, N F S守护进程等待客户请求文件系统。
29.3.1 NFS守护进程
N F S正常工作需要多个服务器守护进程协同工作。下面将以S o l a r i s和L i n u x操作系统分别
介绍N F S守护进程。
1. Solaris 2.x
下列S o l a r i s守护进程分别用于监听、处理及维护N F S请求。S o l a r i s服务器守护进程由脚本
/ e t c / i n i t . d / n f s . s e r v e r启动。
(1) nsfd
n s f d服务器守护进程用于监听N F S客户请求。
用法: /usr/lib/nfs/nfsd [-a] [-c #_conn] [-l listen_backlog] [-p protocol] [-t device]
[ n s e r v e r s ]
属性:
- a—运行N F S守护进程,可处理所有可用的面向连接和无连接请求,包括U D P和T C P。
-c # _conn—设置N F S服务器可处理的面向连接请求的最大连接数。缺省设置为无穷大。
- p—设置基于面向连接传输的NFS TCP连接队列的长度。缺省值为3 2。
-p protocol—启动基于指定协议的N F S守护进程。
-t device—在指定设备上启动N F S守护进程。
N s e r v e r s—指定可同时处理的最大请求数。
相关文件: / e t c / i n i t . d / n f s . s e r v e r;s h e l l脚本也可启动n f s d。
(2) mountd
m o u n t d响应N F S访问请求及文件系统加载请求。它通过读取/ e t c / d f s / s h a r e t a b确定文件系统
的可用性。m o u n t d为服务器守护进程。
第2 9章使用网络文件系统( N F S )使用325
下载
用法:/usr/lib/nfs/mountd [-v] [-r]
属性:
- v—冗余模式,在控制台显示信息。
- r—拒绝客户请求。
相关文件: / e t c / d f s / s h a r e t a b (参见2 9 . 3 . 2节)。
(3) statd
s t a t d为客户方守护进程,它与l o c k d协同工作,提供文件加锁服务的崩溃与恢复。
用法:/ u s r / l i b / n f s / s t a t d
相关文件: l o c k d。
(4) lockd
l o c k d是客户方守护进程,它是N F S锁管理器的一部分,用于对N F S文件加锁。
用法:/usr/lib/nfs/lockd [-g graceperiod] [-t timeout] [nthreads]
属性:
-g graceperiod—服务器重启后,客户端回收锁的时间间隔,单位为秒(缺省值为4 5 )。
-t timeout—客户重新请求锁的时间间隔,单位为秒(缺省值为1 5 )。
n t h r e a d s—响应锁请求的线程数(缺省值为2 0 )。
相关文件: s t a t d。
2. Linux
下列L i n u x守护进程分别用于监听、处理和维护N F S请求。它们的作用及语法与S o l a r i s中
的守护进程类似。
(1) rpc.nfsd
r p c . n f s d守护进程用于处理N F S请求,它是服务器守护进程。
用法:
属性:
-f exports-file—指定输出文件,缺省输出文件为/ e t c / e x p o r t s。
- h或- h e l p—提供帮助信息。
- l或- - l o g - t r a n s f e r s—记录所有文件的传输信息。
- n或- - a l l o w - n o n . r o o t—允许守护进程接收进入的N F S请求,即使这些请求不是由允许的
I P产生。
-P portnum 或--port portnum—让n f s d监听指定的端口,替代缺省端口2 0 4 9或文件
/ e t c / s e r v i c e s中指定的端口。
- p或- p r o m i s c u o u s—使服务器可被网络中任何主机使用。
- v或- v e r s i o n—显示程序的当前版本。
n u m s e r v e r s—允许用户同时运行多个n s f d实例。
326使用第七部分使用T C P / I P应用
下载
相关文件: exports, mountd
(2) rpc.mountd
r p c . m o u n t d接收加载请求并检测/ e t c / e x p o r t s文件中N F S文件系统的可用性。如果请求资源
可以使用, r p c . m o u n t d创建文件处理进程并在/ e t c / r m t a b中添加相应项。接收u m o u n t请求后,
从/ e t c / r m t a b文件中删除相应的项。
用法:
属性:
查询上一个命令,r p c . n f s d,可知r c p . m o u n t d命令属性的含义。
相关文件: /etc/exports, /etc/rmtab
(3) rpc.statd
参见s o l a r i s中的s t a t d。
(4) rpc.lockd
参见s o l a r i s中的l o c k d。
(5) biod
b i o d在N F S客户端启动指定数目的异步块I / O守护进程。这些进程用于在N F S文件系统上
执行提前读和推后写操作,以提高N F S的性能。
用法:/usr/etc/biod [numdaemons]
29.3.2 与NFS相关的文件
在共享或加载N F S文件系统前,必须首先修改服务器和客户方文件。
1. solaris 2.x文件
S o l a r i s中的下列文件定义和跟踪N F S资源。
(1) /etc/dfs/dfstab
d f s t a b文件中包含一组控制N F S文件系统输出的共享命令。关于s h a r e命令的详细信息将在
本章2 9 . 3 . 3节中讲述。
示例:
(2) /etc/dfs/sharetab
s h a r e t a b文件中包含与通过s h a r e命令共享的文件系统对应的项。这些项由系统自动生成。
s h a r e t a b文件中的每一项包含以下几部分:
• pathname—共享资源的路径。
• resource—远程系统访问资源的名称。
• fstype—共享资源的类型。
• specific_options—共享资源时指定可以使用的属性。
• description—共享资源的描述信息,当资源被共享时提供给客户。
示例:
第2 9章使用网络文件系统( N F S )使用327
下载
/export/home2-nfs rw=engineering "Engineering Home"
(3) /etc/rmtab
r m t a b文件中包含了当前被用户加载的N F S文件系统列表。它也是由系统自动生成,其每
一行的格式如下:
hostname: fsname
示例:
engineering5: /export/home2
(4) /etc/vfs/vfstab
v f s t a b文件用于描述被加载的本地和远程文件系统,它是N F S客户端文件。v f s t a b文件的
每一行包含以下几部分:
• 加载( m o u n t )设备
• fsck 设备
• 加载点
• 文件系统类型
• fsck pass
• 启动时加载
• 加载属性。
示例:
2. Linux文件
在L i n u x中下列文件定义和跟踪N F S资源。
(1) /etc/exports
e x p o r t s文件指定了可被N F S用户使用的文件的访问控制权限。e x p o r t s文件的每一行包含
N F S资源及允许加载资源的主机。访问控制属性以简写方式给出,也可以不指定权限。此时,
资源的访问权限由一组扩展的属性和参数管理。详细信息请查阅相关文档。
示例:
/users/home host.mydomain.com (ro)
示例表明:主机h o s t . m y d o m a i n . c o m可以加载/ u s e r s / h o m e文件系统,访问权限为只读。
(2) /etc/rmtab
r m t a b文件给出当前被用户加载的N F S文件系统列表。它由系统维护。其文件格式如下:
hostname: resource
示例:
d a t a h o u s e . a n v i . c o m : / u s e r s / h o m e
(3) /etc/fstab
/ e t c / f s t a b文件为系统可使用的每个文件系统建立一项。它等价于S o l a r i s中v f s t a b . f s t a b文件
中的每一项包含以下几部分:
• 远程文件系统(remote filesystem)—远程资源的路径。
• 加载点( m o u n t p o i n t )—远程资源在本地的加载点。
• fstype—远程资源的类型(例如n f s )。
• 加载属性( m o u n t _ o p t i o n s )—指定与文件系统相关的属性。
328使用第七部分使用T C P / I P应用
下载
• 备份属性(dump option)—指定文件系统是否应备份。缺省值表示不备份。
• fsck pass—指明f s c k在何时检查文件系统。缺省值表示f s c k不检查文件系统。关于f s t a b
的详细信息请查阅相关帮助文档。
示例:
solaris:/wwww /mnt nfs resize=1024, wsize=1024 hard, intr 0 0
29.3.3 NFS服务器命令
正确运行守护进程并且对相关文件进行修改后,共享及加载N F S资源非常简单。
1. 创建共享资源
在N F S资源可被网络客户使用之前,它们必须由N F S服务器共享。下面讲述如何在S o l a r i s
和L i n u x中使用正确的命令共享(输出)资源。
(1) slaris 2.x服务器命令
下列S o l a r i s命令用于共享及监视N F S资源。
s h a r e
s h a r e命令使指定的文件系统可被客户端使用。
用法:share [-F FSType] [-o specific_options] [-d description] [pathname]
属性:
-F FSTy p e—指定文件系统类型。
-o specific_options—用于控制访问共享资源。控制方式有以下几种:
rw 可读/写
rw=client [:client]⋯—仅能被指定客户读/写
R o 只读
ro=client [:client]⋯—仅能被列出的客户只读访问
-d description—对共享资源进行描述
p a t h n a m e—指明共享资源的路径
示例:
s h a r e a l l
s h a r e a l l命令用于共享特定文件、标准输入或d f s t a b文件列出的资源。
用法:shareall [-F FSType [, FSTy p e⋯]] [- file]
属性:
-F FSTy p e—指定文件系统类型。
[- file]—如果使用“ -”,s h a r e a l l命令以标准输入作为其输入参数。如果指令文件名,
则s h a r e a l l命令以文件的内容作为输入参数。如果项为空,则s h a r e a l l命令使用d f s t a b文件
( / e t c / d f s / d f s t a b )为输入参数。
s h o w m o u n t
s h o w m o u n t命令列出命令执行的服务器行上,加载该服务器文件系统的所有客户端。
用法:/usr/sbin/showmount [-ade] [hostname]
属性:
第2 9章使用网络文件系统( N F S )使用329
下载
- a—列出所有远程加载。
- d—列出被远程加载的目录。
- e—列出所有共享的文件系统。
(2) Linux服务器命令
下列L i n u x命令用于共享及加载N F S资源。
e x p o r t f s
e x p o r t f s命令使系统重取读取/ e t c / e x p o r t f s文件。某些L i n u x版本没有e x p o r t f s命令。如果用
户碰到这种情况,可创建s h e l l脚本完成相同的功能。
s h o w m o u n t
s h o w m o u n t命令检测N F S服务器加载守护进程,获取当前被加载的文件系统的信息。
用法:/usr/sbin/showmount [-adehv] [--all] [--directories] [--exports] [--help] [--version] [host]
属性:
- a或- a l l—以h o s t : d i r的格式列出客户端主机名及其加载的目录。
- d或- d i r e c t o r i e s—仅列出客户加载的所有目录。
- e或- e x p o r t s—列出服务器上可加载的文件系统。
- h或- h e l p—提供帮助信息。
- v或- v e r s i o n—显示当前程序的版本信息。
- n o - h e a d e r s—从输出中删除标题。
2. 不共享资源
出于某种原因,用户希望防止文件系统被加载时,既可以使用m o u n t命令加上- r属性,也
可以采用不共享资源的方法。
(1) Solaris 2.x
下列S o l a r i s命令用于不共享N F S资源。
u n s h a r e
u n s h a r e命令使共享文件系统不可用。
用法:unshare [-F FSType] [-o specific_options] [pathname | resourcename]
如果命令中未指定-F FSType, unshare命令将以/ e t c / d f s / d f s t a b文件的第一行中的F S Ty p e为
该项参数的缺省值。-o specific options根据F S Ty p e不同而不同。详细信息参见相关文档。
u n s h a r e a l l
u n s h a r e a l l命令不共享所有F S Ty p e类型的共享资源。
用法:unshareall [-F FSType [, FSTy p e⋯] ]
如果命令中未指定F S Ty p e,则停止所有共享资源的共享。
使用s h o w m o u n t进行确认
s h o w m o u n t命令可用于检查文件系统是否仍被客户加载。语法格式参见本章已讲述内容。
(2) 在L i n u x使用e x p o r t s命令停止资源共享
L i n u x缺少正式的命令用于停止资源的共享。完成这一工作的最佳方法是编辑共享文件即
330使用第七部分使用T C P / I P应用
下载
/ e t c / e x p o r t s文件,删去不希望继续共享的文件系统。然后运行e x p o r t s命令使系统重新读取共
享文件。如果系统没有e x p o r t s命令,可创建等价的s h e l l脚本完成相同的功能:
29.3.4 NFS客户命令
本节讲述用于加载及取消加载N F S资源的客户命令。
注意在加载到NFS资源前应首先创建加载点。
1. 加载N F S资源
下述命令用于加载共享资源:
(1) mount (Solaris/Linux)
m o u n t命令用于加载远程N F S文件系统。
用法( s o l a r i s ):
用法( L i n u x ):
mount (-hv] (打印帮助及版本信息)
S o l a r i s和L i n u x的m o u n t命令在功能上相似,但都包含一些特有的属性。详细信息参见有
关文档及帮助文件。
加载到N F S资源最简单的方法是利用v f s t a b或f s t a b文件中指定的加载点或设备。
例如,假设S o l a r i s中v f s t a b文件包含以下行:
则可以使用下述命令加载文件系统:
(2) mountall(solaris)
m o u n t a l l命令加载的v f s t a b文件指定所有资源。
用法:mountall [-F FSType] [-l -r] [file_system_table]
第2 9章使用网络文件系统( N F S )使用331
下载
属性:
-F FSTy p e—文件系统类型,本例为N F S。
- l—加载所有本地文件系统。
- r—加载所有远程文件系统。
f i l e - s y s t e m - t a b l e—缺省值为/ e t c / v f s t a b。
2. 自动加载
用户可以设置一个特殊的N F S守护进程来监视对远程N F S文件系统的需求。这一进程称为
自动加载。当应用或客户需要使用未加载的远程文件系统,自动加载进程自动加载到N F S服
务器的相应文件系统。当远程文件系统不被使用时,自动加载进程停止此加载。使用自动加
载有许多好处,如充分利用网络及便于管理。
自动加载既可用于S o l a r i s平台也可用于L i n u x平台,对于大多数U N I X平台都适用。详细
信息参见用户使用的操作系统的相关文档或U N I X帮助文件。
3. 不加载N F S资源
下列命令用于取消对共享资源的加载。
(1) umount (Solaris/Linux)
u m o u n t命令取消对共享资源的加载。
用法( S o l a r i s ):
用法( L i n u x ):
umount [-hv] (显示帮助及版本信息)
与m o u n t命令相似,L i n u x和S o l a r i s中的u m o u n t命令除了几个特别的属性外几乎完全相同,
详细信息参见相关文档及帮助。
u m o u n t命令也只能使用v f s t a b或f s t a b文件中指定的设备或加载点作为其参数。
例如,假设L i n u x中的f s t a b文件包含以下行:
remotehost:/export/home2 /export/myhomenfs rsize=1024, wsize=1024, hard, intr, 0 0
用户可使用以下命令卸载文件系统:
(2) umountall (Solaris)
u m o u n t a l l命令将卸载所有已加载的文件系统。命令属性可使用户仅卸载远程文件系统或
从特定主机加载的文件系统。
用法:
332使用第七部分使用T C P / I P应用
下载
属性:
- k—杀死所有使用文件系统的进程。
- s—不并行卸载文件系统。
-F FSTy p e—仅卸载指定类型的文件系统(如N F S )。
- l—仅卸载本地文件系统。
- r—仅卸载远程文件系统。
-h host—仅卸载从指定主机上加载的文件系统。
29.4 示例:共享及加载NFS文件系统
用户可在Solaris 2.6系统中共享文件系统,在Linux(Red Hat6.0)系统上加载共享文件系统。
用户首先需要修改/ e t c / d f s / d f s t a b文件,在文件中增加以下行:
此行将共享文件系统/ w w w。
在d f s t a b文件后,用户可以通过执行s h a r e a l l命令使/ w w w文件系统可被远程加载。
运行s h a r e命令检查/ w w w是否已经共享。
下一步用户需要确认守护进程是否正确运行。在S o l a r i s系统中,用户需要运行n f s d和
m o u n t d。可使用p s命令查看已运行的进程。
p s命令显示系统中当前活跃的进程,其中包含N F S守护进程,如下所示:
如果守护进程没有运行( p s命令未显示上面两项),可以使用NFS 初始化过程启动它们。
现在,用户可以在L i n u x客户端加载共享资源。
在L i n u x系统中,使用以下m o u n t命令:
卸载文件系统命令如下:
要使L i n u x系统可持续加载/ w w w文件系统,用户可在/ e t c / f s t a b文件中加入以下行:
此行指定将NFS /www文件系统加载到加载点/ m n t。h a r d及i n t r属性表明加载为硬加载且不
可中断(可靠性高)。
整个过程非常简单,但实际操作过程中总会出现问题。下一节将描述用户常见的问题及解决办法。
第2 9章使用网络文件系统( N F S )使用333
下载
29.5 NFS常见问题及解决方案
本节介绍在U N I X环境中设置和运行N F S的一些技巧,并讲述一些常见的问题及相应的解
决办法。因为需要修改许多文件并启动多个守护进程,正确使用N F S是一项有挑战性的工作。
29.5.1 不能加载
加载问题常由不正确的配置或网络问题引起。
除非用户可以确定问题的根源在何处(例如,在未查阅帮助的情况下配置v f s t a b文件),否
则解决加载问题最好从顶层开始。
用户首先需要检查是否可与N F S服务器通信。可以使用p i n g命令检查网络互连情况。
如果网络连接正常,检查守护进程是否正常运行。详细信息参见本章2 9 . 3 . 1节中的内容。
使用s h a r e命令或类似命令检查资源是否正确共享。如果资源共享不正确,检查服务器配置文
件( d f s t a b或e x p o r t s )。详细信息参见本章2 9 . 3 . 2节中的内容。确认服务器可识别客户。在
/ e t c / h o s t s中的客户主机名应与配置文件中的主机名相同。例如,如果服务器指定名为l o c o的系
统可加载某资源,则l o c o 应包含在h o s t s 文件中。N F S对主机名非常挑剔,即使
l o c o . m y d o m a i n . c o m存在于h o s t文件中,仍需文件中加入l o c o。
如果用户不能访问服务器,则需要请求系统管理员协助。
如果用户可以访问服务器,且服务器配置正确,则需进一步检查客户方配置。与服务器
类似,用户需要检查客户方的守护进程及相关文件( f s t a b或v f s t a b )的配置,检查h o s t s文件和
N F S配置文件中主机名的一致性。
29.5.2 不能卸载
如果发现不能卸载资源,首先需要检查用户是否正在使用资源。如果用户收到“文件系
统忙”此类模凌两可的信息,则需检查所有打开的s h e l l和终端,是否运行了打开文件系统的
文件管理器。同时需要确信没有编辑器正在使用系统中的文件。如果发现,则终止此编辑器
或文件管理器,并重新卸载。最后,不要忘记检查正在使用的s h e l l。
29.5.3 硬加载与软加载
N F S文件系统可使用两种方式加载:硬加载和软加载。如前所述,硬加载的可靠性高,
适用于加载可写资源或访问关键的文件和程序。如果资源被硬加载,一旦服务器崩溃或网络
连接异常,程序(或用户)访问将被挂起,这将导致不可预见的结果。缺省情况下, N F S资源均
采用硬加载。
与硬加载相对应的是软加载,采用软加载,客户与服务器连接异常将导致使用N F S资源
的应用程序中止。并且,在不可信网络上使用软加载也会导致不可预料的结果。
用户可以采用h a r d和i n t r属性加载N F S资源避免上述问题。这些m o u n t命令属性使硬加载可
响应中断。
29.6 相关协议及产品
由于N F S的普及,及对于在不同计算机平台间共享资源的迫切需求,出现了许多基于N F S
334使用第七部分使用T C P / I P应用
下载
的工具及与N F S类似的工具。本节将对这些工具作简单介绍。
29.6.1 WebNFS
Sun 公司最近推出了We b N F S,它是N F S协议的增强版。We b N F S提供更好的扩展性、可
靠性及性能。We b N F S也可与防火墙协同工作—这是基于R P C的N F S的弱点。
详细信息参见h t t p : / / w w w. s u n . c o m / w e b n f s。
29.6.2 基于PC的NFS及其他客户端软件
P C - N F S是S u n公司推出的适用于非U N I X平台的N F S客户端产品。它使用户的非U N I X系
统可充分利用用户所在组织的共享资源。它依赖于守护进程p c n f s d,并与其他S u n产品一起发
售。
用户也可以采用其他N F S客户方产品。表2 9 - 2列出了部分N F S客户方产品及产品信息所在
的We b地址。
表29-2 部分N F S客户方产品
29.6.3 SMB和CIFS
服务信息块简称为S M B,是由I B M、微软和其他几家公司一起开发的公用标准,主要用
于计算机间共享文件系统、打印机和其他资源。Windows NT、O S / 2和L i n u x均对S M B提供本
地支持,其他系统可以通过采用第三方软件对S M B提供支持。
关于S M B的详细信息,参见h t t p : / / w w w. s a m b a . o rg / c i f s / d o c s / w h a t - i s - s m b . h t m l。
通用互联网文件系统(C I F S)简介
通用互联网文件系统( C I F S )由一组厂商(微软、S C O、通用数据等公司)共同开发,
它是S M B的公用版本。它的最初实现与NT LM(Microsoft NT中的LAN Manager)非常
相似,支持在互联网上共享资源。
关于C I F S的详细信息参见h t t p : / / m s d n . m i c r o s o f t . c o m / w o r k s h o p / n e t w o r k i n g / c i f s /。
部分实现S M B的产品:
• samba
• Windows for workgroups 3.x, Windows NT, 95/98/2000
• LAN Manager
s a m b a支持S M B和C I F S协议
s a m b a是源码公开的客户服务器产品,它支持S M B和C I F S协议。用户可在遵守G N U的情
况下使用它。
第2 9章使用网络文件系统( N F S )使用335
下载
产品厂商U R L
s a m b a可使用户非常方便地共享服务器资源,如共享文件系统和打印机给同一网络的客
户。
29.6.4 其他产品
许多其他产品也可以实现在多个计算机间共享资源。与N F S和S M B不同,它们中的大多
数都不支持异构网络,不能在不同计算机平台间共享资源。这些协议包括: A p p l e Ta l k、
D e c n e t、N e t Wa r e等等。
注意相关RFC文档。
29.7 小结
本章讨论了N F S的历史及实现,介绍了与N F S相关的的守护进程、文件和其他程序,并给
出了一个加载和共享N F S文件系统的实例。最后讨论了相关的程序和协议,如客户端N F S程序
和S M B协议等。
使用N F S及其命令需要运行多个守护进程,配置多个文件,因此,本章简单介绍了常见
的问题及解决办法并给出了一些参考文档供用户进一步学习N F S。
336使用第七部分使用T C P / I P应用
下载
本文介绍了网络文件系统(NFS)的历史及实现,涵盖了NFS的工作原理、相关守护进程、配置文件和命令等内容。此外,还提供了NFS文件系统共享和加载的实际示例,以及常见问题的解决方案。
1227

被折叠的 条评论
为什么被折叠?



