Мы запускаем кластер примерно для 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 export.
Например:
/home *(rw,crossmnt,sec=krb5:krb5i:krb5p)
Из справочной страницы exports (5)
:
Эта опция похожа на
nohide
, но позволяет клиентам получить доступ ко всем файловым системам, смонтированным в файловой системе, помеченнойcrossmnt
. Таким образом, когда дочерняя файловая система «B» монтируется на родительской «A», установкаcrossmnt
на «A» имеет тот же эффект, что и установка «nohide» на B.С
nohide
дочерняя файловая система должна быть экспортирована явно. Спересечением
в этом нет необходимости. Если дочерний файлcrossmnt
не экспортируется явно, он будет неявно экспортирован с теми же параметрами экспорта, что и родительский, за исключениемfsid =
. Это делает невозможным не экспортировать дочерний элемент файловой системыcrossmnt
. Если некоторые, но не все подчиненные файловые системы родительского элемента должны быть экспортированы, то они должны быть экспортированы явно, а для родительского элемента не должно быть установленоcrossmnt
.