NFS. Настройка сервера
Особенности 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 ряд параметров, указывающих, в каком режиме следует экспортировать те или иные каталоги. Наиболее важные параметры сведены в табл. 18.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
Особенности 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%
Кэширование файловой системы
Ускорить доступ к любой медленной файловой системе, такой как удаленная система NFS или файловая система привода CD-ROM, можно за счет создания файловой системы кэша. Проще говоря, содержимое медленной файловой системы может быть закэшировано на локальном диске. Управление такой файловой системой кэша (cachefs) осуществляется утилитой cfsadmin.