У меня три машины в производстве -
machineA 10.66.136.129
machineB 10.66.138.181
machineC 10.66.138.183
и на всех этих машинах установлена Ubuntu 12.04, и у меня есть root-доступ ко всем этим трем машинам.
Теперь я должен делать вещи ниже, в моих машинах выше -
Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/
Я уже создал /opt/exhibitor/conf
каталог на всех этих трех машинах, как указано выше.
Сейчас я пытаюсь создать точку монтирования. Итак, я следовал за процессом ниже -
Установите файлы поддержки NFS и сервер ядра NFS на всех трех указанных машинах.
$ sudo apt-get install nfs-common nfs-kernel-server
Создайте общий каталог на всех трех вышеперечисленных машинах
$ mkdir /opt/exhibitor/conf/
Отредактировал /etc/exports
и добавил запись, как это во всех трех вышеупомянутых машинах -
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/ 10.66.136.129(rw)
/opt/exhibitor/conf/ 10.66.138.181(rw)
/opt/exhibitor/conf/ 10.66.138.183(rw)
Я попытался установить на машине A, как показано ниже, от machineB и machineC, и это дает мне эту ошибку:
root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
Мой /etc/exports
файл выглядит хорошо? Я почти уверен, что испортил мой exports
файл. Так как у меня одинаковое содержимое на всех трех машинах в файле экспорта.
Есть идеи, что я здесь не так делаю? И какой /exports
файл здесь будет правильным ?
0750
или0700
клиент, пытающийся смонтировать, вполне может потерпеть неудачу с этим же сообщением об ошибке. Я изменил хост с0750
на,0755
а затем ошибка ушла, и все было хорошо.Ответы:
Exportfs
Когда вы создаете
/etc/exports
файл на сервере, вы должны быть уверены, что экспортируете его. Обычно вы хотите выполнить эту команду:Это позволит экспортировать все записи в файле экспорта.
showmount
Другая вещь, которую я часто делаю, это с других машин я проверяю любую машину, которая экспортирует NFS-ресурсы в сеть, используя
showmount
команду.пример
Скажем, например, я вошел в Скалли.
Fstab
Чтобы смонтировать их при загрузке, вы должны добавить эту строку на свои клиентские машины, которые хотят использовать монтирование NFS.
автомонтирование
Если вы собираетесь перезагружать эти серверы, я настоятельно рекомендую вам
autofs
вместо этого добавить записи для автоматического монтирования ( )/etc/fstab
. Это немного больше работы, но оно того стоит.Это позволит вам перезагружать серверы более независимо друг от друга, а также будет создавать монтирование NFS только тогда, когда это действительно необходимо и / или используется. Когда он простаивает, он отключается.
Рекомендации
источник
exportfs -a
, я побежалexportfs -rv
. Есть ли разница между ними? А в моем случаеshowmount -e 10.66.136.129
я буду делать из machineB и machineC. правильно?exportfs -rv
просто реэкспорт + многословен.-a
Будет экспортировать все. Что касаетсяshowmount -e
да, вы можете запустить его с тех машин или тех, которые обслуживают акции.Я увидел ту же ошибку (
mount.nfs: access denied by server while mounting...
), и проблема была решена с помощью-o v3
параметра следующим образом:источник
mount.nfs: Connection timed out
. (Клиент - Ubuntu 14.04 LTS 64-bit. Сервер - NFS QNAP с QTS 4.0.2 2016/01/09.)В моем случае работает с использованием nfs4:
В
/etc/export
файле на сервереfsid=0
делает/Path/to/export
корневой каталог при монтировании общего ресурса.crossmnt
потому что у меня есть несколько других дисков в экспортированной файловой системе, к которым я также хочу получить доступ.no_root_squash
, потому что я хочу получить доступ как пользователь root (su) со стороны клиента. Я уверен, что я единственный, кто может сделать это в моей локальной сети.Сервер и клиенты Ubuntu 14.04 64bit.
Если вы хотите использовать nfs3, ответ @ fumisky-wells также работает для меня.
источник
Я получаю одно и то же сообщение об ошибке, и моя проблема связана с тем, что клиентский компьютер имеет два сетевых интерфейса, подключенных к одной локальной сети. Сервер был настроен на ожидание определенного IP-адреса, и трафик направлялся на второй интерфейс, имеющий IP-адрес DHCP. Поэтому я только что настроил второй интерфейс на статический IP-адрес, а также добавил второй статический IP-адрес в конфигурацию сервера.
источник
/etc/exports
должно быть отредактировано на NFS сервера машины, а не клиенты, как Вы заявляете вы сделали, как это проверяется сервером NFS , когда клиент запрашивает доступ к общему ресурсу.Если вы добавили следующее
/etc/exports
на сервер NFS, оно должно работать:источник
exportfs -a
?Если nfs-client пытается смонтировать экспортированный общий ресурс внутри контейнера linux, тогда контейнер должен работать в привилегированном режиме.
В случае докера;
$ docker run -it --rm --privileged ubuntu:14.04
источник
Для меня проблема заключалась в том, что я использовал IP-адрес сервера
/etc/exports/
вместо клиентского .Дело в том, что вы должны поместить все ips, к которым вы предоставляете доступ, на сервер
/etc/exports/
источник
После нескольких часов борьбы с этим же сообщением об ошибке моя проблема оказалась не более сложной, чем старые добрые разрешения для файлов Linux на хосте NFS.
Папка, к которой я пытался поделиться (
/home/foo/app/share
), имела правильные разрешения, но поскольку в домашнем каталоге пользователя (/home/foo
) был установлен0750
режим, NFS не смогла перейти в нее для доступа к общему каталогу.Как только я установил домашний каталог пользователя в режим
0751
, служба NFS смогла перейти в него, и я смогла смонтировать общий ресурс со своего клиентского компьютера.источник
Для меня проблема была в том, что мой маршрутизатор изменил используемый IP-адрес клиента, так что вход
/etc/exports
на серверном компьютере разрешил доступ только для того IP-адреса, который больше не использовался.источник
То же самое может произойти, если вы попытаетесь смонтировать общий ресурс NFS на экземпляре Virtual Box с сетевым адаптером, настроенным как
NAT
.Выбор
Bridged Adapter
в настройках сети виртуальной машины решает эту проблему.источник
Я знаю, что это старая тема, но моя проблема была связана с LXC и AppArmor .
Уничтожение AppArmor или добавление профиля исключения исправили его.
источник
Эта ошибка также может быть вызвана попыткой смонтировать зашифрованный путь. (Например, в вашем домашнем каталоге, если вы решили зашифровать его)
источник
Единственное решение, которое работало для меня, было экспортировать файловые системы, начиная с
/srv
. Похоже, что это ограничение (или опция по умолчанию, по крайней мере) NFSv4.Так как я пытался экспортировать USB-накопитель, к которому автоматически
/media
монтируется, мне нужен был способ его «монтирования»/srv
. Для этого:И в
/etc/exports
:Когда я экспортировал
/media/jim/wdportable/videos
напрямую, попытка монтирования на клиенте всегда приводила кmount.nfs: access denied by server
.-o v3
Решение работало, но я не хочу , чтобы заставить v3.источник
/media/jim
папки. Если каталог, которым вы пытаетесь поделиться, является (или находится внутри) каталогом только с режимом700
или750
режимом, NFS не сможет перейти в него. Если бы вы изменились/media/jim
на751
, это, вероятно, будет работать.sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
(распбиан на Raspi 3 B +) я тоже попыталсяsudo chmod 751 /media/pi
. После этого я больше не нуждался-o v3
:sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share
сделал работу (после размонтирования). Большое спасибо @DaleAnderson.Следует отметить, что на связанной странице, которая привела меня сюда, был мой правильный ответ: вы НЕ можете использовать * символ подстановки в IP-адресе при экспорте. Он либо * (все IP-адреса), либо используется в качестве подстановочного знака в доменных именах IE: * .domain.com.
Например: это правильно
Это не будет работать (или, по крайней мере, неправильно), но работало у меня годами, пока я не попытался смонтировать экспорт с виртуальной машины Fedora.
источник