В настоящее время я настраиваю совместное использование файлов на основе NFS между моим клиентом Mac (Macos 10.14.1) и сервером Raspberry Pi3 (U16.04.1 LTS). Поскольку я дважды загружаю свой Mac (MacOS / Ubuntu18), я хочу использовать свой Pi с NFS (у меня уже есть Samba, которая работает хорошо, но она не обрабатывает разрешения Unix) в качестве общего дома, чтобы уменьшить дублирование файлов и упростить контроль версий. . После того, как MacOS заработает правильно, я займусь настройкой Ubuntu.
На данный момент у меня установлено два общих ресурса, один с использованием NFS3 (анонимно), другой с использованием NFSv4 (домашний / пользователь1). Чтение / запись файлов в любой из общих ресурсов выполняется очень быстро и работает хорошо (за исключением несоответствий UID / GID). У меня проблема в том, что, хотя список файлов в общей папке NFS3 также выполняется очень быстро, список файлов в общей папке NFSv4 ОЧЕНЬ медленный, и я не могу понять почему.
Ниже приведены все настройки, которые я использую. Я не использовал mount --bind
на сервере, поскольку я не считаю это необходимым и не имеет никакого отношения к моей проблеме, но я могу ошибаться.
Я искал решения этой проблемы в течение нескольких дней, но ничего из того, что я прочитал, не решает мою проблему, в результате чего другие всегда жалуются на каталоги с большим количеством файлов, и ни одно из предложений, которые я видел, не решило мою проблему. . Оказывается что это связано с моими настройками цвета в терминале, видеть Обновить ниже.
В конечном счете, я хочу синхронизировать UID / GID между моим Mac и Pi, но это уже другой вопрос, так как я сейчас не особо разбираюсь в настройке LDAP (или использовании NIS?) С (но, надеюсь, без) Kerberos. Кроме того, у меня сейчас нет настройки контроллера домена.
Заранее благодарим за то, что нашли время прочитать о моей проблеме и ваши предложения.
Сторона сервера
/ etc / exports:
/srv/anonymous *(rw,sync,insecure,no_subtree_check,all_squash)
/srv/home/user1 *(rw,sync,fsid=0,insecure,crossmnt,no_subtree_check,no_root_squash)
/ etc / default / nfs-common:
NEED_STATD=
NEED_IDMAPD=yes
STATDOPTS="--port 4000 --outgoing-port 4001"
NEED_GSSD=
/ etc / default / nfs-kernel-server:
RPCNFSDCOUNT=8
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS="--manage-gids -p 4002"
NEED_SVCGSSD=""
RPCSVCGSSDOPTS=""
RPCNFSDOPTS=""
/etc/idmapd.conf:
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
[Translation]
Method=static
[Static]
user1@mac.local = user1
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
/etc/modprobe.d/blacklist.conf:
blacklist rpcsec_gss_krb5
/etc/modprobe.d/options.conf:
options lockd nlm_udpport=4001 nlm_tcpport=4001
/ и т.д. / модули:
lockd
/ sys / module / nfsd / parameters / nfs4_disable_idmapping:
Y (I've tried manually setting this to "N" but it gets overwritten)
(So I'm using nfs-common to manage this via the 'NEED_IDMAPD=yes' option
Сторона клиента
Монтаж производится с использованием:
mount -v -t nfs -o proto=tcp,port=2049 raspberry.local:/srv/anonymous ~/ranonymous
mount -v -t nfs -o rsize=32768,wsize=32768,proto=tcp,port=2049,sec=sys raspberry.local:/srv/home/user1 ~/ruser1
Результаты время лс / акция:
user1@mac:[ 6:13]$ time ls ranonymous/
a1 putty.zip test
real 0m0.013s
user 0m0.002s
sys 0m0.004s
user1@mac:[ 6:13]$ time ls ruser1/
a1 a2 a3 a4 a5 me me copy myScripts you you1 you2 you3
real 0m6.044s
user 0m0.002s
sys 0m0.004s
ОБНОВИТЬ Я разработал часть ответа на медленный ls
время, которое связано с использованием цветов. Комментируя export CLICOLOR=1
в моем профиле bash теперь нормальная скорость. Жалко, потому что я хочу, чтобы в моем терминале был цвет.
1) Почему эта проблема возникает только с NFSv4?
2) Почему эта проблема затрагивает только корневую папку, но не подпапки, которые я получаю очень быстро, даже если цвета все еще включены. 3) Есть ли способ настроить мой профиль bash так, чтобы у меня был цвет при перечислении локальных папок, но не цвет при перечислении общих ресурсов без использования разных команд?
4) Можно ли добиться высокой производительности без ущерба для цвета?
У меня есть еще один связанный с этим вопрос: в терминале я получаю доступ к общему диску в соответствии с точкой монтирования (~ / ruser1). Однако в Finder точка монтирования переименована в (~ / пользователь1), базовый каталог общего ресурса сервера. Есть ли способ сделать это последовательным?