「exportfs(8)」-

维护导出的NFS文件系统表

命令语法格式

/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

/usr/sbin/exportfs -s

命令描述

一个NFS服务器维护一个表,该表的内容为NFS客户端可访问的本地物理文件系统。此表中的每个文件系统都称为“导出文件系统”或简称“导出(export)”。

命令exportfs维护NFS服务器的当前导出表。主导出表保存在名为/var/lib/nfs/etab的文件中。当客户端发送NFS MOUNT请求时,rpc.mountd将读取此文件。

通常,通过调用exportfs -a命令,使用/etc/exports.d/下的和/etc/exports文件的内容初始化主导出表。但是,系统管理员可以使用exportfs命令选择添加或删除导出,而无需修改/etc/exports.d/和/etc/exports文件。

命令exportfs及其合作程序rpc.mountd以两种模式之一工作:适用于2.4及更早版本Linux内核的传统模式;适用于2.6及更高版本的新模式,提供nfsd虚拟文件系统已挂载在/proc/fs/nfsd/或/proc/fs/nfs/上。在2.6内核上,如果未安装此文件系统,则使用传统模式。

在新模式下,exportfs不向内核提供任何信息,但仅通过/var/lib/nfs/etab文件将其提供给rpc.mountd服务。然后rpc.mountd根据需要,管理有关导出信息的内核请求。

在传统模式下,标识特定主机而非子网或网络组的导出将直接输入到内核的导出表中,并写入/var/lib/nfs/etab。此外,/var/lib/nfs/rmtab中列出的与非特定于主机的导出请求匹配的导出将导致将rmtab中给出的主机的相应导出条目添加到内核的导出表中。

命令支持的选项及含义

-s
显示适用于/etc/exports的当前导出列表。

-a
导出或取消导出所有目录。

-r
重新导出所有目录,将/var/lib/nfs/etab与/etc/exports和/etc/exports.d/进行同步。 此选项删除/var/lib/nfs/etab中已从/etc/exports或/etc/exports.d下的文件中删除的条目,并从内核导出表中删除不再有效的任何条目。

-u
取消导出一个或多个目录。

-d kind, –debug kind
打开调试。 有效的kind有:all,auth,call,general,parse。

-o options,…
以与exports(5)中相同的方式,指定导出选项列表。

-i
忽略/etc/exports.d/和/etc/exports文件。 仅使用命令行上给出的默认选项和选项。

-f
如果挂载了/proc/fs/nfsd或/proc/fs/nfs,则从内核的导出表中清除所有内容。当rpc.mountd发出下一个NFS挂载请求时,活动客户端的新条目将添加到内核的导出表中。

-v
详细模式。导出或导出时,显示正在发生的事情。 显示当前导出列表时,还会显示导出选项列表。

注意事项

导出目录(Exporting Directories)

第一个概要说明了在向导出表添加新条目时如何调用exportfs。 使用exportfs -a时,/etc/exports中列出的所有导出和/etc/exports.d/下的文件都将添加到/var/lib/nfs/etab中。 内核的导出表也会根据需要进行更新。

参数host:/path指定要导出的本地目录,以及允许访问它的客户端。有关支持的选项和访问列表格式的说明,请参阅exports(5)。

由于IPv6表示地址包含冒号,这些冒号已用于分隔“host”和“path”命令行参数。使用原始IPv6地址指定客户端时,请将地址括在方括号中。对于IPv6网络地址,请将前缀放在右括号之后。

要将目录导出给所有人,只需指定:/path

特定主机/目录对的导出选项来自多个源。 默认导出选项是sync,ro,root_squash,wdelay。 这些可以被/etc/exports中的条目或/etc/exports.d/下的文件覆盖。

系统管理员可以使用exportfs上的-o命令行选项覆盖这些源中的选项。 此选项采用逗号分隔的选项列表,其方式与在/etc/exports中指定的选项相同。 这样,exportfs可用于修改已导出目录的导出选项。

取消目录导出(Unexporting Directories)

第三个概要显示了如何取消导出当前导出的目录。 使用exportfs -ua时,将从内核导出表中删除/var/lib/nfs/etab中列出的所有条目,并清除该文件。 这有效地关闭了所有NFS活动。

要删除导出,请指定host:/path对。 这将从/var/lib/nfs/etab中删除指定的条目,并删除相应的内核条目(如果有)。

转储导出表(Dumping the Export Table)

调用不带选项的exportfs会显示导出的文件系统的当前列表。 添加-v选项会导致exportfs显示每个导出的导出选项。

使用说明(USAGE NOTES)

导出到“IP网络”或“DNS和NIS域”不会使这些组中的客户端立即访问NFS。 相反,这些类型的导出是rpc.mountd(8)的提示,以授予来自这些客户端的任何挂载请求。 这通常不是问题,因为任何现有的挂载都会在重新启动时保留在rmtab中。

在取消导出网络或域条目时,将针对剩余的有效导出检查对该组成员的任何当前导出,如果它们本身不再有效,则将删除它们。

相关文件

/etc/exports
列出导出、导出选项、访问控制列表的输入文件

/etc/exports.d
存储额外输入文件的目录。注意:仅使用以.exports结尾的文件。

/var/lib/nfs/etab
主导出表。

/var/lib/nfs/rmtab
访问NFS导出的客户端表

使用示例

下面将/etc/exports中列出的所有目录和/etc/exports.d下的文件添加到/var/lib/nfs/etab中,并将生成的导出条目推送到内核中:

# exportfs -a

要将/usr/tmp目录导出到主机django,允许来自客户端的不安全文件锁定请求:

# exportfs -o insecure_locks django:/usr/tmp

要取消导出/usr/tmp目录:

# exportfs -u django:/usr/tmp

要取消导出/etc/exports中列出的所有导出和/etc/exports.d下的文件:

# exportfs -au

要将/usr/tmp目录导出到IPv6链接本地客户端:

# exportfs [fe80::]/64:/usr/tmp

如上示例。

相关手册

exports(5), rpc.mountd(8), netgroup(5)

参考文献

  • man 8 exportfs, Version 11.3.4-2.2

更新日志

  • 10/11/2018 创建文章