如何避免为多个用户通过 NFS 导出长长的 ZFS 挂载点列表?

如何避免为多个用户通过 NFS 导出长长的 ZFS 挂载点列表?

我们正在运行一个集群,其中大约有 50 个用户组被映射为 Linux 组。每个组都有一个从 ZFS 存储服务器分配的文件系统,该文件系统通过 NFS 导出。这会产生一个很长的挂载点列表,这些挂载点需要通过 NFS 客户端节点挂载。同样,的输出df -h也很长,列出了每个用户组的所有挂载点。有没有办法通过某种方式重组或重新配置 ZFS 服务器来避免这种情况,同时仍然有效地管理用户组,例如配额、访问权限等。

以下是命令的部分输出zfs list

~]# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
intp1               43.7G  47.9T   219K  /zfs/1
intp1/sam           43.7G  47.9T   219K  /zfs/1/sam
intp1/harry         219K  4.00T   219K  /zfs/1/harry
intp1/rick          219K  4.00T   219K  /zfs/1/rick
intp1/kim           43.7G  3.96T  43.7G  /zfs/1/kim
intp2                252G  47.7T   252G  /zfs/2
intp2/johnson       219K  8.00T   219K  /zfs/2/johnson
intp2/hoekstra        219K  8.00T   219K  /zfs/2/hoekstra

zfs get all下面显示的是一个文件系统的命令的输出:

# zfs get all intp1/sam
NAME       PROPERTY              VALUE                  SOURCE
intp1/sam  type                  filesystem             -
intp1/sam  creation              Fri Sep 23  9:56 2016  -
intp1/sam  used                  43.7G                  -
intp1/sam  available             47.9T                  -
intp1/sam  referenced            219K                   -
intp1/sam  compressratio         5.42x                  -
intp1/sam  mounted               yes                    -
intp1/sam  quota                 none                   default
intp1/sam  reservation           none                   default
intp1/sam  recordsize            128K                   default
intp1/sam  mountpoint            /zfs/1/sam             inherited from intp1
intp1/sam  sharenfs              on                     inherited from intp1
intp1/sam  checksum              on                     default
intp1/sam  compression           lz4                    inherited from intp1
intp1/sam  atime                 on                     default
intp1/sam  devices               on                     default
intp1/sam  exec                  on                     default
intp1/sam  setuid                on                     default
intp1/sam  readonly              off                    default
intp1/sam  zoned                 off                    default
intp1/sam  snapdir               hidden                 default
intp1/sam  aclinherit            restricted             default
intp1/sam  canmount              on                     default
intp1/sam  xattr                 on                     default
intp1/sam  copies                1                      default
intp1/sam  version               5                      -
intp1/sam  utf8only              off                    -
intp1/sam  normalization         none                   -
intp1/sam  casesensitivity       sensitive              -
intp1/sam  vscan                 off                    default
intp1/sam  nbmand                off                    default
intp1/sam  sharesmb              off                    default
intp1/sam  refquota              none                   default
intp1/sam  refreservation        none                   default
intp1/sam  primarycache          all                    default
intp1/sam  secondarycache        all                    default
intp1/sam  usedbysnapshots       0                      -
intp1/sam  usedbydataset         219K                   -
intp1/sam  usedbychildren        43.7G                  -
intp1/sam  usedbyrefreservation  0                      -
intp1/sam  logbias               latency                default
intp1/sam  dedup                 off                    default
intp1/sam  mlslabel              none                   default
intp1/sam  sync                  standard               default
intp1/sam  refcompressratio      1.00x                  -
intp1/sam  written               219K                   -
intp1/sam  logicalused           198G                   -
intp1/sam  logicalreferenced     40K                    -
intp1/sam  filesystem_limit      none                   default
intp1/sam  snapshot_limit        none                   default
intp1/sam  filesystem_count      none                   default
intp1/sam  snapshot_count        none                   default
intp1/sam  snapdev               hidden                 default
intp1/sam  acltype               off                    default
intp1/sam  context               none                   default
intp1/sam  fscontext             none                   default
intp1/sam  defcontext            none                   default
intp1/sam  rootcontext           none                   default
intp1/sam  relatime              off                    default
intp1/sam  redundant_metadata    all                    default
intp1/sam  overlay               off                    default

答案1

crossmnt我为此使用NFS 导出选项。

例如:

/home *(rw,crossmnt,sec=krb5:krb5i:krb5p)

exports(5)手册页中:

此选项类似于,nohide但它使客户端能够访问挂载在标有 的文件系统上的所有文件系统crossmnt。因此,当子文件系统“B”挂载在父文件系统“A”上时,crossmnt在“A”上设置与在 B 上设置“nohide”具有类似的效果。

nohide 文件系统需要显式导出。 不需要crossmnt。 如果crossmnt未显式导出文件的子文件系统,则将使用与父文件系统相同的导出选项隐式导出,但 除外fsid=。 这使得无法不导出crossmnt 文件系统的子文件系统。 如果要导出父文件系统的部分(但不是全部)下属文件系统,则必须显式导出它们,并且不应设置父文件系统crossmnt

相关内容