Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 876 / 162 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 7:

Настройка сервера и клиента NFS

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Проверка работоспособности служб NFS

Теперь вы должны проверить, что mountd и nfsd запущены правильно. Сначала это делается с помощью команды rpcinfo -p. Вывод программы должен показать что-то похожее на следующее:

100000 4 tcp 111 rpcbind
100000 3 tcp 111 rpcbind
100000 2 tcp 111 rpcbind
100000 4 udp 111 rpcbind
100000 3 udp 111 rpcbind
100000 2 udp 111 rpcbind
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100005 3 udp 1023 mountd
100005 3 tcp 1023 mountd
100005 1 udp 1023 mountd
100005 1 tcp 1023 mountd

Как видно, rpcbind успешно анонсирует службы.

Если в ответ на rpcinfo -p мы получили сообщение

rpcinfo: can't contact
rpcbind: RPC: Remote system error - Connection refused

или

RPC_PROG_NOT_REGISTERED

или нечто похожее вместо ожидаемого – стало быть, rpcbind не доступен (отключен). Возможно, в файлах /etc/hosts.allow или /etc/hosts.deny есть настройки, запрещающие программе rpcbind отвечать нам.

Для перезапуска служб NFS можно завершить выполнение демонов nfsd, mountd и rpcbind, запустить их вновь в следующем порядке: rpcbind, затем mountd и следом nfsd. Программе nfsd может быть передан числовой аргумент – число потоков, которые следует запустить при старте. Программа "распараллелится" в указанном количестве потоков.

Более стандартным выходом является запуск скрипта /etc/init.d/nfs.server вначале с параметром stop, затем с параметром start.

При штатной работе mountd и nfsd запускаются на сервере NFS при старте системы из стартовых скриптов. Это можно проверить командами

ps -ef | grep mountd
ps -ef | grep nfsd

Программа rpcbind объявляет свои службы независимо от того, продолжают ли работать программы, ранее зарегистрировавшиеся и (возможно) прекратившие работу вследствие аварии.

Следовательно, вышеприведенная проверка с помощью ps обязательна, если служба NFS перестала работать.

Не забудьте перед настройкой сервера NFS изучить страницы руководства, рассказывающие о rpcbind, mountd, nfsd, dfstab.

Блокировка файлов на NFS-сервере

Для того, чтобы несколько процессов не конфликтовали при доступе к одному и тому же файлу, обычно используется механизм блокировки файла. Подробнее о блокировках следует читать в документации по системным фукнциям lockf() и flock(). В NFS механизм блокировки реализован посредством двух демонов: lockd и statd.

Оба демона запускаются на сервере NFS после mountd и nfsd.

Программа lockd устанавливает и снимает блокировку файлов по запросу, а демон statd следит за состоянием блокировок и работоспособностью NFS-сервера.

В сети демон statd сервера NFS обменивается информацией с демонами statd на других компьютерах. Демон lockd посылает запросы демону statd для установления статуса компьютеров. взаимодействующих с ним.

Если компьютер, за которым следит statd, перестает отвечать и перезапускается, удаленный statd сообщает об этом локальному, следящему за ним, и локальный демон информирует об этом программы, которые работали через это соединение. Если прекращает работу локальный сервис и затем следует его перезапуск, то statd информирует об этом другие компьютеры.

Дисковые квоты в NFS

Если на сервере NFS установлены дисковые квоты для отдельных пользователей, то для того, чтобы пользователь "издалека" мог узнать свою дисковую квоту, запускается демон rquotad.

Вообще говоря, установка дисковых квот (независимо от NFS) выполняется следующим образом:

  1. в файле /etc/vfstab для файловой системы, для которой будет применяться квотирование, устанавливается параметр монтирования quota. Не забудьте демонтировать и снова смонтировать соответствующую файловую систему, если хотите, чтобы параметр оказал воздействие на работу файловой системы немедленно!
  2. затем создается файл quotas в корне этой файловой системы (например, если речь идет о файловой системе /export/home, то файл будет называться /export/home/quotas );
  3. затем с помощью команды edquota устанавливаются квоты для каждого из пользователей в отдельности;
  4. выполняется команда quotaon.

Для выключения поддержки квот достаточно выполнить команду

quotaoff

Для проверки квот в файловых системах надо выполнить команду

quota username

Особенности NFS в системах Solaris

В Solaris NFS организован иначе, нежели в других системах UNIX, и это следует иметь в виду при настройке систем в гетерогенных сетях:

  • файл /etc/dfs/dfstab в других системах называется /etc/exports ;
  • в других системах файл /etc/exports является файлом конфигурации, а не скриптом, вызывающим программу share ;
  • в Solaris после изменения параметров монтирования в файле /etc/dfs/dfstab нужно дать команду shareall для вступления изменений в силу; в других системах следует перезапустить mountd и nfsd, обычно для этого можно использовать сценарий, как и в Solaris;
  • Solaris автоматически становится NFS сервером при загрузке, если в файле /etc/dfs/dfstab указаны экспортированнные каталоги.

