Назад | Перейти на главную страницу

Как избежать длинного списка точек монтирования для экспорта ZFS через NFS для нескольких пользователей?

Мы запускаем кластер примерно для 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

Я использую crossmnt Опция экспорта NFS для этого.

Например:

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

Из exports(5) страница руководства:

Этот вариант похож на nohide но это позволяет клиентам получить доступ ко всем файловым системам, смонтированным в файловой системе, отмеченной crossmnt. Таким образом, когда дочерняя файловая система «B» монтируется на родительской «A», установка crossmnt на «A» имеет тот же эффект, что и установка «nohide» на B.

С участием nohide дочерняя файловая система должна быть экспортирована явно. С участием crossmnt это не нужно. Если ребенок crossmnt файл не экспортируется явно, то он будет неявно экспортирован с теми же параметрами экспорта, что и родительский, за исключением fsid=. Это делает невозможным экспорт дочернего элемента crossmnt файловая система. Если некоторые, но не все подчиненные файловые системы родительского элемента должны быть экспортированы, то они должны быть экспортированы явно, и родительский элемент не должен иметь crossmnt устанавливать.