Direct Maps ассоциируются с autofs, то есть по сути с автомонтированием шары при первом доступе. И неважно, это NFS или LOFS. При этом работа очень упрощается – достаточно отредактировать файл и запустить команду automount. Она сама проверит соответствие смонтированных шар и наличием их в файле: ненужные отмонтирует, а новые смонтирует.
Что бы это работало, добавляем в файл /etc/auto_master такую строку:
/- auto_direct -rw
и создаём собственно файл /etc/auto_direct примерно такого содержания:
/data/test/test2 -rw,rsize=1048576,wsize=1048576 data.domain.com:/data/test/test2
Если теперь запустить команду
# automount -v
automount: mount /data/test/test2
automount: no unmounts
Если нужно размонтировать какую-то шару – просто комментируем её в /etc/auto_direct, если нужно смонтировать – просто добавляем. Конечно, после правки обязательно выполняем команду automount.
Что ещё поразительнее, что эта команда создаст сама точки монтирования, если они отсутствуют.
Есть правда и очень неприятный момент. При монтировании, точке монтирования принудительно устанавливаются права 555 root:root и изменить их нельзя. А это значит, что, смонтировав такую шару в global-zone, в обычной зоне получите permission denied. Нашёл так же заметку об этом моменте и “якобы” решение, которое не работает.
Что бы работал mapping uid’ов (то есть юзер с одним и тем же именем, но, не обязательно с одним и тем же UID на разных серверах получает те же права, что на шару NFS) нужно выполнение таких условий (при этом, SMF-сервис отдельно запускать не нужно – его автоматически запустит automount):
1) в /etc/resolv.conf должна присутствовать строка:
search mydomain.com
2) в DNS должна присутствовать запись
_nfsv4idmapdomain.mydomain.com TXT "mydomain.com"
где mydomain.com имя вашего домена. Проверить наличие можно так:
$ nslookup -q=txt _nfsv4idmapdomain | grep _nfsv4idmapdomain
_nfsv4idmapdomain.mydomain.com text = "mydomain.com"
3) NFS сервера имели одинаковые nfsmapid_domain:
– посмотреть
# sharectl get -p nfsmapid_domain nfs
– назначить
# sharectl set -p nfsmapid_domain=mydomain.com nfs