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