NFS文件系统介绍

上一篇 / 下一篇  2011-01-24 15:25:03 / 个人分类:技术

12.3.1 NFS文件系统介绍

我们称NFS文件系统为网络文件系统,因为它允许客户端通过网络连接来挂接其他系统的磁盘卷。在这里,提供共享磁盘的主机为服务器,挂接服务器磁盘的主机是客户机。客户机可以像对待本地文件系统一样在服务器的共享磁盘上进行诸如修改、删除和创建文件。它很像Windows中的共享文件夹,也有读者觉得NFSSamba比较相似,因为它们都支持系统间透明文件系统的共享。但是,由于NFS有专门的Solaris内核的支持,因而它有更高的数据吞吐能力。

NFS文件系统是一个基于远程过程调用(RPC)的分布式文件系统结构。NFS利用了远程调用(RPC)技术,该技术使得系统可以很方便地实现对服务器系统过程的远程执行请求。目前,RPC已经得到很多操作系统的支持,包括SolarisLinux,以及Microsoft WindowsRPC的目的就是对通过网络进行过程的具体连接细节和方法进行抽象。这样,客户端和服务器就无须配备专门的网络代码,就可以进行网络文件的共享了。

Solaris 2.5以前的版本中,运行的是NFS2。由于它的数据传输采用了不太可靠的UDP协议,所以效果较差。而NFS 3是基于TCP协议的,数据传输比UDP协议更可靠。并且,NFS 3允许NFS服务通过缓存来加快磁盘的读写速度。此外,Solaris 2.6以后还提供了一种新型的NFS支持,这就是WebNFS。作为传统Internet文件共享技术(如FTP)的一种替代技术,WebNFS允许文件系统通过Internet实现共享。另据实验表明,SunWebNFS比传统的Web服务器具有更大的带宽,这意味着WebNFS很有可能在将来取代超文本传输协议(HTTP)而成为Web数据传输的标准。

Solaris 10中,默认安装NFS 4,它比起NFS 3主要有以下改进:

 在NFS V4协议中,文件加锁的实现和以前的NFS协议有很大的不同。为文件加锁的RPC操作从分离的协议移到了核心协议之中,而rpc.lockdrpc.statdrpc.mountdNFS V4中将不再被使用,但它们仍然存在于Solaris 10系统之中,以便支持NFS 3

NFS 4.0版的Solaris实现与Kerberos V5完全集成,又称做SEAM,可以提供验证、完整性和保密性。

 使用NFS版本4后,文件将不再在前台文件系统中进行高速缓存。后台文件系统将提供所有文件访问权。并且,由于前台文件系统中没有高速缓存任何文件,因此特定于CacheFS的安装选项(该选项影响前台文件系统)将被忽略。特定于CacheFS的安装选项不适用于后台文件系统。

12.3.2NFS服务器的设置

要想使NFS服务器能够工作,只需要做两个方面的工作,首先是设定共享的目录,其次是启动NFS服务器。

1.设定、检查和取消共享的目录

设定共享的目录

使用share可以实现文件系统和目录的共享。例如,如果我们希望将host1上的/var/mail目录共享给host2,则在host1上可以使用下列命令:

host1#share -F nfs -o rw=host2 /var/mail

在该例中,“-F nfs”代表“NFS的文件系统”。如果我们还想将该目录共享给host3host4,可以使用下面的命令:

host1#share -F nfs -o rw=host2host3host4 /var/mail

rw”是“读写”的意思,如果我们只共享一个CD-ROM,则只须共享它的只读权限:

host1#share -F nfs -o ro /cdrom

NFS还有一个真正的特点,就是在将自己的目录共享给客户机时,还能挂接上客户机共享的目录。比如,host1将自己的/var.mail目录共享给了host2host3host4,如果此时host2也有共享目录/usr/local/且允许host1挂接,那么host1就可以将/usr/local/挂接到本地。

再举一个share命令的例子,将host1的目录/exprot/home/games共享:

host1# share -F nfs -o ro=@192.168.0.0/16:host2 ,root=host3 /export/home/games

结果表明:192.168.0.0这个B类网的机器和host2主机有读的权限;host3主机的root用户可以对共享资源有超级用户访问权限。但需要说明的是,即使host3主机的root用户可以对共享资源有超级用户访问权限,对共享目录/exprot/home/games也是只读,因为服务器本地权限大于任何share的权限。

Share命令是NFS服务器上的一个重要的命令,该命令还有以下参数。

# share:显示所有可以安装的资源,不管它是否已经被安装。

# share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource:指定共享文件。

-F file system type:指定被共享的文件系统类型。

-o options:指定客户对资源访问的类型。