Помните, что команда shareall просто выполняет подряд все команды share, содержащиеся в файле /etc/dfs/dfstab. Если этот файл был модифицирован и некоторые команды экспорта каких-то файловых систем были удалены, действие старых команд share, запущенных до модификации файла, продолжится и после выполнения shareall.

Поэтому следует перезапустить mountd для того, чтобы изменения возымели эффект. Внимание: нельзя перезапускать mountd, когда пользователи работают с файловой системой сервера NFS: это может вызвать потери данных и зависание систем – клиентов NFS.

Если требуется ограничить доступ к разделяемой файловой системе только определенной группой машин, следует указать их список команде share:

share -F nfs -o rw=host1:host2 /home/host12

Параметры экспорта в /etc/dfs/dfstab

При экспорте файловых систем можно передавать командам share ряд параметров, указывающих, в каком режиме следует экспортировать те или иные каталоги. Наиболее важные параметры сведены в табл. 7.2:

Например, файл /etc/dfs/dfstab может иметь такой вид для экспорта двух файловых систем:

share -F nfs -o rw=@212.231.110, ro=@192.168.4 /home
share -F nfs -o ro=212.231.110@,root=212.231.110.112 /usr/share/man
Таблица 7.2. Парамеры экспорта файловых систем NFS
Параметр Значение
ro только для чтения – для всех
ro=host1, host2 только для чтения и только указанным компьютерам
rw для чтения и записи – для всех
rw=host1, host2 для чтения и записи, но только указанным компьютерам
root=host1, host2 с указанных компьютеров пользователь root получает доступ к файлам на сервере NFS от имени root (иначе – от имени nobody или указанного в параметре anon)
anon=uid идентификатор пользователя, от имени которого сможет работать с файлами на сервере NFS пользователь root удаленного (клиентского) компьютера, по умолчанию – nobody
nosub запрещается монтировать подкаталоги экспортируемого каталога
nosuid запрещается создавать в экспортируемой файловой системе файлы с установленными битами suid и sgid

Особенности NFS в Solaris версии 9 и новее

В Solaris 9 были добавлены некоторые расширения поддержки NFS, которые улучшили ее производительность:

  • сняты ограничения на размер пакета; остались только ограничения, налагаемые транспортным протоколом, поэтому для NFS через UDP максимальный размер пакета составляет 32 Кб, а для TCP – 1 Мбайт;
  • клиент NFS больше не занимает большое количество портов UDP. Ранее NFS использовала отдельный порт UDP для каждого запроса. Начиная с Solaris 9 клиент NFS по умолчанию использует только один заранее определенный порт. Однако, эта функция настраивается: можно попытаться увеличить число портов, так как это может привести к увеличению производительности;
  • изменен алгоритм выполнения последовательных записей: ранее все запросы на запись выполнялись последовательно клиентом, затем сервером. Введена возможность (для клиента NFS) разрешить приложению выполнять одновременную запись (равно и одновременное чтение и запись) в один и тот же файл. Разрешить такое поведение можно с помощью параметра forcedirectio при монтировании файловой системы. Этот параметр распространяется на все файлы смонтированной файловой системы. Существует возможность разрешить такой режим работы с единственным файлом с помощью функции directio(). По умолчанию (без указания параметра при монтировании) запись в файл производится так же, как и раньше

Статистика сервера NFS

Для получения статистики о работе сервера NFS следует использовать команду nfsstat на таком сервере:

nfsstat -s
Server rpc:
Connection oriented:
calls badcalls nullrecv badlen xdrcall dupchecks
0 0 0 0 0 0
dupreqs
0
Connectionless:
calls badcalls nullrecv badlen xdrcall dupchecks
33 0 0 0 0 3
dupreqs
0
Server nfs:
calls badcalls
33 0
Version 2: (0 calls)
null getattr setattr root lookup readlink
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
read wrcache write create remove rename
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
link symlink mkdir rmdir readdir statfs
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
Version 3: (33 calls)
null getattr setattr lookup access readlink
0 0% 5 15% 1 3% 4 12% 13 39% 0 0%
read write create mkdir symlink mknod
0 0% 1 3% 1 3% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
0 0% 0 0% 0 0% 0 0% 1 3% 0 0%
fsstat fsinfo pathconf commit
3 9% 3 9% 0 0% 1 3%
Server nfs_acl:
Version 2: (0 calls)
null getacl setacl getattr access
0 0% 0 0% 0 0% 0 0% 0 0%
Version 3: (0 calls)
null getacl setacl
0 0% 0 0% 0 0%
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.