Содержание
Необходимо добавить описание опций.
all_squash– подразумевает, что все подключения будут выполнятся от анонимного пользователя
</li>
subtree_check (no_subtree_check)- в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска;
</li>
anonuid=1000– привязывает анонимного пользователя к «местному» пользователю;
</li>
anongid=1000– привязывает анонимного пользователя к группе «местного» пользователя.
</li>Под «местным» пользователем понимается пользователь, который будет осуществлять запись в файлы (запускать приложения, скачивающие файлы и т.д.), поэтому значение 1000 может отличаться от вашего. Для определения uid пользователя воспользуйтесь командой
id <имя_пользвателя>
Перезапускаем сервер:
sudo/etc/init.d/nfs-kernel-server restart
В последствии после внесения изменений в файл /etc/exports не обязательно перезапускать сервер, достаточно выполнить:
sudo exportfs -a
Для монтирования сетевой папки необходимо создать папку на локальном компьютере:
mkdir ~/Общедоступная
Для монтирования папки вручную необходимо выполнить в терминале команду:
sudomount-t nfs -Ouid=1000,iocharset=utf-8 192.168.1.2:/data ~/Общедоступные
Следует помнить, что, как в настройках сервера, так и в настройках клиента при монтировании, путь к общему каталогу указывается полный. Данный пример показывает, что каталог /data находится в корне файловой системы.
Монтирование с записью в fstab
Для большего удобства можно добавить запись с сетевой папкой в fstab. Целесообразно создать точку монтирования сетевой папки в /media, потому что каталоги, созданные там, будут отображаться в Nautilus в левой колонке, монтировать их можно будет одним кликом.
sudomkdir/media/Общедоступные
В файл /etc/fstab добавляем подобную запись:
192.168.1.1:/data /media/Общедоступные nfs user,rw,noauto 0 0
опция «noauto» запрещает автоматическое монтирование сетевого диска при старте системы.
Проблемы
Использование на ноутбуке
При монтировании удаленных папок NFS посредством fstab, в ситуации, когда сеть с сервером будет не доступна, ноутбук невозможно выключить или отправить в спящий режим. Для использования удаленных папок NFS на ноутбуке лучше воспользоваться монтированием при помощи autofs
Монтирование с помощью autofs
Данный способ монтирования позволяет автоматически монтировать папку после обращения к ней в наутилусе (к примеру, через закладки) или в терминале:
cd/nfs/server/
и автоматически отмонтировать при отсутствии активности.
Установка
Для реализации данного способа необходимо доустановить пакет autofs
:
sudoapt-get install autofs
Настройка
Для настройки autofs
в файле /etc/auto.master необходимо добавить строку
/nfs /etc/auto.nfs --timeout=60
Здесь –timeout=60
указывает отмонтировать раздел при отсутствии активности на нём более чем 60 секунд. Создаем в корне файловой системы папку /nfs :
sudotouch/etc/auto.nfs &&sudomkdir/nfs
В файле /etc/auto.nfs добавляем строку
server -rw,soft,intr,rsize=8192,wsize=8192 192.168.1.2:/path_to_share
где
-
-rw,soft,intr,rsize=8192,wsize=8192 – параметры монтирования;
-
server – папка, которая будет создаваться в каталоге /nfs при монтировании удаленных папок;
-
192.168.1.2:/path_to_share– IP-адрес и общая папка сервера.
Перезапускаем службу autofs
:
sudo service autofs restart
Проблемы
Недоступность удаленного сервера
Если сеть с сервером NFS недоступна, возможна большая задержка (по умолчанию 3 минуты) при открытии nautilus, в закладках которого находится примонтированная удаленная папка NFS. Для решения этой проблемы необходимо уменьшить время ожидания монтирования autofs, для этого в файле /etc/default/autofs необходимо раскомментировать или добавить следующие строки:
MOUNT_WAIT=10
#время ожидания ответа от mount
NEGATIVE_TIMEOUT=10
#время ожидания при неудачной попытке монтирования
После этого autofs будет пытаться примонтировать удаленную папку только 10 секунд.
Проблемы с гибернацией или выключением
После настройки автомонтирования сетевых папок NFS могут обнаружится некотрые проблемы с выключением или гибернацией системы. Чаще всего это проявляется как прерывающаяся гибернация (компьютер начинает уходить в гибернацию, гаснет экран, после чего экран опять загорается и работа продолжается, так же в этих случаях возможны проблемы с выключением и перезагрузкой системы. При последующих попытках отправить компьютер в гибернацию на черном экране вверрху можно наблюдать строку типа:
Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0)
Для диагностирования смотрим лог dmesg, возможный вывод:
dmesg | grep -A 2 refuse [32467.560058] Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0): [32467.560115] nfs D 0000000000000000 0 2065 1 0x00800004
или
dmesg | grep -A 2 refuse [32467.560058] Freezing of tasks failed after 20.00 seconds (1 tasks refusing to freeze): [32467.560115] updatedb.mloc D ffff88008e907578 0 9268 9261 0x00800004
Пакет, являющийся причиной зависания указан в начале строки, следующей после сообщения об ошибке.
Причина №1: пакет NFS
Причиной данной проблемы является скрипт прерывания работы NetworkManager, необходимо запретить его выполнение переименовав его:
sudo mv /usr/lib/pm-utils/sleep.d/55NetworkManager /usr/libg/pm-utils/sleep.d/old.55NetworkManager
Причина №2: пакет updatedb.mloc
updatedb является частью пакета mlocate— удобного пакета для быстрого поиска файлов по системе. К сожалению, версия 0.23.1-1ubuntu21), находящаяся в репозиториях Ubuntu содержит баг, при котором возникает ситуация, когда компьютер не может выключиться или отправиться в гибернацию, когда сервер NFS выключен. Для решения данной проблемы необходимо установить пакет версии 0.23.1-1 из репозитория debian-sid:
wget http://ftp.ru.debian.org/debian/pool/main/m/mlocate/mlocate_0.23.1-1_i386.deb sudodpkg-i mlocate*
Ссылки
- Обсуждение данной статьи на форуме forum.ubuntu.ru
- Источник настройки сервера и клиента NFS
- Источник описания способа монтирования при помощи autofs.
- Источник Расшаривание папок в линуксе или настройка NFS.
1)посмотреть версию пакета можно командой
dpkg -l mlocate
Требуется подключить существующую папку /home и специально созданную папку /var/nfs с сервера к клиенту.
Установка пакетов
Прежде всего, требуется установить необходимые компоненты как на сервере, так и на клиентских компьютерах. На сервере вам потребуется установить пакет nfs-kernel-server , который позволит использовать совместный доступ к вашим каталогам.
sudo apt update sudo apt install nfs-kernel-server
На клиентском компьютере вам потребуется установить пакет nfs-common.
sudo apt update sudo apt install nfs-common
Создание общего каталога на сервере
Мы будем монтировать специально созданный на сервере каталог на клиентский компьютер. Создадим каталог nfs.
sudo mkdir /var/nfs
Назначим права:
sudo chown nobody:nogroup /var/nfs
Теперь отредактируем файл, отвечающий за совместное использование ресурсов NFS
sudo nano /etc/exports
Здесь нужно создать строку для каждого из каталогов, которые должны быть общими и указать с какими компьютерами мы разделяем ресурсы. В нашем примере IP-адрес клиента – 192.168.1.100, поэтому строки должны выглядеть примерно так:
/home 192.168.1.100(rw,sync,no_root_squash,no_subtree_check) /var/nfs 192.168.1.100(rw,sync,no_subtree_check)
В случае если нужно раздать каталог на все компьютеры подсети вместо 192.168.1.100 нужно указать 192.168.1.0/24
Давайте разберем, что здесь написано.
rw: эта опция позволяет клиентскому компьютеру как читать, так и записывать в данный каталог.sync: заставляет NFS записывать изменения на диск перед ответом, что приводит к более стабильной и согласованной среде. Это связано прежде всего с тем, что ответ повторяет фактическое состояние удаленного тома.no_subtree_check: эта опция предотвращает проверку поддеревьев. Сервер при каждом запросе проверяет, действительно ли файл все еще доступен в экспортируемом дереве. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных.no_root_squash: по умолчанию NFS переводит запросы от пользователя root на клиентском компьютере в непривилегированного на сервере. Это параметр безопасности который не позволяет учетной записи root на клиенте использовать файловую систему сервера в качестве root.
После того, как необходимые изменения внесены и сохранены, выполним команду:
sudo exportfs -a
и запустим службу NFS
sudo service nfs-kernel-server start
Данная команда сделает ваши ресурсы доступными для клиентов, которых вы настроили. Теперь перейдем к следующему шагу.
Создание точек монтирования и монтирование удаленных общих ресурсов на клиентском компьютере
Сперва создадим точки монтирования удаленных ресурсов.
sudo mkdir -p /mnt/nfs/home sudo mkdir -p /mnt/nfs/var/nfs
Подключаем.
sudo mount 192.168.1.5:/home /mnt/nfs/home sudo mount 192.168.1.5:/var/nfs /mnt/nfs/var/nfs
Автоматическое монтирование производится через fstab
sudo nano /etc/fstab
Допишем в конец файла
192.168.1.5:/home /mnt/nfs/home nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0 192.168.1.5:/var/nfs /mnt/nfs/var/nfs nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0
Если вам больше не требуется монтировать удаленный каталог в вашей системе, вы можете легко размонтировать его используя следующие команды:
sudo umount /mnt/nfs/home sudo umount /mnt/nfs/var/nfs
NFS предлагает простой и быстрый механизм доступа к удаленным системам по сети. Однако протокол является не зашифрованным. Если вы намерены использовать это в производственной среде, рекомендуется рассмотреть возможность запуска NFS через SSH или VPN-соединение.
Как настроить сервер NFS и смонтировать общие ресурсы NFS в Linux
Сетевая файловая система NFS или Network File System, это популярный протокол сетевой файловой системы, который позволяет пользователям подключать удаленные сетевые каталоги на своей машине и передавать файлы между серверами. Вы можете использовать дисковое пространство на другой машине для своих файлов и работать с файлами, расположенными на других серверах. По сути, это альтернатива общего доступа Windows для Linux, в отличие от Samba реализована на уровне ядра и работает более стабильно.
В этой статье будет рассмотрена установка nfs в Ubuntu 16.04. Мы разберем установку всех необходимых компонентов, настройку общей папки, а также подключение сетевых папок.
Как уже было сказано, NFS, это сетевая файловая система. Для работы необходим сервер, на котором будет размещена общая папка и клиенты, которые могут монтировать сетевую папку как обычный диск в системе. В отличие от других протоколов NFS предоставляет прозрачный доступ к удаленным файлам. Программы будут видеть файлы как в обычной файловой системе и работать с ними как с локальными файлами, nfs возвращает только запрашиваемую часть файла, вместо файла целиком, поэтому эта файловая система будет отлично работать в системах с быстрым интернетом или в локальной сети.
Перед тем как мы сможем работать с NFS, нам придется установить несколько программ. На машину, которая будет сервером нужно установить пакет nfs-kernel-server, с помощью которого будет выполнено открытие шары nfs в ubuntu 16.04. Для этого выполните:
Теперь давайте проверим правильно ли установился сервер. Сервис NFS слушает соединения как для TCP, так и для UDP на порту 2049. Посмотреть действительно ли сейчас используются эти порты можно командой:
Также важно проверить поддерживается ли NFS на уровне ядра:
Видим, что работает, но если нет, нужно вручную загрузить модуль ядра nfs:
Давайте еще добавим nfs в автозагрузку:
На клиентском компьютере вам нужно установить пакет nfs-common, чтобы иметь возможность работать с этой файловой системой. Вам необязательно устанавливать компоненты сервера, достаточно будет только этого пакета:
Вот и все, дальше настройка nfs ubuntu.
Мы можем открыть NFS доступ к любой папке, но давайте создадим для этих целей новую:
Дальше нас интересует настройка ubuntu nfs server. Все общие папки и другие настройки nfs находятся в файле /etc/exports. Синтаксис записи папки такой:
адрес_папкиклиент(опции)
Адрес папки — это та папка, которую нужно сделать доступной по сети. Клиент — ip адрес или адрес сети, из которой могут получить доступ к этой папке. А вот с опциями немного сложнее. Рассмотрим некоторые из них:
- rw — разрешить чтение и запись в этой папке
- ro — разрешить только чтение
- sync — отвечать на следующие запросы только тогда, когда данные будут сохранены на диск (по умолчанию)
- async — не блокировать подключения пока данные записываются на диск
- secure — использовать для соединения только порты ниже 1024
- insecure — использовать любые порты
- nohide — не скрывать поддиректории при, открытии доступа к нескольким директориям
- root_squash — подменять запросы от root на анонимные
- all_squash — превращать все запросы в анонимные
- anonuid и anongid — указывает uid и gid для анонимного пользователя.
Например, для нашей папки эта строка может выглядеть вот так:
/var/nfs 127.0.0.1(rw,sync,no_subtree_check)
Когда все было настроено, осталось обновить таблицу экспорта NFS:
Вот и все, открытие шары nfs в ubuntu 16.04 завершено. Теперь попытаемся настроем клиента и попытаемся ее примонтировать.
Мы не будем подробно останавливаться на этом вопросе в сегодняшней статье. Это довольно большая тема, заслуживающая отдельной статьи. Но пару слов я все же скажу.
Чтобы подключить сетевую папку вам не нужен никакой nfs клиент ubuntu, достаточно использовать команду mount:
Теперь вы можете попытаться создать файл в подключенной директории:
Также мы посмотрите подключенные файловые системы с помощью df:
127.0.0.1:/var/nfs 30G 6,7G 22G 24% /mnt
Чтобы отключить эту файловую систему достаточно использовать стандартный umount:
В этой статье была рассмотрена настройка nfs ubuntu 16.04, как видите, все делается очень просто и прозрачно. Подключение NFS шары выполняется в несколько кликов, с помощью стандартных команд, а открытие шары nfs в ubuntu 16.04 ненамного сложнее подключения. Если у вас остались вопросы, пишите в комментариях!
Используемые источники:
- https://help.ubuntu.ru/wiki/nfs
- https://admin812.ru/kak-nastroit-server-nfs-i-smontirovat-obshhie-resursy-nfs-v-linux.html
- https://losst.ru/nastrojka-nfs-v-ubuntu-16-04