系统管理指南:网络服务

第 5 章 网络文件系统管理(任务)

本章提供了有关如何执行设置 NFS 服务、添加要共享的新文件系统和挂载文件系统等 NFS 管理任务的信息,此外,还介绍了如何使用安全 NFS 系统和 WebNFS 功能。本章最后一部分包括疑难解答过程以及一些 NFS 错误消息及其含义的列表。

作为 NFS 管理员,您的责任取决于您的站点的要求和您的计算机在网络中的角色。您可能要负责本地网络中的所有计算机,在这种情况下您可能要负责确定以下配置项:

设置服务器后对其进行维护涉及以下任务:

请记住,计算机既可以是服务器,也可以是客户机。因此,计算机可用于与远程计算机共享本地文件系统,并挂载远程文件系统。


注 –

如果系统启用了区域并且您要在非全局区域中使用此功能,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》以了解更多信息。


自动文件系统共享

服务器通过在 NFS 环境中共享其文件系统来提供对这些文件系统的访问。可以使用 share 命令或 /etc/dfs/dfstab 文件指定要共享的文件系统。

只要启动了 NFS 服务器操作,就会自动共享 /etc/dfs/dfstab 文件中的各项。如果需要定期共享同一组文件系统,则应设置自动共享。例如,如果您的计算机是支持起始目录的服务器,则需要使起始目录随时可用。大多数文件系统共享应自动执行。仅在测试或故障排除期间才应手动执行共享。

dfstab 文件列出了服务器与其客户机共享的所有文件系统。此文件还对可以挂载文件系统的客户机进行控制。可以修改 dfstab 以添加或删除文件系统或更改进行共享的方式。只需使用受支持的任何文本编辑器(如 vi)来编辑文件即可。下次计算机进入运行级 3 时,系统会读取已更新的 dfstab,以确定应自动共享的文件系统。

dfstab 文件中的每一行都包含 share 命令,该命令与在命令行提示符下键入以共享文件系统的命令是同一命令。share 命令位于 /usr/sbin 中。

表 5–1 文件系统共享任务列表

任务 

说明 

参考 

建立自动文件系统共享 

配置服务器以便重新引导服务器时自动共享文件系统的步骤 

如何设置自动文件系统共享

启用 WebNFS 

配置服务器以便用户可使用 WebNFS 来访问文件的步骤 

如何启用 WebNFS 访问

启用 NFS 服务器日志记录 

配置服务器以便在选定的文件系统上运行 NFS 日志记录的步骤 

如何启用 NFS 服务器日志记录

Procedure如何设置自动文件系统共享

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 为要共享的每个文件系统添加项。

    编辑 /etc/dfs/dfstab。向要自动共享的每个文件系统的文件中添加一个项。各项本身在文件中必须占据一行且使用以下语法:


    share [-F nfs] [-o specific-options] [-d description] pathname

    有关 /etc/dfs/dfstab 的说明,请参见 dfstab(4) 手册页;有关完整的选项列表,请参见 share_nfs(1M) 手册页。

  3. 共享文件系统。

    项添加到 /etc/dfs/dfstab 中之后,可通过重新引导系统或使用 shareall 命令来共享文件系统。


    # shareall
    
  4. 验证信息是否正确。

    运行 share 命令以检查是否列出了正确选项:


    # share
    
    -        /export/share/man   ro   ""
    
    -        /usr/src     rw=eng   ""
    
    -        /export/ftp    ro,public  ""
另请参见

下一步是设置 autofs 映射,以便客户机可以访问已在服务器上共享的文件系统。请参见Autofs 管理的任务概述

Procedure如何启用 WebNFS 访问

从 Solaris 2.6 发行版开始,缺省情况下,可用于 NFS 挂载的所有文件系统都可自动用于 WebNFS 访问。需要使用此过程的唯一条件是以下情况之一:

有关在启动 WebNFS 服务之前应考虑问题的列表,请参见规划 WebNFS 访问

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用 WebNFS 服务向要共享的每个文件系统添加项。

    编辑 /etc/dfs/dfstab。向每个文件系统的文件中添加一个项。以下示例中显示的 publicindex 标记是可选的。


    share -F nfs -o ro,public,index=index.html /export/ftp

    有关 /etc/dfs/dfstab 的说明,请参见 dfstab(4) 手册页;有关完整的选项列表,请参见 share_nfs(1M) 手册页。

  3. 共享文件系统。

    项添加到 /etc/dfs/dfstab 中之后,可通过重新引导系统或使用 shareall 命令来共享文件系统。


    # shareall
    
  4. 验证信息是否正确。

    运行 share 命令以检查是否列出了正确选项:


    # share
    
    -        /export/share/man   ro   ""
    
    -        /usr/src     rw=eng   ""
    
    -        /export/ftp    ro,public,index=index.html  ""

Procedure如何启用 NFS 服务器日志记录

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. (可选的)更改文件系统配置设置。

    可以采用以下两种方法之一更改 /etc/nfs/nfslog.conf 中的设置。可以通过更改与 global 标记关联的数据来编辑所有文件系统的缺省设置。或者,也可以为此文件系统添加新的标记。如果不需要这些更改,则无需更改此文件。nfslog.conf(4) 中介绍了 /etc/nfs/nfslog.conf 的格式。

  3. 使用 NFS 服务器日志记录向要共享的每个文件系统中添加项。

    编辑 /etc/dfs/dfstab。向要启用 NFS 服务器日志记录的文件系统的文件添加一个项。必须在 /etc/nfs/nfslog.conf 中输入 log=tag 选项中所使用的标记。本示例使用 global 标记中的缺省设置。


    share -F nfs -o ro,log=global /export/ftp

    有关 /etc/dfs/dfstab 的说明,请参见 dfstab(4) 手册页;有关完整的选项列表,请参见 share_nfs(1M) 手册页。

  4. 共享文件系统。

    项添加到 /etc/dfs/dfstab 中之后,可通过重新引导系统或使用 shareall 命令来共享文件系统。


    # shareall
    
  5. 验证信息是否正确。

    运行 share 命令以检查是否列出了正确选项:


    # share
    
    -        /export/share/man   ro   ""
    
    -        /usr/src     rw=eng   ""
    
    -        /export/ftp    ro,log=global  ""
  6. 检查 NFS 日志守护进程 nfslogd 是否正在运行。


    # ps -ef | grep nfslogd
    
  7. (可选的)启动 nfslogd,前提是它尚未运行。

    • (可选的)如果存在 /etc/nfs/nfslogtab,请键入以下内容来启动 NFS 日志守护进程:


      # svcadm restart network/nfs/server:default
      
    • (可选的)如果不存在 /etc/nfs/nfslogtab,请运行任何 share 命令以创建该文件,然后启动守护进程。


      # shareall
      
      # svcadm restart network/nfs/server:default
      

挂载文件系统

可以采用多种方法挂载文件系统。引导系统时、根据需要使用命令行或通过自动挂载程序都可以自动挂载文件系统。自动挂载程序提供了在引导时挂载或通过命令行挂载的许多优点。但是,许多情况需要将所有这三种方法组合起来。此外,还存在多种启用或禁用进程的方法,具体取决于挂载文件系统时使用的选项。有关与文件系统挂载关联的任务的完整列表,请参见下表。

表 5–2 挂载文件系统的任务列表

任务 

说明 

参考 

在引导时挂载文件系统 

每次重新引导系统时即挂载文件系统的步骤。 

如何在引导时挂载文件系统.

使用命令挂载文件系统 

在系统正在运行时挂载文件系统的步骤。此过程在测试时非常有用。 

如何通过命令行挂载文件系统.

使用自动挂载程序挂载 

在不使用命令行的情况下即时访问文件系统的步骤。 

使用自动挂载程序挂载.

阻止大文件 

阻止在文件系统上创建大文件的步骤。 

如何在 NFS 服务器上禁用大文件.

启动客户端故障转移 

服务器出现故障时实现自动切换至工作文件系统的步骤。 

如何使用客户端故障转移.

禁用对客户机的挂载访问 

禁用某台客户机可访问远程文件系统的能力的步骤。 

如何禁用对某台客户机的挂载访问.

通过防火墙提供对文件系统的访问 

允许使用 WebNFS 协议通过防火墙对文件系统进行访问的步骤。 

如何通过防火墙挂载 NFS 文件系统.

使用 NFS URL 挂载文件系统 

允许使用 NFS URL 对文件系统进行访问的步骤。此过程允许在不使用 MOUNT 协议的情况下访问文件系统。 

如何使用 NFS URL 挂载 NFS 文件系统.

Procedure如何在引导时挂载文件系统

如果要在引导时挂载文件系统,而不使用 autofs 映射,请遵照以下过程执行操作。必须在每台应对远程文件系统具有访问权限的客户机上完成此过程。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /etc/vfstab 添加文件系统的项。

    /etc/vfstab 文件中的各项使用以下语法:

    special  fsckdev  mountp  fstype  fsckpass  mount-at-boot  mntopts

    有关更多信息,请参见 vfstab(4) 手册页。


    注意 – 注意 –

    另外还包含 NFS 客户机 vfstab 项的 NFS 服务器必须始终指定 bg 选项,以避免系统在重新引导过程中挂起。有关更多信息,请参见NFS 文件系统的 mount 选项



示例 5–1 客户机的 vfstab 文件中的项

客户机需要从服务器 wasp 挂载 /var/mail 目录。文件系统需要作为 /var/mail 挂载在客户机上,并且客户机需要具有读写访问权限。请向客户机的 vfstab 文件中添加以下项。


wasp:/var/mail - /var/mail nfs - yes rw

Procedure如何通过命令行挂载文件系统

为了测试新的挂载点,通常要通过命令行来挂载文件系统。这类挂载允许对不能通过自动挂载程序使用的文件系统进行临时访问。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 挂载文件系统。

    键入以下命令:


    # mount -F nfs -o ro bee:/export/share/local /mnt
    

    在本示例中,服务器 bee 中的 /export/share/local 文件系统挂载在本地系统的只读 /mnt 上。通过命令行进行挂载允许临时查看文件系统。可以使用 umount 或通过重新引导本地主机来取消挂载文件系统。


    注意 – 注意 –

    从 Solaris 2.6 发行版开始,mount 命令的所有版本都不会提供有关无效选项的警告。该命令将默认忽略无法解释的所有选项。要防止意外行为,请确保验证已使用的所有选项。


