Это старая версия документа.
Содержание
NFS(Network File System) –это сетевая файловая система, позволяющая пользователям обращаться к файлам и каталогам, расположенным на удалённых компьютерах, как если бы эти файлы и каталоги были локальными. Главным преимуществом такой системы является то, что отдельно взятые рабочие станции могут использовать меньше собственного дискового пространства, так как совместно используемые данные хранятся на отдельной машине и доступны для других машин в сети. NFS – это клиент-серверное приложение. Т.е. в системе пользователя должен быть установлен NFS-клиент, а на компьютерах, которые предоставляют свое дисковое пространство – NFS-сервер.
Установка
Для установки и сервера, и клиента необходимы одни и те же пакеты nfs-kernel-server и nfs-common
sudo apt-get install nfs-kernel-server nfs-common
Настройка сервера
Все настройки сервера хранятся в файле /etc/exports . Открываем его на редактирование
sudo nano /etc/exports
и добавляем в конец файла строки вида (строк может быть произвольное количество):
/data 192.168.1.1(rw,async,no_subtree_check,insecure,nohide,all_squash,anonuid=1000,anongid=1000) )
, где:
/data –путь к папке, для которой раздается доступ;
192.168.1.1 –IP-адрес, которому раздается доступ к папке(можно указать всю сеть, тогда запись примет вид 192.168.1.0/24)
(rw,no_root_squash,sync) –набор опций, опции могут быть:
rw –чтение запись(может принимать значение ro-только чтение);
no_root_squash –по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
sync – синхронный режим доступа(может принимать обратное значение- async);
noaccess – запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
Необходимо добавить описание опций.
all_squash– подразумевает, что все подключения будут выполнятся от анонимного пользователя
anonuid=1000– привязывает анонимного пользователя к «местному» пользователю;
anongid=1000– привязывает анонимного пользователя к группе «местного» пользователя.
id <имя_пользвателя>
Перезапускаем сервер:
sudo /etc/init.d/nfs-kernel-server restart
В последствии после внесения изменений в файл /etc/exports не обязательно перезапускать сервер, достаточно выполнить:
sudo exportfs -a
Настройка клиента
Для монтирования сетевой папки необходимо создать папку на локальном компьютере: <сode>mkdir ~/Общедоступная</code>
Монтирование вручную
Для монтирования папки вручную необходимо выполнить в терминале команду:
sudo mount -t nfs -o uid=1000,iocharset=utf-8 192.168.1.2:/data ~/Общедоступные
Монтирование с записью в fstab
Для большего удобства можно добавить запись с сетевой папкой в fstab. Целесообразно создать точку монтирования сетевой папки в /media, потому что папки созданные там будут отображаться в Nautilus в левой колонке и монтировать можно будет одним кликом.
sudo mkdir /media/Общедоступные
В файл /etc/fstab добавляем подобную запись:
192.168.1.1:/data /media/Общедоступная nfs user,rw,noauto 0 0
опция «noauto» запрещает автоматическое монтирование сетевого диска при старте системы.
Проблемы
Использование на ноутбуке
При монтировании удаленных папок NFS посредством fstab, в ситуации, когда сеть с сервером будет не доступна, ноутбук невозможно выключить или отправить в спящий режим. Для использования удаленных папок NFS на ноутбуке лучше воспользоваться монтированием при помощи autofs
Монтирование с помощью autofs
Данный способ монтирования позволяет автоматически монтировать папку после обращения к ней в наутилусе или в терминале, например так:
cd /nfs/Сервер/
и автоматически отмонтировать при отсутствии активности.
Установка
Для реализации данного способа необходимо доустановить пакет autofs
:
sudo apt-get install autofs
Настройка
Для настройки autofs
в файле /etc/auto.master необходимо добавить строку
/nfs /etc/auto.nfs --timeout=60
Здесь –timeout=60
указывает отмонтировать раздел при отсутствии активности на нём более чем 60 секунд.
Создаем в корне файловой системы папку /nfs :
sudo mkdir /nfs
В файле /etc/auto.misc добавляем строку
Сервер 192.168.1.2:/
где
Сервер – папка, которая будет создаваться в каталоге /nfs при монтировании удаленных папок;
192.168.1.2:/– IP-адрес и общая папка сервера.
Перезапускаем службу autofs
:
sudo /etc/init.d/autofs restart
Проблемы
Настройка autofs на ноутбуке
Если вы настраиваете autofs на ноутбуке, то возможны проблемы в ситуации, когда недоступна сеть с сервером NFS, при которой autofs зависает и подвешивает, например Nautilus, при обращении к папке. Так же эта проблема может проявляться, как большая задержка (по умолчанию- 3 минуты) при открытии nautilus, в закладках которого находится примонтированная удаленная папка NFS.
Для решения этой проблемы необходимо уменьшить время ожидания монтирования autofs, для этого в файле /etc/default/autofs необходимо раскомментировать и добавить значение в строчке
MOUNT_WAIT=5
После этого autofs будет пытаться примонтировать удаленную папку только 5 секунд.
Использование
Проблемы
Проблемы с гибернацией или выключением
После настройки автомонтирования сетевых папок 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 sudo dpkg -i mlocate*
Ссылки
dpkg -l mlocate