NFS service

From Nix-Pro
Jump to: navigation, search

Установка

Проверяем установлен ли nfs:

#rpm -qa | grep nfs-utils

Если же nfs в системе не обнаружен то ставим из репозитория

# yum -y install nfs-utils

Проверяем добавлен ли он в список сервисов запускаемых при старте системы:

# chkconfig --list nfs
0:off 1:off 2:off 3:off 4:off 5:off 6:off   nfs

Если нет то добавляем в автозагрузку

# chkconfig nfs on
# service nfs start

NOTE! Для корректной работы nfs сервера также должна быть запущена служба "portmap". Обязательно проверьте чтобы она также была добавлена в список сервисов стартующих при запуске системы.

Так как в своей работе NFS использует RPC-вызовы а значит работоспособность службы можно проверить с помощью portmapper

# rpcinfo -p localhost | grep nfs
program vers proto port
100003 2       udp    2049 nfs
100003 3       udp    2049 nfs
100003 4       udp    2049 nfs
100003 2       tcp   2049 nfs
100003 3       tcp   2049 nfs
100003 4       tcp   2049 nfs

Как видно из примера обслуживаются NFS-запросы всех версий NFS (4-ая — последняя на данный момент).

Настройка


Файл конфигурации /etc/exports содержит список файловых систем которые мы экспортируем, то есть разрешаем монтировать по протоколу NFS на удаленных системах.

Каждая строка в файле это указание на экспортируемую ФС и режим доступа к ней, шаблон следующий:

[файловая система] [кому разрешено получать доступ] [опциональные ключи]
Пример /etc/exports:

/home 192.168.146.135(rw,no_root_squash)

Здесь мы разрешаем монтировать /home на сервере 192.168.146.135 в режиме rw

NOTE! Аккуратнее с пробелами в файле. Если написать /home 192.168.146.135 (rw) то сервер 192.168.146.135 получит доступ к /home в режиме ro, все остальные в rw.
Если 192.168.146.135 (rw) то сервер 192.168.146.135 получит доступ в режиме rw, всем остальным доступ будет запрещен!

Перечитываем файл чтобы внесенные изменения начали действовать:

exportfs -r

Проверим список экспортированных ФС:

exportfs
/home         192.168.146.135

Теперь на сервере 192.168.146.135 попробуем примонтировать ФС /home экспортированную на 192.168.146.132

Монтируем с помощью команды mount. Ключем -t задаем тип монтируемой ФС, далее <hostname>:<resource> <точка монтирования в локальной системе>

# mount -t nfs 192.168.146.132:/home /mnt

Используя опцию -o можно указать дополнительные ключи монтирования. По умолчанию монтирование происходит в режиме rw.

Если ФС экспортированы на сервере который работает 24 часа в сутки то монтирование разделов можно добавить в /etc/fstab тем самым автоматизировав процедуру при старте компьютера.

Строчка в /etc/fstab в нашем случае будет такая:

nfs defaults 192.168.146.132:/home /mnt/nfs Все готово.

Опции конфигурационного файла

Самые часто используемые опции я описал ниже:

ro — Только чтение;
rw- Чтение и запись;
root_squash - Не разрешает пользователю root получать root-привилегии в удаленной файловой системе, все действия будут сделаны от лица пользователя nobody;
no_root_squash - Пользователь root в локальной системе получает такие же права в удаленной. Стоит использовать эту опцию только в случае острой необходимости. Используется для бездисковых клиентов;
all_squash - Все запросы происходят от анонимного пользователя, что способствует повышению безопасности. Актуально для публичных разделов;
anonuid/anongid - Позволяет задать UID и GID пользователя от лица которого будут выполняться все запросы;
sync - Синхронный режим работы, ответы на запросы происходят только после того, как данные будут надежно записаны на диск. Надежность выше, производительность меньше;
async - Асинхронный режим работы, ответы на запросы происходят сразу, не дожидаясь записи на диск. Надежность ниже, производительность выше;
insecure - Разрешать запросы с портов более чем 1024;
no_subtree_check - Если экспортируется подкаталог файловой системы, но не вся файловая система, сервер, проверяет, находится ли запрошенный файл в экспортированном подкаталоге. Эта проверка называется проверкой подкаталога. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных.

Указать каким хостам разрешено монтировать наши разделы можно несколькими способами:

Указать hostname или просто IP-адрес; Указать “*”, что означает разрешено всем. Если указать *.fasttech.ru то будет разрешено testers.fasttech.ru но запрещено alex.testers.fasttech.ru . Чтобы этого избежать нужно написать *.*.fasttech.ru; В нужных местах использовать “?”, что заменяет любой символ (не применимо к IP-адресам); Использовать маски подсетей, например 192.168.146.32/27; Использовать NIS-группы, например @nisgroup2. Дополнительная информация

Описанного выше должно хватить сполна, но если хочется больше то:

  1. man nfs
  2. man exports
  3. man exportfs

Не путайте exports и exportfs. exports – это конфигурационный файл, exportfs — программа для работы с ним.

source

Resolving Stale nfs file handle issues on Linux

https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/974374
http://nerdbynature.de/s9y/?297
http://usalug.com/phpBB3/viewtopic.php?t=14273
http://blogs.opusvl.com/technical/resolving_stale_nfs_file_handle_issues_on_linux
http://www.cyberciti.biz/tips/nfs-stale-file-handle-error-and-solution.html
http://www.linuxquestions.org/questions/linux-networking-3/stale-nfs-handle-how-to-recover-w-o-reboot-255385/
http://ubuntugenius.wordpress.com/category/filesystems-partitioning/
http://en.kioskea.net/faq/2287-fstab-adding-spaces-in-the-mount-point-path
http://www.spinics.net/lists/linux-nfs/msg35265.html