exportfs
Section: Maintenance Commands (8)
Updated: 18 July 2003
Index
名称 (NAME)
exportfs - 管理NFS共享文件系统列表
概述 (SYNOPSIS)
/usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]
/usr/sbin/exportfs -r [-v]
/usr/sbin/exportfs [-av] -u [client:/path ..]
/usr/sbin/exportfs [-v]
/usr/sbin/exportfs -f
描述 (DESCRIPTION)
exportfs
命令用来管理当前NFS共享的文件系统列表。
这个列表保存在一个单独的文件
/var/lib/nfs/xtab
中,当远端主机要求对一个文件系统树加载并访问时由
mountd
读取,列表中活动的一部分也保存在在内核共享表中。
通常
xtab
在执行
exportfs -a.
的时候,根据
/etc/exports
中定义的共享列表来初始化。
但是,管理员可以选择添加或删除独立的文件系统,不必修改
/etc/exports
,只要执行
exportfs
就可以了。
exportfs
和它的合作者
mountd
工作在两种模式之一,一种是2.4以及早期的内核采用的传统模式,
另一种是2.6以后内核采用的模式。
2.6之后的内核提供了
nfsd
虚拟文件系统,挂载点是
/proc/fs/nfs。
在2.6内核中如果没有挂载这个系统,将使用传统模式。
在新模式中,
exportfs
不为内核提供任何信息,只通过
/var/lib/nfs/xtab
文件将信息提供给
mountd
。
mountd
将等待内核请求,提供需要的信息。
在传统模式中,任何标识了一台特定主机(而不是一个子网或是一个工作组)的
共享请求会直接进入内核共享表,同时写入
/var/lib/nfs/xtab.
甚至于,任何列在
/var/lib/nfs/rmtab
中的挂载点,只要它符合一个不指定主机的共享请求,将使得
rmtab
给出的主机的一个适当的共享条目进入内核的共享表中。
选项 (OPTIONS)
- -a
-
打开或取消所有目录共享。
- -o options,...
-
指定一列共享选项,与
exports(5)
中讲到的类似。
- -i
-
忽略
/etc/exports
文件,从而只使用默认的和命令行指定的选项。
- -r
-
重新共享所有目录。它使
/var/lib/nfs/xtab
和
/etc/exports
同步。
它将
/etc/exports
中已删除的条目从
/var/lib/nfs/xtab
中删除,将内核共享表中任何不再有效的条目移除。
- -u
-
取消一个或多个目录的共享。
- -f
-
在“新”模式下,刷新内核共享表之外的任何东西。
任何活动的客户程序将在它们的下次请求中得到
mountd
添加的新的共享条目。
- -v
-
输出详细信息。当共享或者取消共享时,显示在做什么。
显示当前共享列表的时候,同时显示共享的选项。
讨论 (DISCUSSION)
共享目录 (Exporting Directories)
第一条概述中显示出如何执行命令来添加新的共享。
当执行
exportfs -a时,
所有
exports(5)
中的目录将添加到
xtab
并且将结果列表送进内核。
host:/path
参数指定了要共享的目录和可以访问它的主机。
所有
exports(5)
中定义的格式都可以支持。
想要将一个目录共享给所有其他机器,只要用
:/path
就可以了。
这种指定一个特定主机/目录的共享选项来自于多种来源。
有一系列的默认选项,可以在
/etc/exports
中指定它们(除非指定了
-i
选项)。
另外,管理员可以使用
-o
参数和一系列以逗号分隔的选项来覆盖所有默认选项。
做法就像在
exports(5)
中一样。
因此,
exportfs
可以用来修改已经共享的目录的共享选项。
nfsd(8)
对内核共享表的修改会在命令行解析和
xtab
文件修改之后马上进行。
默认的共享选项是
sync,ro,root_squash,no_delay。
取消共享 (Unexporting Directories)
第三种语法显示了怎样取消一个当前的共享目录。
当执行
exportfs -ua,
的时候,
xtab
中的所有条目被从内核共享表中移除,
这个文件会被清空。这样可以迅速停止所有NFS服务。
要取消单独的共享条目,可以指定一个
host:/path
参数。这样删除了
xtab
中的条目并且移除了对应的内核条目(如果有的话)。
获取共享表 (Dumping the Export Table)
执行不带选项的
exportfs
将列出当前的共享列表。当给出
-v
选项时,会列出各自的标志。
范例 (EXAMPLES)
这条命令将所有
/etc/exports
中列出的目录加入到
/var/lib/nfs/xtab
中,将结果送入内核:
# exportfs -a
如果要将
/usr/tmp
目录共享给
djando主机,
允许匿名写入,应当这样:
# exportfs -o async django:/usr/tmp
依赖性 (DEPENDENCIES)
提供给IP子网,DNS和NIS域的共享不会使这些工作组中的客户程序马上就能读取NFS;
这种类型的共享其实是向
mountd(8)
提供的信息,为来自这些客户的挂载请求授权。
这通常不是一个大问题,因为重启过程中,任何存在的加载都保存在
rmtab
中。
当取消一个子网或域的共享时,当前任何提供给这个工作组中的成员的共享
将被检查。如果它们不再有效,它们将被移除。