使用自动挂载程序挂载

Autofs 管理的任务概述包括有关使用自动挂载程序来建立和支持挂载的特定说明。在不对普通系统进行任何更改的情况下,客户机应该能够通过 /net 挂载点来访问远程文件系统。要挂载上一个示例中的 /export/share/local 文件系统,请键入以下内容:


% cd /net/bee/export/share/local

由于自动挂载程序允许所有用户挂载文件系统,因此不需要 root 访问权限。自动挂载程序还提供了文件系统的自动取消挂载,因此完成后无需取消挂载文件系统。

Procedure如何在 NFS 服务器上禁用大文件

对于支持无法处理超过 2 GB 的文件的客户机的服务器,可能需要禁用创建大文件的能力。


注 –

Solaris 2.6 发行版以前的版本不能使用大文件。如果客户机需要访问大文件,请检查 NFS 服务器的客户机是否正在运行 2.6 发行版(最低版本)。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 检查文件系统上是否不存在大文件。

    例如:


    # cd /export/home1
    
    # find . -xdev -size +2000000 -exec ls -l {} \;
    

    如果文件系统上存在大文件,则必须删除这些文件或将其移至其他文件系统。

  3. 取消挂载文件系统。


    # umount /export/home1
    
  4. 重置文件系统状态,前提是已使用 largefiles 挂载了该文件系统。

    如果文件系统上不存在大文件,则 fsck 会重置文件系统状态:


    # fsck /export/home1
    
  5. 使用 nolargefiles 挂载文件系统。


    # mount -F ufs -o nolargefiles /export/home1
    

    可以通过命令行进行挂载,但要使选项更为持久,请将类似以下内容的项添加到 /etc/vfstab 中:


    /dev/dsk/c0t3d0s1 /dev/rdsk/c0t3d0s1 /export/home1  ufs  2  yes  nolargefiles

Procedure如何使用客户端故障转移

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在 NFS 客户机上,使用 ro 选项来挂载文件系统。

    可以通过命令行、自动挂载程序或通过向 /etc/vfstab 中添加类似以下内容的项来进行挂载:


    bee,wasp:/export/share/local  -  /usr/local  nfs  -  no  ro

    自动挂载程序允许使用此语法。但是,在已挂载文件系统的同时不能进行故障转移,仅在选择了服务器时才能进行此操作。


    注 –

    不能使用命令行或 vfstab 项来混用运行不同版本NFS 协议的服务器。只能使用 autofs 来混用支持 NFS 版本 2、版本 3 或版本 4 协议的服务器。autofs 中会使用版本 2、版本 3 或版本 4 服务器中最适用的一种版本。


Procedure如何禁用对某台客户机的挂载访问

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /etc/dfs/dfstab 中添加项。

    第一个示例允许对 eng 网络组中的所有客户机进行挂载访问,但名为 rose 的主机除外。第二个示例允许对 eng.example.com DNS 域中的所有客户机进行挂载访问,但 rose 除外。


    share -F nfs -o ro=-rose:eng /export/share/man
    
    share -F nfs -o ro=-rose:.eng.example.com /export/share/man

    有关访问列表的其他信息,请参见使用 share 命令设置访问列表。有关 /etc/dfs/dfstab 的说明,请参见 dfstab(4)

  3. 共享文件系统。

    再次共享文件系统或重新引导 NFS 服务器之前,NFS 服务器不会使用对 /etc/dfs/dfstab 所做的更改。


    # shareall

Procedure如何通过防火墙挂载 NFS 文件系统

要通过防火墙访问文件系统,请使用以下过程。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 使用如下命令手动挂载文件系统:


    # mount -F nfs bee:/export/share/local /mnt
    

    在本示例中,文件系统 /export/share/local 是通过使用公共文件句柄挂载到本地客户机上的。可以使用 NFS URL 来代替标准路径名。如果服务器 bee 不支持公共文件句柄,则挂载操作将会失败。


    注 –

    此过程要求使用 public 选项来共享 NFS 服务器上的文件系统。此外,客户机与服务器之间的所有防火墙都必须允许在端口 2049 上使用 TCP 连接。从 Solaris 2.6 发行版开始,共享的所有文件系统都允许公共文件句柄访问,因此缺省情况下将应用 public 选项。


Procedure如何使用 NFS URL 挂载 NFS 文件系统

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. (可选的)如果使用的是 NFS 版本 2 或版本 3,请使用如下命令手动挂载文件系统:


    # mount -F nfs nfs://bee:3000/export/share/local /mnt
    

    在本示例中,/export/share/local 文件系统是使用 NFS 端口号 3000 从服务器 bee 中挂载的。端口号不是必需的,缺省情况下会使用标准 NFS 端口号 2049。可以选择在 NFS URL 中包括 public 选项。如果没有 public 选项,则在服务器不支持公共文件句柄的情况下会使用 MOUNT 协议。public 选项强制使用公共文件句柄,如果不支持公共文件句柄,则挂载将失败。

  3. (可选的)如果使用的是 NFS 版本 4,请使用如下命令手动挂载文件系统:


    # mount -F nfs -o vers=4 nfs://bee:3000/export/share/local /mnt
    

设置 NFS 服务

本节介绍了完成以下操作必须执行的一些任务:


注 –

从 Solaris 10 发行版开始,NFS 版本 4 为缺省版本。


表 5–3 NFS 服务的任务列表

任务 

说明 

参考 

启动 NFS 服务器 

启动 NFS 服务的步骤,前提是该服务尚未自动启动。 

如何启动 NFS 服务

停止 NFS 服务器 

停止 NFS 服务的步骤。通常无需停止该服务。 

如何停止 NFS 服务

启动自动挂载程序 

启动自动挂载程序的步骤。更改某些自动挂载程序映射时需要使用此过程。 

如何启动自动挂载程序

停止自动挂载程序 

停止自动挂载程序的步骤。更改某些自动挂载程序映射时需要使用此过程。 

如何停止自动挂载程序

在服务器上选择不同版本的 NFS 

在服务器上选择不同版本的 NFS 的步骤。如果选择不使用 NFS 版本 4,请使用此过程。 

如何在服务器上选择不同版本的 NFS

在客户机上选择不同版本的 NFS 

修改 /etc/default/nfs 文件在客户机上选择不同版本的 NFS 的步骤。如果选择不使用 NFS 版本 4,请使用此过程。

如何通过修改 /etc/default/nfs 文件在客户机上选择不同版本的 NFS

 

使用命令行在客户机上选择不同版本的 NFS 的替代步骤。如果选择不使用 NFS 版本 4,请使用此替代过程。 

如何使用命令行在客户机上选择不同版本的 NFS

Procedure如何启动 NFS 服务

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在服务器上启用 NFS 服务。

    键入以下命令。


    # svcadm enable network/nfs/server
    

    此命令可启用 NFS 服务。


    注 –

    从 Solaris 9 发行版开始,引导系统时 NFS 服务器会自动启动。此外,引导系统后,可随时通过共享 NFS 文件系统来自动启用 NFS 服务守护进程。请参见如何设置自动文件系统共享


Procedure如何停止 NFS 服务

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在服务器上禁用 NFS 服务。

    键入以下命令。


    # svcadm disable network/nfs/server
    

Procedure如何启动自动挂载程序

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 启用 autofs 守护进程。

    键入以下命令:


    # svcadm enable system/filesystem/autofs
    

Procedure如何停止自动挂载程序

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 禁用 autofs 守护进程。

    键入以下命令:


    # svcadm disable system/filesystem/autofs
    

Procedure如何在服务器上选择不同版本的 NFS