-d description:共享资源的简单描述。当你share命令不带任何参数运行,它就会被显示。

pathname-to-resource:在服务器上共享的资源名字。

-o:指定了允许客户访问共享资源的用户权限。具体如下。

rw:表示用户可读/写,是默认值。

rw=client1client2指定客户端用户可以有读/写权限。可以有很多用户,用冒号分隔。

ro:表示只读。

ro=client1client2指定用户client1client2只读。client1可以是用户名,也可以是IP地址,或者一个网段。例如:ro=@192.168.0.0/16

root=clientclient2指定client1client2上的root用户对共享资源有超级用户的权限。但是,它们的优先级小于nfs服务器的本地权限。

在终端上运行share命令可以立即生效,但系统重新启动后就会消失。如果将share命令写到/etc/dfs/dfstab配置文件中文件中的话,就可以在启动NFS服务的时候自动加载。写在dfstab配置文件中的格式上面介绍的终端命令行输入是一样的。此外,还可以使用下面两个命令手工加载和卸载。

# shareall:共享所有列在/etc/dfs/dfstab中的共享资源。

# unshareall:取消所有列在/etc/dfs/dfstab中的共享资源。

检查共享目录的设置

# dfshares

用以查看服务器的共享资源。

例如:

host1#share –F nfs –o rw=host2 /var/mail

host1# dfshares

RESOURCE SERVER ACCESS TRANSPORT

Host1:/var/mail host1 - -

详细解释如下:

resource:可被远程调用的资源的主机和路径名。

Server:指定资源的系统名称。

Access:服务器指定的权限,默认是rw,显示为“-”

Transport:指定共享资源的端口。

# dfmounts命令

显示服务器上查看共享资源被利用的状况。

host1# dfmounts

RESOURCE SERVER PATHNAME CLIENTS

- host1 /var/mail host2, host3, host4

详细解释如下:

resource:共享资料名称。

server pathname:共享资料目录。

Client:连接的客户端。

取消目录的共享

# unshare [ -F nfs ] path-to-resource

-F nfs:指定系统类型,默认。

path-to-resource:指定共享路径。

例如:

# unshare /export/home/games

取消/export/home/games目录共享了。

2.启动和关闭NFS服务器

启动关闭系统默认版本NFS服务器。

启动:# svcadm enable network/nfs/server

关闭:# svcadm disable network/nfs/server

启动和关闭以前版本的NFS服务器。

/etc/default/nfs配置文件中可以更改默认启动NFS服务器的版本。主要是更改以下两个参数:

NFS_SERVER_VERSMAX=value

NFS_SERVER_VERSMIN=value

如将使用NFS版本3,就将value值改为3。然后再使用svcadm启动服务器。

12.3.3 NFS客户端的设置

要使NFS客户端正常工作,首先须查看客户端的NFS服务是否启动,然后查看NFS服务器的共享目录情况,如果共享目录正常,就可以mount服务器的目录到本地。

1.查看客户端的NFS服务

查看客户端的NFS服务,使用下面命令:

#svcs |grep nfs

如果要启动系统默认版本NFS客户端服务:

# svcadm enable network/nfs/server

关闭服务使用:

# svcadm disable network/nfs/server

如果要启动非系统默认版本的NFS客户端服务,也需要更改/etc/default/nfs配置文件,主要是下面两个参数:

NFS_CLIENT_VERSMAX=value

NFS_CLIENT_VERSMIN=value

例如,如果使用NFS版本3,就将value值改为3。然后在使用svcadm启动客户端服务。

2.检测nfs服务器的共享目录

检查nfs服务器的共享目录就使用下面的命令:

# showmount [ -ade ] <hostname>

-a:显示已经已经使用的目录和来自哪个nfs服务器。

-d:显示已经被远程安装的目录。

-e:显示可以被安装的目录。一般用-e来查看远程主机的共享目录。

3.将共享目录mount到本地

# mount [ -F nfs ] [ -o options ] path-to-resource path-to-local-mount-point

-F nfs:指定共享文件系统,默认的。没必要指定。

-o options:指定选项,如权限。默认rw,可读/写。也可以ro-只读。

path-to-rescource:指定nfs服务器的主机名和共享资源路径。

path-to-local-mount-point:指定共享资源在本地的mount点。

例如:

host2# mkdir /games

host2# mount host1:/export/home/games /games

共享远程主机host1/export/home/games目录,默认可读写,挂接在本地的/games目录上。

取消共享

# umount [-F nfs] remote-path-to-resource path-to-local-mount-point

-F nfs:默认的文件系统。

remote-path-to-resource:远程主机和共享目录路径,主机和共享目录路径用冒号分隔。

path-to-local-mount-point:本地主机挂点。

例如:

