分类: LINUX
2008-05-04 21:29:53
网络文件系统(NFS)是一种在网络上的机器间共享文件的方法,文件就如同位于客户的本地硬盘驱动器上一样。GTES 11既可以是NFS服务器也可以是NFS客户,这意味着它可以把文件系统导出给其它系统,也可以挂载从其它机器上导入的文件系统。
NFS对于在同一网络上的多个用户间共享目录很有用途。譬如,一组致力于同一工程项目的用户可以通过使用NFS文件系统(通常被称作NFS共享)中的一个挂载为/myproject 的共享目录来存取该工程项目的文件。要存取共享的文件,用户进入各自机器上的/myproject 目录。这种方法既不用输入口令又不用记忆特殊命令,就仿佛该目录位于用户的本地机器上一样。
使用mount命令来挂载另一个机器上的 NFS 文件系统:
#mount shadowman.example.com:/misc/export /misc/local
在这项命令中,shadowman.example.com是NFS文件服务器的主机名;/misc/export是shadowman要导出的文件系统;/misc/local是该文件系统在本地机器上的挂载位置。mount命令运行之后(而且如果客户具有来自shadowman.example.com NFS服务器的正确权限的话),客户用户就可以执行ls /misc/local命令来显示shadowman.example.com上的/misc/export目录中的文件列表。
要挂载其它机器上的NFS共享的另一种方法是在/etc/fstab文件中添加一行。这一行中必须声明 NFS 服务器的主机名,要导出的目录,以及要挂载NFS共享的本地机器目录。你必须是根用户才能修改/etc/fstab文件。 /etc/fstab 中每行的一般语法如下所示:
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr
挂载点/pub在客户机器上必须存在。在客户系统的/etc/fstab文件中把这一行添加完毕后,在shell提示下键入命令mount /pub,即可自动将NFS server的/usr/local/pub目录挂载到本地的/pub下。
挂载NFS共享的第三种方法是使用autofs。autofs使用automount守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。autofs咨询主映射配置文件/etc/auto.master来决定要定义哪些挂载点。然后,它使用适用于各个挂载点的参数来启动automount进程。主映射配置中的每一行都定义一个挂载点,一个分开的映射文件定义在该挂载点下要挂载的文件系统。譬如,/etc/auto.misc文件可能会定义/misc目录中的挂载点;这种关系在/etc/auto.master 文件中会被定义。 auto.master文件中的每个项目都有三个字段。第一个字段是挂载点;第二个字段是映射文件的位置;第三个字段可选。第三个字段可以包括超时数值之类的信息。譬如,要在你的机器上的/misc/myproject挂载点上挂载远程机器penguin.example.net上的/project52目录,在auto.master文件中添加以下行:
/misc /etc/auto.misc --timeout 60
在/etc/auto.misc文件中添加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52
/etc/auto.misc中的第一个字段是/misc子目录的名称。该目录被automount动态地创建,它不应该在客户机器上实际存在。第二个字段包括挂载选项,如:rw代表读写访问权。第三个字段是要导出的NFS的位置,包括主机名和目录。
autofs是一个网络服务。要启动这项服务,在shell提示下,键入以下命令:
/sbin/service autofs restart
要查看活跃的挂载点,在 shell 提示下键入以下命令:
/sbin/service autofs status
如果你在autofs运行时修改了/etc/auto.master配置文件,你必须在shell提示下键入以下命令来通知automount守护进程重新载入配置文件:
/sbin/service autofs reload
NFS的默认传输协议是UDP;然而,GTES11内核提供了对通过TCP的NFS的支持。要通过TCP来使用NFS,在客户系统上挂载NFS导出的文件系统时,包括一个-o tcp选项。例如:
#mount -o tcp shadowman.example.com:/misc/export /misc/local
如果NFS挂载在/etc/fstab中被指定:
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr,tcp
如果它在 autofs 配置文件中被指定:
myproject -rw,soft,intr,rsize=8192,wsize=8192,tcp penguin.example.net:/proj52
由于默认协议是UDP,如果没有指定-o tcp选项,NFS导出的文件系统就会通过UDP来进入。 使用TCP的优越性包括:
• 被提高了的连接持久性,因此获得的NFS stale file handles消息就会较少。
• 载量较大的网络的性能会有所提高。因为TCP确认每个分组,不像UDP只在完成时才确认。
• TCP的拥塞控制技术比UDP要好(UDP根本没有)。在一个拥塞情况严重的网络上,UDP分组是被首先撤消的类型。这意味着,如果NFS正在写入数据(单元为8K的块),所有这8K数据都需要被重新传输。由于TCP的可靠性,8K中只有一部分需要重新传输。
• 错误检测。当tcp连接中断(由于服务器停运),客户就会停止发送数据而开始进行重新连接。UDP是无连接的,使用它的客户就会继续给网络发生数据直到服务器重新上线为止。
主要的不利因素是,由于TCP协议的花销,在性能方面的提高并不显著。
GTES 11内核为ext3文件系统和使用NFS或Samba协议挂载的ext3文件系统提供了ACL支持。这样,如果某个ext3文件系统启用了ACL,而且被NFS导出了,如果NFS客户能够读取ACL,它们就能够被NFS客户使用。
从NFS服务器中共享文件又称导出目录。NFS服务器配置工具可以用来把系统配置成NFS服务器。 要使用NFS服务器配置工具,你必须运行X窗口系统,具备根特权,并且安装了system-config-nfs RPM软件包。要启动这个程序,点击面板上的“系统 -> 管理 -> 服务器设置 -> NFS”,或键入 system-config-nfs 命令。
图 3-15 NFS 服务器配置工具
要添加NFS共享,点击“添加”按钮。如图3-16所示的对话框会出现。
“基本”活页标签要求以下信息:
• 目录— 指定要共享的目录,如 /tmp。 • 主机 — 指定要共享目录的主机。 • 基本权限 — 指定目录应该有只读权限还是读写权限。
图3-16添加共享
“一般选项”活页标签允许你配置以下选项:
• 允许来自高于1024的端口的连接 — 在号码小于1024的端口上启动的服务必须以根用户身份启动。选择这个选项来允许根用户以外的用户来启动NFS服务。该选项和 insecure 相对应。 • 允许锁定不安全的文件 — 不需要锁定请求。该选项和insecure_locks相对应。 • 禁用子树校验 — 如果某文件系统的子目录被导出,但是整个文件系统没有被导出,服务器会检查所请求的文件是否在导出的子目录中。这种检查叫做子树检查(subtree checking)。选择这个选项来禁用子树检查。如果整个文件系统被导出,选择禁用子树检查可以提高传输率。该选项和 no_subtree_check 相对应。 • 按要求同步写操作 — 默认被启用,该选项不允许服务器在请求被写入磁盘前回复这些请求。该选项和sync相对应。如果它没有被选择,async选项会被使用。 • 立即强制同步写操作 — 不推迟写入磁盘的操作。该选项和no_wdelay 相对应。
“用户访问”活页标签允许你配置以下选项:
• 把远程根用户当作本地根用户 — 按照默认设置,根用户的用户ID和组群ID都是0。根权限压缩(Root squashing)把用户ID 0和组群ID 0映射为匿名的用户和组群ID,因此客户上的根用户就不会在 NFS 服务器上具备根特权。如果这个选项被选,根用户就不会被映射为匿名用户,客户上的根用户就会对导出的目录拥有根特权。选择这个选项会大大降低系统的安全 性。除非绝对必要,请不要选择它。该选项和no_root_squash 相对应。 • 把所有客户用户当作匿名用户 — 如果该选项被选,所有用户和组群ID都会被映射为匿名用户。该选项和all_squash 相对应。 • 为匿名用户指定本地用户 ID — 如果“把所有客户用户当作匿名用户”被选,这个选项会让你为匿名用户指定一个用户ID。该选项和 corresponds to anonuid相对应。 • 为匿名用户指定本地组群ID — 如果“把所有客户用户当作匿名用户”被选,这个选项会让你为匿名用户指定一个组群ID。该选项和 corresponds to anongid相对应。
要编辑NFS共享,从列表中选择它,然后点击“属性”按钮。要删除某个现存NFS共享,从列表中选择它,然后点击“删除”按钮。 点击了“确定”来从列表中添加、编辑、或删除某个NFS共享后,改变就会立即生效—服务器守护进程被重新启动,原有的配置文件被保存为/etc/exports.bak。新的配置文件被写入/etc/exports。NFS服务器配置工具直接读写/etc/exports配置文件。因此,这个文件在使用该工具后可以被手工修改;手工修改了该文件后也可以使用这个工具(假定手工修改时使用了正确的语法)。
如果你更喜欢使用文本编辑器来编辑配置文件或者你没有安装X窗口系统,你可以直接修改配置文件。
/etc/exports文件控制NFS服务器要导出哪些目录。它的格式如下:
directory hostname(options)
唯一需要指定的选项是sync和async之一(建议使用sync is recommended)。如果指定了sync,服务器在请求所做的改变被写入磁盘之前就不会回复这些请求。例如:
/misc/export speedy.example.com(sync)
会允许来自speedy.example.com的用户使用默认的只读权限来挂载/misc/export,但是:
/misc/export speedy.example.com(rw,sync)
将会允许来自speedy.example.com的用户使用读写权限来挂载/misc/export。
在你每次改变 /etc/exports 的时候,你必须把改变通知给NFS守护进程,或使用以下命令来重新载入配置文件:
/sbin/service nfs reload
主机可以使用以下格式:
• 单个机器 — 一个全限定域名(能够被服务器解析的),主机名(能够被服务器解析的)或IP地址。
• 使用通配符来指定的机器系列 — 使用 * 或 ? 字符来指定一个字符串匹配。IP地址中不使用通配符;不过如果反向DNS查询失败,它们可能会碰巧有用。在完整域名中指定通配符时,点(.)不包括在通配符中。例如:*.example.com包括one.example.com,但不包括one.two.example.com。
• IP网络 — 使用a.b.c.d/z,这里的a.b.c.d是网络,z是子网掩码中的位数(如 192.168.0.0/24)。另一种可以接受的格式是a.b.c.d/netmask,这里的a.b.c.d是网络,netmask是子网掩码(如 192.168.100.8/255.255.255.0)。
• Netgroups — 格式为@group-name,这里的group-name是NIS netgroup的名称。
在导出NFS文件系统的服务器上,nfs服务必须在运行。
• 使用以下命令来查看NFS守护进程的状态:
#/sbin/service nfs status
• 使用以下命令来启动NFS守护进程:
#/sbin/service nfs start
• 使用以下命令来停止NFS守护进程:
#/sbin/service nfs stop
• 要在引导时启动nfs服务,使用以下命令:
#/sbin/chkconfig --level 345 nfs on
你还可以使用chkconfig、ntsysv或服务配置工具来配置要在引导时启动哪些服务。