如果选择不使用 NFS 版本 4,请使用此过程。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 编辑 /etc/default/nfs 文件。

    例如,如果要使服务器仅提供版本 3,请将 NFS_SERVER_VERSMAX 和 NFS_SERVER_VERSMIN 的值都设置为 3。有关关键字及其值的列表,请参阅/etc/default/nfs 文件的关键字


    NFS_SERVER_VERSMAX=value
    
    NFS_SERVER_VERSMIN=value
    
    
    value

    提供版本号。


    注 –

    缺省情况下,将对这些行加以注释。另外,请记住删除井号 (#)。


  3. (可选的)如果要禁用服务器委托,请在 /etc/default/nfs 文件中包括以下行。


    NFS_SERVER_DELEGATION=off
    

    注 –

    在 NFS 版本 4 中,缺省情况下将启用服务器委托。有关更多信息,请参见NFS 版本 4 的委托


  4. (可选的)如果要为客户机和服务器设置公共域,请在 /etc/default/nfs 文件中包括以下行。


    NFSMAPID_DOMAIN=my.comany.com
    
    my.comany.com

    提供公共域

    有关更多信息,请参阅nfsmapid 守护进程

  5. 检查 NFS 服务是否正在服务器上运行。

    键入以下命令:


    # svcs network/nfs/server
    

    此命令将报告 NFS 服务器服务是处于联机状态还是禁用状态。

  6. (可选的)如有必要,请禁用 NFS 服务。

    如果发现在前面的步骤中 NFS 服务处于联机状态,请键入以下命令来禁用该服务。


    # svcadm disable network/nfs/server
    

    注 –

    如果需要配置 NFS 服务,请参阅如何设置自动文件系统共享


  7. 启用 NFS 服务。

    键入以下命令以启用该服务。


    # svcadm enable network/nfs/server
    
另请参见

NFS 中的版本协商

Procedure如何通过修改 /etc/default/nfs 文件在客户机上选择不同版本的 NFS

以下过程说明如何通过修改 /etc/default/nfs 文件来控制在客户机上使用的 NFS 版本。如果希望使用命令行,请参阅如何使用命令行在客户机上选择不同版本的 NFS

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 编辑 /etc/default/nfs 文件。

    例如,如果要使客户机上仅提供版本 3,请将 NFS_CLIENT_VERSMAX 和 NFS_CLIENT_VERSMIN 的值都设置为 3。有关关键字及其值的列表,请参阅/etc/default/nfs 文件的关键字


    NFS_CLIENT_VERSMAX=value
    
    NFS_CLIENT_VERSMIN=value
    
    value

    提供版本号。


    注 –

    缺省情况下,将对这些行加以注释。另外,请记住删除井号 (#)。


  3. 在客户机上挂载 NFS。

    键入以下命令:


    # mount server-name:/share-point /local-dir
    
    server-name

    提供服务器的名称。

    /share-point

    提供要共享的远程目录的路径。

    /local-dir

    提供本地挂载点的路径。

另请参见

NFS 中的版本协商

Procedure如何使用命令行在客户机上选择不同版本的 NFS

以下过程说明如何使用命令行来控制在客户机上使用的用于进行特定挂载的 NFS 版本。如果希望修改 /etc/default/nfs 文件,请参见如何通过修改 /etc/default/nfs 文件在客户机上选择不同版本的 NFS

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在客户机上挂载所需的 NFS 版本。

    键入以下命令:


    # mount -o vers=value server-name:/share-point /local-dir
    
    value

    提供版本号。

    server-name

    提供服务器的名称。

    /share-point

    提供要共享的远程目录的路径。

    /local-dir

    提供本地挂载点的路径。


    注 –

    此命令使用 NFS 协议来挂载远程目录并覆盖 /etc/default/nfs 文件中的客户机设置。


另请参见

NFS 中的版本协商

管理安全 NFS 系统

要使用安全 NFS 系统,您负责的所有计算机都必须具有域名。域是一个管理实体,通常包含多台计算机,它是大型网络的一部分。如果运行的是名称服务,则还应为域建立名称服务。请参见《System Administration Guide: Naming and Directory Services (NIS+)》

NFS 服务支持 Kerberos V5 验证。《系统管理指南:安全性服务》中的第 20  章 “Kerberos 服务介绍”介绍了 Kerberos 服务。

还可以配置安全 NFS 环境,以使用 Diffie-Hellman 验证。《系统管理指南:安全性服务》中的第 15  章 “使用验证服务(任务)”介绍了此验证服务。

Procedure如何设置使用 DH 验证的安全 NFS 环境

  1. 为域指定域名,并使域中的每台计算机都可识别该域名。

    如果使用 NIS+ 作为名称服务,请参见《System Administration Guide: Naming and Directory Services (NIS+)》

  2. 使用 newkeynisaddcred 命令为客户机用户创建公钥和私钥。使每个用户使用 chkey 命令建立其各自的安全 RPC 口令。


    注 –

    有关这些命令的信息,请参见 newkey(1M)nisaddcred(1M)chkey(1) 手册页。


    生成公钥和私钥后,公钥和加密的私钥会存储在 publickey 数据库中。

  3. 验证名称服务是否正在响应。如果运行的是 NIS+,请键入以下内容:


    # nisping -u
    
    Last updates for directory eng.acme.com. :
    
    Master server is eng-master.acme.com.
    
            Last update occurred at Mon Jun  5 11:16:10 1995
    
    
    
    Replica server is eng1-replica-replica-58.acme.com.
    
            Last Update seen was Mon Jun  5 11:16:10 1995

    如果运行的是 NIS,请验证 ypbind 守护进程是否正在运行。

  4. 验证密钥服务器的 keyserv 守护进程是否正在运行。

    键入以下命令。


    # ps -ef | grep keyserv
    
    root    100      1  16    Apr 11 ?        0:00 /usr/sbin/keyserv
    
    root   2215   2211   5  09:57:28 pts/0    0:00 grep keyserv

    如果守护进程未运行,请键入以下内容以启动密钥服务器:


    # /usr/sbin/keyserv
    
  5. 解密并存储私钥。

    通常,登录口令与网络口令相同。在这种情况下,不需要 keylogin。如果口令不同,则用户必须登录,然后运行 keylogin。您仍然需要以 root 身份使用 keylogin -r 命令将解密的私钥存储在 /etc/.rootkey 中。


    注 –

    如果 root 私钥发生更改或如果 /etc/.rootkey 丢失,则需要运行 keylogin -r


  6. 更新文件系统的挂载选项。

    对于 Diffie-Hellman 验证,请编辑 /etc/dfs/dfstab 文件并向相应项中添加 sec=dh 选项。


    share -F nfs -o sec=dh /export/home
    

    有关 /etc/dfs/dfstab 的说明,请参见 dfstab(4) 手册页。

  7. 更新文件系统的自动挂载程序映射。

    编辑 auto_master 数据,将 sec=dh 作为挂载选项包括在 Diffie-Hellman 验证的相应项中:


    /home	auto_home	-nosuid,sec=dh

    注 –

    Solaris 2.5 前后的发行版有一个限制。如果客户机未安全地挂载安全共享的文件系统,则用户有权以 nobody 身份而不是以其自身身份进行访问。对于使用版本 2 的后续发行版,如果安全模式不匹配,NFS 服务器将拒绝访问,除非 share 命令行中包括 -sec=none。如果使用版本 3,则可从 NFS 服务器中继承该模式,因此客户机无需指定 sec=dh。用户有权以其自身身份访问文件。


    重新安装、移动或升级计算机时,如果未建立新的密钥或更改了 root 的密钥,请记住保存 /etc/.rootkey。如果确实删除了 /etc/.rootkey,则可以始终键入以下内容:


    # keylogin -r
    

WebNFS 管理任务

本节提供有关管理 WebNFS 系统的说明。以下是相关任务。

表 5–4 WebNFS 管理的任务列表

任务 

说明 

参考 

规划 WebNFS 

启用 WebNFS 服务之前应考虑的问题。 

规划 WebNFS 访问

启用 WebNFS 

通过使用 WebNFS 协议来启用 NFS 文件系统挂载的步骤。 

如何启用 WebNFS 访问

启用可穿越防火墙的 WebNFS 

允许使用 WebNFS 协议穿过防火墙对文件进行访问的步骤。 

如何启用可穿越防火墙的 WebNFS 访问

使用 NFS URL 进行浏览 

有关在 Web 浏览器中使用 NFS URL 的说明。 

如何使用 NFS URL 进行浏览

在 autofs 中使用公共文件句柄 

使用自动挂载程序挂载文件系统时强制使用公共文件句柄的步骤。 

如何在 Autofs 中使用公共文件句柄

在 autofs 中使用 NFS URL 

向自动挂载程序映射添加 NFS URL 的步骤。 

如何在 Autofs 中使用 NFS URL

通过防火墙提供对文件系统的访问 

允许使用 WebNFS 协议通过防火墙对文件系统进行访问的步骤。 

如何通过防火墙挂载 NFS 文件系统

使用 NFS URL 挂载文件系统 

允许使用 NFS URL 来访问文件系统的步骤。此过程允许在不使用 MOUNT 协议的情况下访问文件系统。 

如何使用 NFS URL 挂载 NFS 文件系统

规划 WebNFS 访问

要使用 WebNFS,首先需要能够运行和装入 NFS URL(例如 nfs://server/path)的应用程序。下一步是选择可针对 WebNFS 访问导出的文件系统。如果应用程序具有 Web 浏览功能,则通常会使用 Web 服务器的文档根目录。选择要针对 WebNFS 访问导出的文件系统时,需要考虑以下几个因素。

  1. 每台服务器都有一个公共文件句柄,缺省情况下该句柄与服务器的根文件系统关联。系统将相对于与公共文件句柄关联的目录确定 NFS URL 中的路径。如果该路径指向导出的文件系统中的一个文件或目录,则服务器将提供访问权限。可以使用 share 命令的 public 选项将公共文件句柄与特定的导出的目录相关联。使用此选项可使 URL 可相对于共享文件系统,而不是相对于服务器的根文件系统。 根文件系统不允许进行 Web 访问,除非共享根文件系统。

  2. 使用 WebNFS 环境,已具有挂载权限的用户可通过浏览器访问文件。无论文件系统是否是使用 public 选项导出的,都可启用此功能。由于用户已经通过 NFS 设置拥有了访问这些文件的权限,因此这种访问不会引入任何其他安全风险。如果无法挂载文件系统的用户需要使用 WebNFS 访问权限,只需使用 public 选项来共享该文件系统即可。

  3. 对公众开放的文件系统比较适于使用 public 选项。例如,ftp 归档目录中的顶层目录或 Web 站点的主 URL 目录。

  4. 可以使用带有 index 选项的 share 命令来强制装入 HTML 文件。另外,也可以在访问 NFS URL 时列出目录。

    选定文件系统后,请检查文件并根据需要将访问权限设置为限制查看文件或目录。请根据需要,为正在共享的所有 NFS 文件系统建立权限。对于许多站点,目录的 755 种权限和文件的 644 种权限可提供正确的访问级别。

    如果要同时使用 NFS URL 和 HTTP URL 访问某个 Web 站点,则需要考虑其他因素。这些因素将在有关 Web 浏览器使用的 WebNFS 限制中加以介绍。

如何使用 NFS URL 进行浏览

支持 WebNFS 服务的浏览器应允许对以下形式的 NFS URL 进行访问:


nfs://server<:port>/path
server

文件服务器的名称

port

要使用的端口号(默认值为 2049

path

文件的路径,可以相对于公共文件句柄,也可以相对于根文件系统


注 –

在大多数浏览器中,后续事务可以记住前一个事务的 URL 服务类型(例如 nfshttp)。如果装入了包括不同服务类型的 URL,则会出现异常。使用 NFS URL 后,可能会装入对 HTTP URL 的引用。如果装入了这类引用,则后续页面将使用 HTTP 协议而不是 NFS 协议进行装入。


如何启用可穿越防火墙的 WebNFS 访问

通过将防火墙配置为允许在端口 2049 上使用 TCP 连接,可以对不属于本地子网的客户机启用 WebNFS 访问。如果仅允许 httpd 访问,则不允许使用 NFS URL。

Autofs 管理的任务概述

本节介绍在您自己的环境中可能会遇到的一些最常见任务。其中包括针对每种情况的建议过程,以帮助您配置 autofs,从而最好地满足客户机的需要。要执行本节介绍的任务,请使用 Solaris Management Console 工具或参见《System Administration Guide: Naming and Directory Services (NIS+)》


注 –

从 Solaris 10 发行版开始,还可以使用 /etc/default/autofs 文件来配置 autofs 环境。有关任务信息,请参阅使用 /etc/default/autofs 文件配置 autofs 环境


Autofs 管理的任务列表

下表提供了与 autofs 相关的许多任务的说明和链接。

表 5–5 Autofs 管理的任务列表

任务 

说明 

参考 

启动 autofs 

启动自动挂载服务而不必重新引导系统 

如何启动自动挂载程序

停止 autofs 

停止自动挂载服务而不禁用其他网络服务 

如何停止自动挂载程序

使用 /etc/default/autofs 文件配置 autofs 环境

/etc/default/autofs 文件中的关键字赋值

使用 /etc/default/autofs 文件配置 autofs 环境

使用 autofs 访问文件系统 

使用自动挂载服务访问文件系统 

使用自动挂载程序挂载

修改 autofs 映射 

修改主映射的步骤,这些步骤应该用于列出其他映射 

如何修改主映射

 

修改间接映射的步骤,这些步骤应该用于大多数映射 

如何修改间接映射

 

修改直接映射的步骤,需要在客户机上的挂载点与服务器之间建立直接关联时应该使用这些步骤 

如何修改直接映射

修改 autofs 映射以访问非 NFS 文件系统 

使用 CD-ROM 应用程序项设置 autofs 映射的步骤 

如何使用 Autofs 访问 CD-ROM 应用程序

 

使用 PC-DOS 软盘项设置 autofs 映射的步骤 

如何使用 Autofs 访问 PC-DOS 数据软盘

 

使用 autofs 访问 CacheFS 文件系统的步骤 

如何使用 CacheFS 访问 NFS 文件系统

使用 /home

如何设置公用 /home 映射的示例

设置 /home 的通用视图

 

设置引用多个文件系统的 /home 映射的步骤

如何设置包含多个起始目录文件系统的 /home

使用新的 autofs 挂载点 

设置与项目相关的 autofs 映射的步骤 

如何在 /ws 下整合与项目相关的文件

 

设置支持不同客户机体系结构的 autofs 映射的步骤 

如何设置不同的体系结构来访问共享名称空间

 

设置支持不同操作系统的 autofs 映射的步骤 

如何支持不兼容的客户机操作系统版本

使用 autofs 复制文件系统 

提供对故障转移文件系统的访问 

如何在多台服务器之间复制共享文件

在 autofs 中使用安全限制 

限制对文件的远程 root 访问时提供对文件系统的访问

如何应用 Autofs 安全限制

在 autofs 中使用公共文件句柄 

挂载文件系统时强制使用公共文件句柄 

如何在 Autofs 中使用公共文件句柄

在 autofs 中使用 NFS URL  

添加 NFS URL 以便自动挂载程序可以使用它 

如何在 Autofs 中使用 NFS URL

禁用 autofs 浏览功能 

在单台客户机上禁用浏览功能使得 autofs 挂载点不会自动装载的步骤 

如何在单台 NFS 客户机上完全禁用 Autofs 浏览功能

 

在所有客户机上禁用浏览功能使得 autofs 挂载点不会自动装载的步骤 

如何针对所有客户机禁用 Autofs 浏览功能

 

在客户机上禁用浏览功能使得特定 autofs 挂载点不会自动装载的步骤 

如何在选定的文件系统上禁用 Autofs 浏览功能

使用 /etc/default/autofs 文件配置 autofs 环境

从 Solaris 10 发行版开始,可以使用 /etc/default/autofs 文件来配置 autofs 环境。具体来说,此文件提供了另一种配置 autofs 命令和 autofs 守护进程的方法。在命令行上制定的规范也可以通过此配置文件实现。通过为关键字提供值,可以制定规范。有关更多信息,请参阅/etc/default/autofs 文件

以下过程说明如何使用 /etc/default/autofs 文件。

Procedure如何使用 /etc/default/autofs 文件

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /etc/default/autofs 文件中添加或修改项。

    例如,如果要关闭对所有 autofs 挂载点的浏览,可以添加以下行。


    AUTOMOUNTD_NOBROWSE=ON
    

    此关键字与 automountd-n 变量等效。有关关键字的列表,请参阅 /etc/default/autofs 文件

  3. 重新启动 autofs 守护进程。

    键入以下命令:


    # svcadm restart system/filesystem/autofs
    

涉及映射的管理任务

下表介绍了管理 autofs 映射时需要注意的几个因素。选择的映射和名称服务将影响对 autofs 映射进行更改时需要使用的机制。

下表介绍了映射类型及其使用。

表 5–6 autofs 映射类型及其使用

映射类型 

使用 

将目录与映射关联 

直接

将 autofs 定向至特定文件系统 

间接

将 autofs 定向至面向引用的文件系统 

下表介绍了如何对基于名称服务的 autofs 环境进行更改。

表 5–7 映射维护

名称服务 

方法 

本地文件 

文本编辑器

NIS 

make 文件

NIS+ 

nistbladm

下表提示您何时运行 automount 命令,具体取决于对映射类型已做的修改。例如,如果已添加或删除了某个直接映射,则需要在本地系统上运行 automount 命令。通过运行该命令,可使更改生效。但是,如果已修改了现有项,则无需运行 automount 命令以使更改生效。

表 5–8 何时运行 automount 命令

映射类型 

重新启动 automount

 

 

添加或删除 

修改 

auto_master

Y

Y

direct

Y

N

indirect

N

N

修改映射

以下过程要求使用 NIS+ 作为名称服务。

Procedure如何修改主映射

  1. 以具有更改映射权限的用户身份登录。

  2. 使用 nistbladm 命令,对主映射进行更改。

    请参见《System Administration Guide: Naming and Directory Services (NIS+)》

  3. 对于每台客户机,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  4. 对于每台客户机,运行 automount 命令以确保更改生效。

  5. 通知用户所做的更改。

    通知是必需的,以便用户还可以在其各自的计算机上以超级用户身份运行 automount 命令。请注意,只要运行 automount 命令,即会从主映射中收集信息。

Procedure如何修改间接映射

  1. 以具有更改映射权限的用户身份登录。

  2. 使用 nistbladm 命令,对间接映射进行更改。

    请参见《System Administration Guide: Naming and Directory Services (NIS+)》。请注意,更改将在下次使用映射时(即下次执行挂载时)生效。

Procedure如何修改直接映射

  1. 以具有更改映射权限的用户身份登录。

  2. 使用 nistbladm 命令,添加或删除对直接映射的更改。

    请参见《System Administration Guide: Naming and Directory Services (NIS+)》

  3. 如果在前面的步骤中已添加或删除了某个挂载点项,请运行 automount 命令。

  4. 通知用户所做的更改。

    通知是必需的,以便用户还可以在其各自的计算机上以超级用户身份运行 automount 命令。


    注 –

    如果仅修改或更改现有直接映射项的内容,则无需运行 automount 命令。


    例如,假定修改了 auto_direct 映射,以便从其他服务器挂载 /usr/src 目录。如果此时未挂载 /usr/src,则尝试访问 /usr/src 时新的项会立即生效。如果现在已挂载了 /usr/src,则可以等到进行自动取消挂载,然后再访问该文件。


    注 –

    请尽可能使用间接映射。间接映射更容易构造,并且对计算机文件系统的要求较少。另外,间接映射也不会像直接映射那样在挂载表中占用很多空间。


避免挂载点冲突

如果已在 /src 上挂载了本地磁盘分区并且计划使用 autofs 服务来挂载其他源目录,则可能会遇到问题。如果指定挂载点 /src,则只要尝试访问本地分区,NFS 服务便会隐藏该分区。

需要在其他某个位置(例如在 /export/src 上)挂载该分区。然后,需要在 /etc/vfstab 中添加如下项:


/dev/dsk/d0t3d0s5 /dev/rdsk/c0t3d0s5 /export/src ufs 3 yes - 

还需要在 auto_src 中添加此项:


terra		terra:/export/src 

terra 是计算机的名称。

访问非 NFS 文件系统

Autofs 还可以挂载 NFS 文件以外的其他文件。Autofs 会将文件挂载在可移除介质上,如软盘或 CD-ROM。通常,可使用卷管理器将文件挂载在可移除介质上。以下示例说明如何可以通过 autofs 完成此挂载。卷管理器和 autofs 不会同时运行,因此必须先停用卷管理器,然后才能使用这些项。

可以将介质放入驱动器并从映射中引用文件系统,而不要从服务器挂载文件系统。如果计划访问非 NFS 文件系统并且使用的是 autofs,请参见以下过程。

Procedure如何使用 Autofs 访问 CD-ROM 应用程序


注 –

如果使用卷管理器,请使用此过程。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 更新 autofs 映射。

    为 CD-ROM 文件系统添加如下项:


    hsfs     -fstype=hsfs,ro     :/dev/sr0

    要挂载的 CD-ROM 设备必须显示为冒号后跟一个名称。

Procedure如何使用 Autofs 访问 PC-DOS 数据软盘


注 –

如果使用卷管理器,请使用此过程。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 更新 autofs 映射。

    为软盘文件系统添加如下项:


     pcfs     -fstype=pcfs     :/dev/diskette

使用 CacheFS 访问 NFS 文件系统

高速缓存文件系统 (cache file system, CacheFS) 是一种普通的非易失性高速缓存机制。CacheFS 利用小而快速的本地磁盘提高了某些文件系统的性能。例如,可以使用 CacheFS 提高 NFS 环境的性能。

CacheFS 在不同版本的 NFS 上的工作方式不同。例如,如果客户机和后台文件系统运行的是 NFS 版本 2 或版本 3,则文件将在前台文件系统中进行高速缓存以便客户机访问。但是,如果客户机和服务器运行的都是 NFS 版本 4,则其功能如下:当客户机最初请求访问 CacheFS 文件系统的文件时,请求将绕过前台的(即高速缓存的)文件系统,并直接访问后台文件系统。使用 NFS 版本 4 后,文件将不再在前台文件系统中进行高速缓存。后台文件系统将提供所有文件访问权。 另外,由于前台文件系统中没有高速缓存任何文件,因此特定于 CacheFS 的挂载选项(该选项旨在影响前台文件系统)会被忽略。特定于 CacheFS 的挂载选项不适用于后台文件系统。


注 –

第一次在系统上配置 NFS 版本 4 时,控制台上将出现一条警告,指出高速缓存不再起作用。


Procedure如何使用 CacheFS 访问 NFS 文件系统

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 运行 cfsadmin 命令以在本地磁盘创建高速缓存目录。


    # cfsadmin -c /var/cache
    
  3. cachefs 项添加到相应的自动挂载程序映射中。

    例如,将此项添加到主映射中可以高速缓存所有起始目录:


    /home auto_home -fstype=cachefs,cachedir=/var/cache,backfstype=nfs

    将此项添加到 auto_home 映射中仅会高速缓存名为 rich 的用户的起始目录:


    rich -fstype=cachefs,cachedir=/var/cache,backfstype=nfs dragon:/export/home1/rich

    注 –

    随后搜索的映射中包括的选项会覆盖之前搜索的映射中设置的选项。最后找到的选项即是使用的选项。在前面的示例中,如果某些选项需要更改,则向 auto_home 映射添加其他项时只需在主映射中包括这些选项即可。


自定义自动挂载程序

可以采用多种方式设置自动挂载程序映射。以下任务给出了有关如何自定义自动挂载程序映射以提供易用目录结构的详细信息。

设置 /home 的通用视图

理想情况是,所有的网络用户均可以在 /home 下找到其各自的或任何人的起始目录。此视图应该在所有计算机(无论是客户机还是服务器)中是通用的。

每个 Solaris 安装都附带一个主映射: /etc/auto_master


# Master map for autofs

#

+auto_master

/net     -hosts     -nosuid,nobrowse

/home    auto_home  -nobrowse

另外,还会在 /etc 下安装 auto_home 的映射。


# Home directory map for autofs

#

+auto_home

但对外部 auto_home 映射的引用除外,此映射为空。如果要使 /home 下的目录对于所有计算机通用,请勿修改此 /etc/auto_home 映射。所有的起始目录项都应出现在名称服务文件 NIS 或 NIS+ 中。


注 –

不应允许用户从其起始目录运行 setuid 可执行文件。如果没有此限制,则任何用户在任何计算机上都可具有超级用户权限。


Procedure如何设置包含多个起始目录文件系统的 /home

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. /export/home 下安装起始目录分区。

    如果系统具有多个分区,请将这些分区安装在单独的目录下,例如 /export/home1/export/home2

  3. 使用 Solaris Management Console 工具创建并维护 auto_home 映射。

    每次创建新的用户帐户时,请在 auto_home 映射中键入用户起始目录的位置。映射项可以非常简单,例如:


    rusty        dragon:/export/home1/&
    
    gwenda       dragon:/export/home1/&
    
    charles      sundog:/export/home2/&
    
    rich         dragon:/export/home3/&

    请注意使用 &(和符号)替代映射关键字。和符号是以下示例中第二次出现的 rusty 的缩写。


    rusty     	dragon:/export/home1/rusty

    如果提供了 auto_home 映射,则用户可以引用路径为 /home/user 的任何起始目录(包括其本身的起始目录)。user 是它们在映射中的登录名和关键字。登录到其他用户的计算机时,所有起始目录的此通用视图非常重要。Autofs 将为您挂载起始目录。同样,如果在其他计算机上运行远程窗口系统客户机,则该客户机程序具有与 /home 目录视图相同的视图。

    此通用视图还将扩展到服务器。以前面的示例为例,如果 rusty 登录服务器 dragon,则 autofs 会通过将 /export/home1/rusty 回送挂载到 /home/rusty 上来提供对本地磁盘的直接访问。

    用户无需知道其起始目录的实际位置。如果 rusty 需要更多磁盘空间,并且需要将其起始目录重新定位到其他服务器,则简单更改就足够了。只需更改 auto_home 映射中 rusty 的项,即可反映新的位置。其他用户可以继续使用 /home/rusty 路径。

Procedure如何在 /ws 下整合与项目相关的文件

假定您是某个大型软件开发项目的管理员。您计划在名为 /ws 的目录下提供所有与项目相关的文件。此目录将在站点上的所有工作站中通用。

  1. 向站点 auto_master 映射 NIS 或 NIS+ 添加 /ws 目录的项。


    /ws     auto_ws     -nosuid 

    auto_ws 映射可确定 /ws 目录的内容。

  2. 为防万一,添加 -nosuid 选项。

    此选项可阻止用户运行任何工作区可能存在的 setuid 程序。

  3. auto_ws 映射中添加项。

    auto_ws 映射已经过组织,因此每项都能描述一个子项目。首次尝试添加时将生成如下映射:


    compiler   alpha:/export/ws/&
    
    windows    alpha:/export/ws/&
    
    files      bravo:/export/ws/&
    
    drivers    alpha:/export/ws/&
    
    man        bravo:/export/ws/&
    
    tools      delta:/export/ws/&

    每项结尾的和符号 (&) 是指该项关键字的缩写。例如,第一项与以下内容等效:


    compiler		alpha:/export/ws/compiler 

    首次尝试添加时会提供一个外观简单的映射,但该映射不适当。项目组织者决定应提供 man 项中的文档作为每个子项目下的子目录。另外,每个子项目都要求子目录描述该软件的多个版本。必须将其中的每个子目录都指定给服务器上的整个磁盘分区。

    请按如下所示修改映射中的各项:


    compiler \
    
        /vers1.0    alpha:/export/ws/&/vers1.0 \
    
        /vers2.0    bravo:/export/ws/&/vers2.0 \
    
        /man        bravo:/export/ws/&/man
    
    windows \
    
        /vers1.0    alpha:/export/ws/&/vers1.0 \
    
        /man        bravo:/export/ws/&/man
    
    files \
    
        /vers1.0    alpha:/export/ws/&/vers1.0 \
    
        /vers2.0    bravo:/export/ws/&/vers2.0 \
    
        /vers3.0    bravo:/export/ws/&/vers3.0 \
    
        /man        bravo:/export/ws/&/man
    
    drivers \
    
        /vers1.0    alpha:/export/ws/&/vers1.0 \
    
        /man        bravo:/export/ws/&/man
    
    tools \
    
        /           delta:/export/ws/&

    尽管现在映射看起来比较大,但是映射仍然仅包含五个项。由于每项都包含多个挂载,因此每项都比较大。例如,对 /ws/compiler 的引用要求挂载 vers1.0vers2.0man 三个目录。每一行结尾的反斜杠通知 autofs 该项会继续进入下一行。实际上,尽管使用了换行符和一些缩进以使该项更具可读性,但该项仍是较长的一行。tools 目录包含所有子项目的软件开发工具,因此该目录不遵循相同的子目录结构。tools 目录仍然表示单个挂载。

    这种安排为管理员提供了许多灵活性。软件项目通常会占用大量磁盘空间。在项目的整个生命周期内,可能需要重新定位并扩展各种磁盘分区。如果这些更改反映在 auto_ws 映射中,则无需通知用户,因为 /ws 下的目录分层结构未被更改。

    由于服务器 alphabravo 查看的是同一个 autofs 映射,因此登录到这些计算机的任何用户都可以找到预期的 /ws 名称空间。系统将为这些用户提供通过回送挂载(而不是 NFS 挂载)对本地文件的直接访问。

Procedure如何设置不同的体系结构来访问共享名称空间

您需要为本地可执行文件和应用程序(如电子表格应用程序和字处理软件包)汇编一个共享名称空间。此名称空间的客户机使用要求不同可执行文件格式的多个不同的工作站体系结构。另外,某些工作站运行的是不同发行版的操作系统。

  1. 使用 nistbladm 命令创建 auto_local 映射。

    请参见《System Administration Guide: Naming and Directory Services (NIS+)》

  2. 为共享名称空间选择单个站点特定名称。 此名称可使属于此空间的文件和目录易于识别。

    例如,如果选择 /usr/local 作为名称,则路径 /usr/local/bin 显然属于此名称空间。

  3. 为使用户群易于识别,请创建 autofs 间接映射。在 /usr/local 中挂载此映射。在 NIS+(或 NIS)auto_master 映射中设置以下项:


    /usr/local     auto_local     -ro

    请注意,-ro 挂载选项表明客户机不能对任何文件或目录执行写入操作。

  4. 在服务器上导出相应的目录。

  5. 在 auto_local 映射中包括 bin 项。

    目录结构如下:


     bin     aa:/export/local/bin 
  6. (可选的)要为不同体系结构的客户机提供服务,请通过添加 autofs CPU 变量来更改相应的项。


    bin     aa:/export/local/bin/$CPU 
    • 对于 SPARC 客户机-将可执行文件放入 /export/local/bin/sparc 中。

    • 对于 x86 客户机-将可执行文件放入 /export/local/bin/i386 中。

Procedure如何支持不兼容的客户机操作系统版本

  1. 将体系结构类型与确定客户机操作系统类型的变量合并。

    可以将 autofs OSREL 变量与 CPU 变量合并,以形成可同时确定 CPU 类型和 OS 发行版的名称。

  2. 创建以下映射项。


    bin     aa:/export/local/bin/$CPU$OSREL

    对于运行操作系统版本 5.6 的客户机,请导出以下文件系统:

    • 对于 SPARC 客户机-导出 /export/local/bin/sparc5.6

    • 对于 x86 客户机-将可执行文件放入 /export/local/bin/i3865.6 中。

Procedure如何在多台服务器之间复制共享文件

共享已复制的只读文件系统的最佳方法是使用故障转移。有关故障转移的说明,请参见客户端故障转移

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 修改 autofs 映射中的项。

    创建用逗号分隔的所有副本服务器的列表,如下所示:


    bin     aa,bb,cc,dd:/export/local/bin/$CPU
    

    Autofs 会选择距离最近的服务器。如果服务器具有多个网络接口,请列出每个接口。Autofs 会选择距离客户机最近的接口,从而避免路由不必要的 NFS 流量。

Procedure如何应用 Autofs 安全限制

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在名称服务 auto_master 文件 NIS 或 NIS+ 中创建以下项:


    /home     auto_home     -nosuid
    

    nosuid 选项可阻止用户创建设置了 setuidsetgid 位的文件。

    此项将覆盖普通的本地 /etc/auto_master 文件中的 /home 的项。请参见前面的示例。由于对外部名称服务映射的 +auto_master 引用出现在该文件中的 /home 项之前,因此会发生覆盖。如果 auto_home 映射中的项包括挂载选项,则会覆写 nosuid 选项。因此,在 auto_home 映射中不应使用任何选项,或是每项都必须包括 nosuid 选项。


    注 –

    请勿在服务器的 /home 上下挂载起始目录磁盘分区。


Procedure如何在 Autofs 中使用公共文件句柄

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在 autofs 映射中创建如下项:


    /usr/local     -ro,public    bee:/export/share/local

    public 选项会强制使用公共句柄。如果 NFS 服务器不支持公共文件句柄,则挂载将失败。

Procedure如何在 Autofs 中使用 NFS URL

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建如下的 autofs 项:


    /usr/local     -ro    nfs://bee/export/share/local

    服务会尝试在 NFS 服务器上使用公共文件句柄。但是,如果该服务器不支持公共文件句柄,则会使用 MOUNT 协议。

禁用 Autofs 浏览功能

从 Solaris 2.6 发行版开始,安装的默认版本的 /etc/auto_master 会向 /home/net 的项添加 -nobrowse 选项。此外,如果尚未修改 /etc/auto_master 中的 /home/net 项,则升级过程还会向这些项中添加 -nobrowse 选项。但是,可能必须手动进行这些更改,或在安装后针对站点特定的 autofs 挂载点关闭浏览功能。

可以采用多种方式关闭浏览功能。使用 automountd 守护进程的命令行选项禁用该功能,此方式可针对客户机完全禁用 autofs 浏览功能;或者使用 NIS 或 NIS+ 名称空间中的 autofs 映射针对所有客户机上的每个映射项禁用浏览功能;另外,还可以在未使用网络范围名称空间的情况下使用本地 autofs 映射,针对每台客户机上的每个映射项禁用该功能。

Procedure如何在单台 NFS 客户机上完全禁用 Autofs 浏览功能

  1. 在 NFS 客户机上成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 编辑 /etc/default/autofs 文件以包括以下关键字和值。


    AUTOMOUNTD_NOBROWSE=TRUE
  3. 重新启动 autofs 服务。


    # svcadm restart system/filesystem/autofs
    
    

Procedure如何针对所有客户机禁用 Autofs 浏览功能

要针对所有客户机禁用浏览功能,必须使用名称服务,如 NIS 或 NIS+。否则,需要手动编辑每台客户机上的自动挂载程序映射。在本示例中,/home 目录的浏览功能已禁用。必须对需要禁用的每个间接 autofs 节点遵照以下过程执行操作。

  1. 向名称服务 auto_master 文件中的 /home 项添加 -nobrowse 选项。


    /home     auto_home     -nobrowse
    
  2. 在所有客户机上运行 automount 命令。

    在客户机系统上运行 automount 命令后或重新引导后,新的行为才会生效。


    # /usr/sbin/automount
    

Procedure如何在选定的文件系统上禁用 Autofs 浏览功能

在本示例中,/net 目录的浏览功能已禁用。对于 /home 或其他任何 autofs 挂载点可以使用同一过程。

  1. 检查 /etc/nsswitch.conf 中的 automount 项。

    要使本地文件项具有较高的优先级,名称服务切换文件中的项应将 files 列在名称服务之前。例如:


    automount:  files nisplus

    此项会显示标准 Solaris 安装中的缺省配置。

  2. 检查 /etc/auto_master+auto_master 项的位置。

    除使本地文件优先于名称空间中的项以外,还必须将 +auto_master 项移至 /net 后面:


    # Master map for automounter
    
    #
    
    /net    -hosts     -nosuid
    
    /home   auto_home
    
    /xfn    -xfn
    
    +auto_master
    

    标准配置会将 +auto_master 项置于文件的顶部。此放置方式可防止使用任何本地更改。

  3. /etc/auto_master 文件中的 /net 项添加 nobrowse 选项。


    /net     -hosts     -nosuid,nobrowse
    
  4. 在所有客户机上运行 automount 命令。

    在客户机系统上运行 automount 命令后或重新引导后,新的行为才会生效。


    # /usr/sbin/automount
    

NFS 疑难解答的策略

跟踪 NFS 问题时,请记住可能出现故障的主要位置:服务器、客户机和网络。本节概括的策略会力求隔离每个单独的组件,以找到运行不正常的组件。在所有情况下,要使远程挂载成功,mountdnfsd 守护进程必须正在服务器上运行。

缺省情况下,将为所有挂载设置 -intr 选项。如果程序挂起时出现 server not responding 消息,则可以使用键盘中断组合键 Ctrl-c 中止该程序。

网络或服务器出现问题时,访问硬挂载远程文件的程序将会失败,其方式与访问软挂载远程文件的那些程序不同。硬挂载远程文件系统会导致客户机的内核在服务器再次响应之前一直重试请求。软挂载远程文件系统会导致客户机的系统调用在尝试片刻后返回错误。由于这些错误会导致意外的应用程序错误和数据损坏,因此应避免软挂载。

硬挂载文件系统时,如果服务器无法进行响应,则尝试访问该文件系统的程序将挂起。在这种情况下,NFS 系统会在控制台上显示以下消息:


NFS server hostname not responding still trying

服务器最终响应时,控制台上会出现以下消息:


NFS server hostname ok

访问软挂载文件系统(其服务器未响应)的程序会生成以下消息:


NFS operation failed for server hostname: error # (error_message)

注 –

由于可能的错误,请勿软挂载包含读写数据的文件系统或用于运行可执行文件的文件系统。如果应用程序忽略这些错误,则可写数据可能会被损坏。挂载的可执行文件可能无法正确装入,从而会失败。


NFS 疑难解答过程

要确定 NFS 服务出现故障的位置,需要遵照几个过程执行操作以隔离故障。请检查以下各项:

在检查上述各项的过程中,您可能会注意到网络的其他部分未正常运行。例如,名称服务或物理网络硬件可能未正常运行。《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》包含几个名称服务的调试过程。另外,在该过程中,您可能还会了解到问题不在客户端。例如,如果从工作区域的每个子网中至少获得了一个故障呼叫。在这种情况下,应该假定问题出在服务器上或服务器附近的网络硬件上。因此,应该在服务器而不是客户机上启动调试过程。

Procedure如何检查 NFS 客户机上的连接

  1. 检查是否可以从客户机访问 NFS 服务器。请在客户机上键入以下命令。


    % /usr/sbin/ping bee
    
    bee is alive

    如果此命令报告服务器处于活动状态,请以远程方式检查 NFS 服务器。请参见如何远程检查 NFS 服务器

  2. 如果不能从客户机访问服务器,请确保本地名称服务正在运行。

    对于 NIS+ 客户机,请键入以下内容:


    % /usr/lib/nis/nisping -u
    
    Last updates for directory eng.acme.com. :
    
    Master server is eng-master.acme.com.
    
            Last update occurred at Mon Jun  5 11:16:10 1995
    
    
    
    Replica server is eng1-replica-58.acme.com.
    
            Last Update seen was Mon Jun  5 11:16:10 1995
  3. 如果名称服务正在运行,请通过键入以下内容确保客户机已收到正确的主机信息:


    % /usr/bin/getent hosts bee
    
    129.144.83.117	bee.eng.acme.com
  4. 如果主机信息正确,但不能从该客户机访问服务器,请从其他客户机运行 ping 命令。

    如果从第二台客户机运行的命令失败,请参见如何验证服务器上的 NFS 服务

  5. 如果可以从第二台客户机访问服务器,请使用 ping 检查第一台客户机到本地网络中的其他系统的连接。

    如果此命令失败,请检查客户机上的网络软件配置,例如 /etc/netmasks/etc/nsswitch.conf

  6. (可选的)检查 rpcinfo 命令的输出。

    如果 rpcinfo 命令未显示 program 100003 version 4 ready and waiting,则服务器上未启用 NFS 版本 4。有关启用 NFS 版本 4 的信息,请参见表 5–3

  7. 如果软件正确,请检查网络硬件。

    尝试将客户机移至第二个网络断开位置。

Procedure如何远程检查 NFS 服务器

请注意,如果使用的是 NFS 版本 4 服务器,则不必同时支持 UDP 和 MOUNT 协议。

  1. 通过键入以下命令,检查 NFS 服务是否已在 NFS 服务器上启动:


    % rpcinfo -s bee|egrep 'nfs|mountd'
    
     100003  3,2    tcp,udp,tcp6,upd6                nfs     superuser
    
     100005  3,2,1  ticots,ticotsord,tcp,tcp6,ticlts,udp,upd6  mountd  superuser

    如果尚未启动守护进程,请参见如何重新启动 NFS 服务

  2. 检查服务器的 nfsd 进程是否正在响应。

    在客户机上,键入以下命令以测试来自服务器的 UDP NFS 连接。


    % /usr/bin/rpcinfo -u bee nfs
    
    program 100003 version 2 ready and waiting
    
    program 100003 version 3 ready and waiting
    

    注 –

    NFS 版本 4 不支持 UDP。


    如果服务器正在运行,则它将列显程序和版本号的列表。使用 -t 选项可以测试 TCP 连接。如果此命令失败,请前进至如何验证服务器上的 NFS 服务

  3. 通过键入以下命令,检查服务器的 mountd 是否正在响应。


    % /usr/bin/rpcinfo -u bee mountd
    
    program 100005 version 1 ready and waiting
    
    program 100005 version 2 ready and waiting
    
    program 100005 version 3 ready and waiting

    如果服务器正在运行,则它将列显与 UDP 协议关联的程序和版本号的列表。使用 -t 选项可以测试 TCP 连接。如果任一尝试失败,请前进至如何验证服务器上的 NFS 服务

  4. 检查本地 autofs 服务是否正在使用:


    % cd /net/wasp
    

    选择已知且应该正常工作的 /net/home 挂载点。如果此命令失败,请在客户机上以超级用户身份键入以下内容以重新启动 autofs 服务:


    # svcadm restart system/filesystem/autofs
    
  5. 验证是否在服务器上按照预期方式共享文件系统。


    % /usr/sbin/showmount -e bee
    
    /usr/src										eng
    
    /export/share/man						(everyone)

    请检查服务器上的项和本地挂载项中是否有错误。另外,还要检查名称空间。在本示例中,如果第一台客户机不在 eng 网络组中,则该客户机不能挂载 /usr/src 文件系统。

    请检查所有本地文件中包括挂载信息的所有项。此列表包括 /etc/vfstab 和所有的 /etc/auto_* 文件。

Procedure如何验证服务器上的 NFS 服务

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 检查服务器是否可以访问客户机。


    # ping lilac
    
    lilac is alive
  3. 如果不能从服务器访问客户机,请确保本地名称服务正在运行。对于 NIS+ 客户机,请键入以下内容:


    % /usr/lib/nis/nisping -u
    
    Last updates for directory eng.acme.com. :
    
    Master server is eng-master.acme.com.
    
            Last update occurred at Mon Jun  5 11:16:10 1995
    
    
    
    Replica server is eng1-replica-58.acme.com.
    
            Last Update seen was Mon Jun  5 11:16:10 1995
  4. 如果名称服务正在运行,请检查服务器上的网络软件配置,例如 /etc/netmasks/etc/nsswitch.conf

  5. 键入以下命令以检查 rpcbind 守护进程是否正在运行。


    # /usr/bin/rpcinfo -u localhost rpcbind
    
    program 100000 version 1 ready and waiting
    
    program 100000 version 2 ready and waiting
    
    program 100000 version 3 ready and waiting

    如果服务器正在运行,则它将列显与 UDP 协议关联的程序和版本号的列表。如果 rpcbind 似乎被挂起,请重新引导服务器,或遵照如何热启动 rpcbind中的步骤执行操作。

  6. 键入以下命令以检查 nfsd 守护进程是否正在运行。


    # rpcinfo -u localhost nfs
    
    program 100003 version 2 ready and waiting
    
    program 100003 version 3 ready and waiting
    
    # ps -ef | grep nfsd
    
    root    232      1  0  Apr 07     ?     0:01 /usr/lib/nfs/nfsd -a 16
    
    root   3127   2462  1  09:32:57  pts/3  0:00 grep nfsd

    注 –

    NFS 版本 4 不支持 UDP。


    如果服务器正在运行,则它将列显与 UDP 协议关联的程序和版本号的列表。另外,还应使用带有 -t 选项的 rpcinfo 来检查 TCP 连接。如果这些命令失败,请重新启动 NFS 服务。请参见如何重新启动 NFS 服务

  7. 键入以下命令以检查 mountd 守护进程是否正在运行。


    # /usr/bin/rpcinfo -u localhost mountd
    
    program 100005 version 1 ready and waiting
    
    program 100005 version 2 ready and waiting
    
    program 100005 version 3 ready and waiting
    
    # ps -ef | grep mountd
    
    root    145      1 0 Apr 07  ?     21:57 /usr/lib/autofs/automountd
    
    root    234      1 0 Apr 07  ?     0:04  /usr/lib/nfs/mountd
    
    root   3084 2462 1 09:30:20 pts/3  0:00  grep mountd

    如果服务器正在运行,则它将列显与 UDP 协议关联的程序和版本号的列表。另外,还应使用带有 -t 选项的 rpcinfo 来检查 TCP 连接。如果这些命令失败,请重新启动 NFS 服务。请参见如何重新启动 NFS 服务

Procedure如何重新启动 NFS 服务

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 在服务器上重新启动 NFS 服务。

    键入以下命令。


    # svcadm restart network/nfs/server
    

Procedure如何热启动 rpcbind

如果 NFS 服务器由于正在工作而无法重新引导,则可以重新启动 rpcbind,而不必重新启动使用 RPC 的所有服务。只需遵照以下步骤完成热启动即可。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 确定 rpcbind 的 PID

    运行 ps 以获取 PID,即第二列中的值。


    # ps -ef |grep rpcbind
    
        root   115     1  0   May 31 ?        0:14 /usr/sbin/rpcbind
    
        root 13000  6944  0 11:11:15 pts/3    0:00 grep rpcbind
  3. 将 SIGTERM 信号发送至 rpcbind 进程。

    在本示例中,term 是要发送的信号,115 是程序的 PID(请参见 kill(1) 手册页)。此命令会导致 rpcbind/tmp/portmap.file/tmp/rpcbind.file 中创建当前注册服务的列表。


    # kill -s term 115
    

    注 –

    如果未使用 -s term 选项中止 rpcbind 进程,则无法完成 rpcbind 的热启动。必须重新引导服务器才能恢复服务。


  4. 重新启动 rpcbind

    重新热启动该命令,以便查看通过 kill 命令创建的文件。热启动还可确保进程在无需重新启动所有 RPC 服务的情况下进行恢复。请参见 rpcbind(1M) 手册页。


    # /usr/sbin/rpcbind -w
    

识别提供 NFS 文件服务的主机

运行带有 -m 选项的 nfsstat 命令可收集当前的 NFS 信息。当前服务器的名称会列显在 “currserver=” 之后。


% nfsstat -m

/usr/local from bee,wasp:/export/share/local

 Flags: vers=3,proto=tcp,sec=sys,hard,intr,llock,link,synlink,

		acl,rsize=32768,wsize=32678,retrans=5

 Failover: noresponse=0, failover=0, remap=0, currserver=bee

Procedure如何验证用于 mount 命令的选项

在 Solaris 2.6 发行版以及 2.6 发行版之后修补的 mount 命令的任何版本中,不会针对无效选项发出警告消息。以下过程有助于确定在命令行上或通过 /etc/vfstab 提供的选项是否有效。

对于本示例,假定以下命令已运行:


# mount -F nfs -o ro,vers=2 bee:/export/share/local /mnt
  1. 通过运行以下命令来验证选项。


    % nfsstat -m
    
    /mnt from bee:/export/share/local
    
    Flags:  vers=2,proto=tcp,sec=sys,hard,intr,dynamic,acl,rsize=8192,wsize=8192,
    
            retrans=5

    bee 中的文件系统已挂载了版本设置为 2 的协议。不过,nfsstat 命令不会显示有关所有选项的信息。但是,使用 nfsstat 命令是验证选项的最准确的方法。

  2. 检查 /etc/mnttab 中的项。

    mount 命令不允许将无效选项添加到挂载表中。因此,请验证文件中列出的选项是否与命令行中列出的那些选项匹配。采用这种方式,即可检查 nfsstat 命令未报告的那些选项。


    # grep bee /etc/mnttab
    
    bee:/export/share/local /mnt nfs	ro,vers=2,dev=2b0005e 859934818

Autofs 疑难解答

有时,您可能会遇到与 autofs 有关的问题。本节将改进问题解决过程。本节分为两个小节。

本节提供了 autofs 生成的错误消息的列表。该列表分为两部分。

每条错误消息后都有说明和该消息的可能原因。

进行疑难解答时,请使用详细 (-v) 选项启动 autofs 程序。否则,可能会遇到问题却不知道原因。

以下段落标有 autofs 失败时可能出现的错误消息,以及可能问题的说明。

automount -v 生成的错误消息


bad key key in direct map mapname

描述:

扫描直接映射时,autofs 找到了不带前缀 / 的项关键字。

解决方法:

直接映射中的关键字必须是全路径名。


bad key key in indirect map mapname

描述:

扫描间接映射时,autofs 找到了包含 / 的项关键字。

解决方法:

间接映射关键字必须是简单的名称,而不是路径名。


can't mount server:pathname: reason

描述:

服务器上的挂载守护进程拒绝为 server:pathname 提供文件句柄。

解决方法:

请检查服务器上的导出表。


couldn't create mount point mountpoint: reason

描述:

Autofs 无法创建挂载所需的挂载点。尝试以分层结构挂载服务器的所有导出文件系统时,经常会出现此问题。

解决方法:

所需的挂载点只能存在于无法挂载的文件系统中,这意味着不能导出文件系统。由于导出的父文件系统以只读方式导出,因此无法创建挂载点。


leading space in map entry entry text in mapname

描述:

Autofs 在自动挂载映射中发现了包含前导空格的项。此问题通常表明不正确的连续映射项。例如:


fake

/blat   		frobz:/usr/frotz 
解决方法:

在本示例中,autofs 遇到第二行时就会生成警告,因为第一行应该以反斜杠 (\) 终止。


mapname: Not found

描述:

无法找到所需的映射。仅当使用 -v 选项时,才会产生此消息。

解决方法:

请检查映射名的拼写和路径名。


remount server:pathname on mountpoint: server not responding

描述:

Autofs 重新挂载以前已取消挂载的文件系统失败。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。


WARNING: mountpoint already mounted on

描述:

Autofs 正在尝试通过现有的挂载点进行挂载。此消息意味着 autofs 中出现了内部错误(异常)。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。

各种错误消息


dir mountpoint must start with '/'

解决方法:

自动挂载程序的挂载点必须作为全路径名提供。请检查挂载点的拼写和路径名。


hierarchical mountpoint: pathname1 and pathname2

解决方法:

Autofs 不允许其挂载点具有分层结构关系。autofs 挂载点决不能包含在其他自动挂载的文件系统中。


host server not responding

描述:

Autofs 尝试访问 server,但未收到任何响应。

解决方法:

请检查 NFS 服务器的状态。


hostname£o exports: rpc_err

描述:

hostname 获取导出列表时出现错误。此消息表明服务器或网络问题。

解决方法:

请检查 NFS 服务器的状态。


map mapname, key key: bad

描述:

该映射项格式错误,autofs 无法解释该项。

解决方法:

请重新检查该项。该项或许包含需要转义的字符。


mapnamenis_err

描述:

在 NIS 映射中查找项时出现错误。此消息可以表明 NIS 问题。

解决方法:

请检查 NIS 服务器的状态。


mount of server:pathname on mountpoint:reason

描述:

Autofs 执行挂载失败。这种情况可以表明服务器或网络问题。reason 字符串定义了该问题。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。


mountpoint: Not a directory

描述:

Autofs 无法将其本身挂载在 mountpoint 上,因为它不是一个目录。

解决方法:

请检查挂载点的拼写和路径名。


nfscast: cannot send packet: reason

描述:

Autofs 无法将查询包发送至复制文件系统位置列表中的服务器。reason 字符串定义了该问题。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。


nfscast: cannot receive reply: reason

描述:

Autofs 无法接收来自复制文件系统位置列表中的任何服务器的回复。reason 字符串定义了该问题。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。


nfscast: select: reason

描述:

所有这些错误消息都表明尝试检查服务器中的复制文件系统时出现问题。此消息可以表明网络问题。reason 字符串定义了该问题。

解决方法:

请联系 Sun 以获取帮助。此错误消息非常少见,并且没有直接的解决方法。


pathconf: no info for server:pathname

描述:

Autofs 无法获取路径名的 pathconf 信息。

解决方法:

请参见 fpathconf(2) 手册页。


pathconf: server : server not responding

描述:

Autofs 无法访问为 pathconf() 提供信息的 server 上的挂载守护进程。

解决方法:

请避免在此服务器中使用 POSIX 挂载选项。

使用 Autofs 时的其他错误

如果 /etc/auto* 文件设置了执行位,则自动挂载程序会尝试执行映射,它将创建如下消息:

/etc/auto_home: +auto_home: not found

在这种情况下,auto_home 文件具有的权限不正确。该文件中的每项都会生成与此消息类似的一条错误消息。应通过键入以下命令重置该文件的权限:


# chmod 644 /etc/auto_home

NFS 错误消息

本节显示了错误消息,后跟应会产生错误的情况说明和至少一种修正方法。


Bad argument specified with index option - must be a file

解决方法:

必须在 index 选项中指定文件名。不能使用目录名。


Cannot establish NFS service over /dev/tcp: transport setup problem

描述:

如果尚未更新名称空间中的服务信息,则通常会产生此消息。还可向 UDP 报告此消息。

解决方法:

要解决此问题,必须更新名称空间中的服务数据。对于 NIS+,各项应如下所示:


nfsd nfsd tcp 2049 NFS server daemon

nfsd nfsd udp 2049 NFS server daemon

对于 NIS 和 /etc/services,各项应如下所示:


nfsd    2049/tcp    nfs    # NFS server daemon

nfsd    2049/udp    nfs    # NFS server daemon

Cannot use index option without public option

解决方法:

在 share 命令中使用 index 选项时需同时指定 public 选项。要使 index 选项生效,必须定义公共文件句柄。


注 –

Solaris 2.5.1 发行版要求使用 share 命令来设置公共文件句柄。Solaris 2.6 发行版中已对此进行了更改,缺省情况下,公共文件句柄将被设置为 root (/)。此错误消息不再表明相关问题。



Could not start daemon: error

描述:

如果守护进程异常终止或者如果系统调用发生错误,则会显示此消息。error 字符串定义了该问题。

解决方法:

请联系 Sun 以获取帮助。此错误消息很少见,并且没有直接的解决方法。


Could not use public filehandle in request to server

描述:

如果指定了 public 选项但是 NFS 服务器不支持公共文件句柄,则会显示此消息。在这种情况下,挂载将失败。

解决方法:

要修正这种情况,可尝试在不使用公共文件句柄的情况下挂载请求,或重新配置 NFS 服务器以支持公共文件句柄。


daemon running already with pid pid

描述:

守护进程已运行。

解决方法:

如果要运行新的副本,请中止当前版本并启动新版本。


error locking lock file

描述:

如果不能正确锁定与守护进程关联的 lock file,则会显示此消息。

解决方法:

请联系 Sun 以获取帮助。此错误消息很少见,并且没有直接的解决方法。


error checking lock file: error

描述:

如果无法正常打开与守护进程关联的 lock file,则会显示此消息。

解决方法:

请联系 Sun 以获取帮助。此错误消息很少见,并且没有直接的解决方法。


NOTICE: NFS3: failing over from host1 to host2

描述:

如果发生故障转移,则控制台上会显示此消息。该消息仅作为建议。

解决方法:

不需要执行任何操作。


filename: File too large

描述:

NFS 版本 2 客户机正在尝试访问超过 2 GB 的文件。

解决方法:

请避免使用 NFS 版本 2。请使用版本 3 或版本 4 来挂载文件系统。另外,请参见NFS 文件系统的 mount 选项中的 nolargefiles 选项的说明。


mount: ... server not responding:RPC_PMAP_FAILURE - RPC_TIMED_OUT

描述:

共享尝试挂载的文件系统的服务器已关闭或无法访问、处于错误的运行级、其 rpcbind 停用或挂起。

解决方法:

等待服务器重新引导。如果服务器已挂起,请重新引导该服务器。


mount: ... server not responding: RPC_PROG_NOT_REGISTERED

描述:

已使用 rpcbind 注册了挂载请求,但是未注册 NFS 挂载守护进程 mountd

解决方法:

等待服务器重新引导。如果服务器已挂起,请重新引导该服务器。


mount: ... No such file or directory

描述:

远程目录或本地目录不存在。

解决方法:

请检查目录名的拼写。同时在两个目录中运行 ls


mount: ...: Permission denied

描述:

您的计算机名称可能不在客户机或网络组的列表中,通过该列表可对尝试挂载的文件系统进行访问。

解决方法:

请使用 showmount -e 验证该访问列表。


NFS file temporarily unavailable on the server, retrying ...

描述:

NFS 版本 4 服务器可以委托客户机管理文件。此消息表明服务器正在为与您的客户机请求冲突的其他客户机重新调用委托。

解决方法:

必须先重新调用,然后服务器才可以处理客户机请求。有关委托的更多信息,请参阅NFS 版本 4 的委托


NFS fsstat failed for server hostname:RPC: Authentication error

描述:

许多情况都会导致此错误。要调试的最困难情况之一即是由于用户属于太多组而出现此问题。目前,如果用户通过 NFS 挂载来访问文件,则它最多可以属于 16 个组。

解决方法:

同样存在另一种情况,即用户需要属于 16 个以上的组。 如果在 NFS 服务器和 NFS 客户机上运行的最低版本是 Solaris 2.5 发行版,则可以使用访问控制列表来提供所需的访问权限。


nfs mount: ignoring invalid option “-option

描述:

-option 标记无效。

解决方法:

要验证所需的语法,请参阅 mount_nfs(1M) 手册页。


注 –

如果运行的是 Solaris 2.6 发行版到当前发行版或已修补的早期版本中包括的任何版本的 mount 命令,则不会显示此错误消息。



nfs mount: NFS can't support “nolargefiles”

描述:

NFS 客户机已尝试使用 -nolargefiles 选项从 NFS 服务器挂载文件系统。

解决方法:

NFS 文件系统类型不支持此选项。


nfs mount: NFS V2 can't support “largefiles”

描述:

NFS 版本 2 协议不能处理大文件。

解决方法:

如果需要访问大文件,则必须使用版本 3 或版本 4。


NFS server hostname not responding still trying

描述:

如果程序在执行与文件相关的工作时挂起,则 NFS 服务器可能出现了故障。此消息表明 NFS 服务器 hostname 已关闭,或者服务器或网络出现了问题。

解决方法:

如果正在使用故障转移,则 hostname 是一个服务器列表。要开始疑难解答,请参见如何检查 NFS 客户机上的连接


NFS server recovering

描述:

在 NFS 版本 4 服务器重新引导过程中,一些操作不允许执行。此消息表明客户机正在等待服务器允许此操作继续进行。

解决方法:

不需要执行任何操作。请等待服务器允许执行该操作。


Permission denied

描述:

由于以下原因,ls -lgetfaclsetfacl 命令会显示此消息:

  • 如果 NFS 版本 4 服务器上的访问控制列表 (access control list, ACL) 项中存在的用户或组不能映射为 NFS 版本 4 客户机上的有效用户或组,则不允许该用户读取客户机上的 ACL。

  • 如果 NFS 版本 4 客户机上设置的 ACL 项中存在的用户或组不能映射为 NFS 版本 4 服务器上的有效用户或组,则不允许该用户写入或修改客户机上的 ACL。

  • 如果 NFS 版本 4 客户机和服务器的 NFSMAPID_DOMAIN 值不匹配,则 ID 映射将失败。

有关更多信息,请参见NFS 版本 4 中的 ACL 和 nfsmapid

解决方法:

请执行以下操作:

  • 确保 ACL 项中的所有用户和组 ID 都存在于客户机和服务器上。

  • 确保在 /etc/default/nfs 文件中正确设置了 NFSMAPID_DOMAIN 的值。有关更多信息,请参见/etc/default/nfs 文件的关键字

要确定是否无法在服务器或客户机上映射任何用户或组,请使用检查未映射的用户 ID 或组 ID中提供的脚本。


port number in nfs URL not the same as port number in port option

描述:

NFS URL 中包括的端口号必须与 -port 选项包括的端口号匹配才能进行挂载。如果端口号不匹配,则挂载将失败。

解决方法:

更改命令以使端口号相同,或者不要指定不正确的端口号。 通常,无需同时使用 NFS URL 和 -port 选项来指定端口号。


replicas must have the same version

描述:

要使 NFS 故障转移正常运行,作为副本的 NFS 服务器必须支持同一版本的 NFS 协议。

解决方法:

不允许运行多个版本。


replicated mounts must be read-only

描述:

NFS 故障转移在以读写方式挂载的文件系统上不能正常工作。以读写方式挂载文件系统会增加文件更改的可能性。

解决方法:

NFS 故障转移取决于文件系统是否相同。


replicated mounts must not be soft

描述:

复制的挂载要求等到超时后再进行故障转移。

解决方法:

soft 选项要求超时开始时挂载即失败,因此不能对复制的挂载使用 -soft 选项。


share_nfs: Cannot share more than one filesystem with 'public' option

解决方法:

确保 /etc/dfs/dfstab 文件中只对一个文件系统使用了 -public 选项来共享。每台服务器上只能建立一个公共文件句柄,因此使用此选项在每台服务器上只能共享一个文件系统。


WARNING: No network locking on hostname:path: contact admin to install server change

描述:

NFS 客户机未能成功尝试与 NFS 服务器上的网络锁定管理器建立连接。生成此警告旨在提醒您锁定不起作用,而不是表明挂载失败。

解决方法:

请使用提供完全锁定管理器支持的新版本的 OS 来升级服务器。