host2# umount host1:/export/home/games /games

取消远程主机host1上的/exprot/home/games这个目录的在本地/games上的共享。

12.3.4 NFS的性能管理

NFS的性能由下列多种因素决定:

 服务器的CPU的速度和个数;

 服务器的物理内存和虚拟内存大小;

 服务器的磁盘速度;

 服务器的系统负载大小;

 网络带宽;

 同时提供服务的客户机的数量;

 域名查询速度。

无论在客户机还是服务器上,我们都可以通过运行nfsstat命令来持续收集性能的统计数据。下面的命令是在服务器端运行的,我们可以看到成功调用和失败调用的数值。

#nfsstat-s

server nfs:

calls badcalls

575637355 3433

使用nfsstat-z命令,可以使上面统计的数据归零。

12.3.5 NFS配置文件介绍

Solaris 10中,有一些NFS的配置文件,对我们理解和调试出更有效的NFS服务有很大的帮助。下面简单介绍一些比较常用的文件,如表12-5所示。

12-5 NFS配置文件

文件名

功 能

/etc/default/nfs

列出有关lockdnfsd进程的设置信息

/etc/default/nfslogd

列出nfslogd进程配置信息

/etc/dfs/dfstab

列出本地资源被共享的信息

/etc/dfs/fstypes

列出远程文件系统的类型

/etc/rmtab

列出被远程客户机mount上的目录

/etc/dfs/sharetab

列出本地和远程主机被共享的资源

12.3.6 NFS文件系统自动挂接

用户使用NFS服务时,使用完远程资源后经常会忘记卸载(umount),这就造成了网络资源的浪费。如果服务器发生了崩溃,还会在客户机上留下一些挂起的进程。自动挂接器(automounter)可以帮助我们解决这个问题,它安装在NFS服务的客户机上,当用户访问远程文件系统时才自动挂接该NFS文件系统,并在文件连续5分钟不使用的情况下自动卸载该NFS文件系统。

这样看起来自动挂接器就像NFS服务的一种延伸,不过在Solaris系统中,它有一个专门的服务名称叫“autofs”

在介绍autofs服务之前,我们必须先了解“自动挂接器映像”。

1.自动挂接器映像

什么是自动挂接器映像?其实就是本地文件系统目录与远程文件系统目录的对应关系。比如,在本地键入“/staff”目录,系统就会自动将它与远程主机上的“/export/home”目录对应起来。这是个一一对应的关系。如何建立这个对应关系,以及如何管理它,我们下面将会详细进行介绍。

间接映像

间接映像是自动挂接器最常用的一种映像。间接映像文件通常保存在/etc目录下,它的存在形式通常是auto_directory。其中,“directory”是间接映像所负责挂接目录的前缀(不带斜线)。比如,负责挂接远程系统/home目录的间接映像名通常为auto_home。这个auto_home文件就位于客户机的/etc目录下,它的内容是:

host2# /etc/auto_home – home directory map for automounter

user1 host1:/export/home/user1

user2 host1:/export/home/user2

user3 host3:/export/home/user3

间接映像可以确定/home目录是自动控制的。比如本例中,user1user2user3分别对应的本地目录是home/user1home/user2home/user3。前两项要求自动挂接器分别从服务器host1上挂接/export/home/user1目录和/export/home/user2目录。最后一项则说明/user3目录应该到host3上去挂接。

直接映像

直接映像文件也是在/etc目录下。与间接映像不同的是,它的名称是固定的,叫auto_direct文件名。下面以一个/etc/auto_direct文件内容为例。

host2# /etc/auto_direct -Direct Automount map

/opt/user1 host1:/export/home/user1

/usr/user2 host1:/export/home/user2

/user3 host3:/export/home/user3

当用户访问客户机本地目录/opt/user1/usr/user2时,所对应的目录分别是host1主机上的/export/home/user1/export/home/user2。当用户访问客户机本地目录/user3时,对应的是host3主机上的/export/home/user3目录。

主控映像

主控映像就是当autofs服务启动后,通过主控映像控制文件来决定到哪里去找直接映像和间接映像。无论是直接映像还是间接映像,都是通过主控映像文件与autofs服务建立联系的。主控映像文件在/etc目录下,名为auto_master。下面是一个主控文件的内容:

#Master map for automounter

/home auto_home

/- auto_direct

其中,/home为间接映像的目录名。/-表示为直接映像。

设置完这些控制文件后,我们再启动autofs服务,就可以实现NFS的自动挂接了。

2.自动挂接器的启动与停止

启动autofs服务:

# svcadm enable system/filesystem/autofs

关闭autofs服务:

# svcadm disable system/filesystem/autofs


TAG:

 

评分:0

我来说两句

Open Toolbar