У меня есть самописная файловая система FUSE, которую я монтирую на сервере NFS в точке монтирования /export/example/mount
. Затем я экспортирую родительский каталог FUSE через NFS. /etc/exports
Содержит параметры nohide,crossmnt,subtree_check,ro,no_root_squash
и обеспечивает свободный доступ к каждому:
/export/example *(nohide,crossmnt,subtree_check,ro,no_root_squash)
Я могу смонтировать этот экспорт на моем клиенте NFS и получить к нему доступ. Как только я получаю доступ к FUSE в NFS, мой клиент зависает, пока я не umount
NFS (и мне нужно использовать опцию -f
для этого).
Я попытался смонтировать FUSE как мой рабочий пользователь и как root. Результаты одинаковы.
Сервер работает под управлением Ubuntu 12.04, клиент - SuSE 9.3. FUSE написан на Python и работает локально без каких-либо проблем. Сбой экспорта только через NFS. У меня нет никаких ограничений безопасности, поскольку все это в частной сети только с доверенными пользователями.
У кого-нибудь есть идея, что может стать причиной моей проблемы или (еще лучше), как решить проблему?
Я думал о замене NFS на SSHFS, чтобы обойти эту проблему, но это не работает, поскольку клиентская система слишком старая для поддержки SSHFS (так как она основана на FUSE, а FUSE не поддерживается).
allow_other
опцию sshfs mount?crossmnt
? И позволяет ли сторона предохранителя (s3fs) использоваться другими пользователями (для этого тоже есть опция монтирования). Не забывайте, что fuse является пользовательским пространством (предназначенным для использования одним пользователем), в то время как nfs является многопользовательским.Ответы:
Большинство дистрибутивов Linux поставляются с ядром, которое не позволяет экспортировать смонтированную файловую систему FUSE с использованием NFSv2 или NFSv3. Ваш выбор: 1. Внедрить вашу файловую систему в пространство ядра. 2. Экспортируйте его в NFSv4, для чего потребуется fsid =
Я сам использую 2. На следующем рисунке команды, начинающиеся с
#
, запускаются на сервере, команды, начинающиеся с$
, запускаются на клиенте.Это моя конфигурация сервера, как вы можете видеть, я экспортирую точку монтирования FUSE:
Вот что я сделал на своем клиенте:
Чтобы убедиться, что ваша ошибка вызвана экспортом предохранителя в NFS v2 / v3, экспортируйте эту точку монтирования специально без NFS v4 (fsid) и посмотрите, не появляется ли ошибка:
Если на сервере вы экспортируете точку монтирования с монтированием и позже монтируете ее с помощью fuse, вы должны увидеть в своем журнале, если вы пытаетесь использовать клиент nfs:
источник
по умолчанию экспорт submounts через nfs отключен. Рекомендуемый порядок действий заключается в том, чтобы также экспортировать подмонтирование и клиент также смонтировал его.
источник