在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

排除 ZFS 文件系统共享问题

检查以下共享错误情况:

  • 新共享或之前的共享未共享

    • 确认池和文件系统版本为新版本-如果通过设置 share.nfsshare.smb 属性未共享新共享,则确认池版本是否为 34,文件系统版本是否为 6。

    • 在 NFS 服务启动前共享必须已存在-在共享文件系统后 NFS 服务器服务才会运行。首先创建 NFS 共享,然后尝试远程访问共享。

    • 升级了存在共享的系统,但共享不可用-升级了存在共享的系统,但是尝试重新共享这些共享时失败。这些共享无法共享,因为禁用了 share.auto 属性。如果 share.auto 设置为 off,则只能使用命名共享,以强制与早期的共享语法兼容。现有共享可能类似于:

      # zfs get share
      NAME                        PROPERTY  VALUE  SOURCE
      tank/data                   share     name=data,path=/tank/data,prot=nfs  local
    1. 确保启用了 share.auto 属性。如果未启用,启用该属性。

      # zfs get -r share.auto tank/data
      # zfs set share.auto=on tank/data
    2. 重新共享文件系统。

      # zfs set -r share.nfs=on tank/data
    3. 您可能还需要删除命名共享,然后重新创建,这样前面的命令才能成功运行。

      # zfs list -t share -Ho name -r tank/data | xargs -n1 zfs destroy
    4. 如果必要,重新创建命名共享。

      # zfs create -o share.nfs=on tank/data%share
  • 快照中未包含包括命名共享的共享属性-在 zfs clonezfs send 操作中,共享属性和 .zfs/shares 文件的处理方式不同。.zfs/shares 文件包含在快照中并保留在 zfs clonezfs send 操作。有关 zfs sendzfs receive 操作期间的属性行为的说明,请参见向 ZFS 快照流应用不同的属性值。完成克隆操作之后,所有文件均来自上一克隆快照,而属性将继承自克隆在 ZFS 文件系统分层结构中的新位置。

  • 命名共享请求失败-如果创建命名共享的请求由于此共享与自动共享冲突而失败,则可能需要禁用 auto.share 属性。

  • 存在共享的池之前已导出-如果以只读方式导入池,则该池的属性和文件都无法修改,因此创建新共享会失败。如果在导出池之前存在共享,则可以使用现有共享特征(如果可能)。

下表列出了已知共享状态以及解决它们的方式(如果需要)。

共享状态
说明
解决方法
INVALID
共享无效,因为它内部不一致或者与其他共享冲突。
尝试使用以下命令重新共享无效共享:
# zfs share FS%share
使用以下命令会显示有关共享的哪个部分未通过验证的错误消息。先更正此错误,然后重试此共享。
SHARED
共享处于共享状态。
无需执行任何操作。
UNSHARED
共享有效但已取消共享。
使用 zfs share 命令重新共享单个共享或父文件系统。
UNVALIDATED
共享尚无效。包含此共享的文件系统可能未处于可共享状态。例如,它未挂载或已委托给当前区域之外的某个区域。或者,表示所需共享的 ZFS 属性已创建,但尚未证实为合法共享。
使用 zfs share 命令重新共享单个共享或父文件系统。如果文件系统本身可共享,则尝试重新共享要么成功共享(并将状态转换为 "SHARED"(已共享)),要么不能共享(并将状态转换为 "INVALID"(无效))。或者,您可以使用 share –A 命令列出所有已挂载文件系统的所有共享。这将导致将已挂载文件系统中的所有共享解析为 "UNSHARED"(独享)(有效但尚未共享)或 "INVALID"(无效)。