На стороне клиента экспортируемые каталоги выглядят как разделы диска. Для их монтирования используется команда
mount
, но при ее вызове указываются сервер NFS и монтируемый каталог. Эти данные задаются в формате
сервер:путь_к_монтируемому_каталогу
.
Так, например, следующая команда монтирует экспортируемый каталог
/home
в точке файловой системы
/mnt/userfiles
:
# mount larch:/home /mnt/userfiles
Если вы хотите, чтобы экспортируемый каталог был постоянно доступен, вам надо создать запись в файле
/etc/fstab
. Как и при использовании команды
mount
, вместо имени устройства вы указываете имя сервера и путь к экспортируемому каталогу. Тип файловой системы задается как
nfs
(при желании вы можете задать соответствующую опцию и при вызове
mount
, но это не обязательно, поскольку Linux автоматически распознает тип файловой системы). Приведенная ниже запись в файле
/etc/fstab
выполняет те же действия, что и рассмотренный ранее вызов утилиты
mount
.
larch:/home /mnt/userfiles nfs defaults 0 0
В результате пользователь, обращаясь к каталогу
/mnt/userfiles
, на самом деле увидит содержимое каталога
/home
на узле
larch
. С содержимым смонтированного каталога NFS можно выполнять большинство операций, допустимых для локального раздела Linux. Например, вы можете читать, редактировать и удалять файлы, а также выполнять прочие действия. Существуют также операции, которые недопустимы для экспортируемых каталогов, например, вы не можете объявлять раздел NFS как файл подкачки. В большинстве случаев эффективность работы с экспортируемыми каталогами NFS ниже, чем с разделами локального диска, так как обмен по сети осуществляется значительно медленнее, чем обмен с современными жесткими дисками. Однако в отдельных случаях, например при использовании гигабитовой Ethernet-сети, производительность NFS-обмена может даже превышать производительность работы с локальными устройствами, особенно если на клиентской машине используются устаревшие диски. На производительность системы NFS существенное влияние оказывают также быстродействие диска сервера и число клиентов.
Экспортируя каталоги и содержащиеся в них файлы, сервер NFS экспортирует также права доступа к ним. Информацию о пользователях и правах можно применять для контроля обращений к файлам и каталогам. Эти средства можно использовать даже для управления доступом со многих компьютеров, например, в случае, если один сервер NFS обслуживает несколько клиентов. Однако при этом может возникнуть проблема, которая состоит в следующем. Для идентификации пользователей в системе NFS применяются UID и GID. Если такие идентификаторы не совпадают на клиентах и на сервере, это может угрожать безопасности системы. Способы разрешения данной проблемы будут рассмотрены ниже в этой главе.
В последующих разделах будут описаны некоторые опции программы mount, которые влияют на поведение клиентов и серверов NFS и могут быть использованы для увеличения производительность и решения других задач. Ряд опций утилиты mount перечислен ниже.
•
hard
. Если сервер выходит из строя или не отвечает на запросы, программа, которая пытается обратиться к этому серверу, ожидает ответа неопределенно долгое время. Такое поведение системы реализовано по умолчанию.
•
soft
. Если сервер NFS часто выходит из строя и становится недоступным, целесообразно использовать данную опцию. Она позволяет ядру возвращать программе сообщение об ошибке в том случае, если сервер не отвечает в течение установленного
времени (это время задается с помощью опции
timeo=время
).
•
nodev
. Данная опция предотвращает попытки клиента использовать файлы символьных и блочных устройств, находящиеся в составе экспортируемых каталогов NFS. Такая мера увеличивает безопасность системы, так как снижает риск использовать файл устройства, специально включенный в каталог NFS с целью получения несанкционированного доступа к клиентской машине.
•
nosuid
. Эта опция не позволяет клиенту обрабатывать бит SUID в файлах, находящихся в экспортируемом каталоге. Эта опция также призвана повысить защиту системы. Она не дает возможности использовать бит SUID для незаконного получения специальных полномочий.
•
noexec
. Эта опция предотвращает обработку клиентом признака исполняемых файлов в экспортируемых каталогах NFS. Другими словами, пользователь не может запускать на выполнение файлы, содержащиеся в каталогах NFS. В некоторых случаях эта опция неуместна, например, тогда, когда NFS используется для хранения файлов с программами. Если же в каталоге находятся лишь данные, эта опция повысит безопасность системы.
Перечисленные опции можно задавать при вызове команды
mount
, указывая их после
– о
, например:
# mount -о noexec,nodev larch:/home /mnt/userfiles
Если вы создаете запись в файле
/etc/fstab
, данные опции указываются в специально предназначенном поле (в этом поле в приведенном выше примере находилось ключевое слово
defaults
.
Повышение производительности системы
Выше были описаны два способа повышения производительности системы: поддержка NFS ядром (совместно с программой
knfsd
) и использование асинхронного режима. (Необходимо заметить, что асинхронный режим записи повышает риск потери данных вследствие сбоя сервера.) Ниже перечислены другие способы, позволяющие увеличить эффективность работы NFS.
• Оптимизация размера передаваемых блоков. Опции
rsize
и
wsize
программы
mount
определяют размер блоков данных, передаваемых между клиентом и сервером. Размер блока по умолчанию зависит от используемых программ, но чаще всего принимается значение 4096. Команда, в которой явно задается размер блока, выглядит приблизительно так:
larch: /home /mnt/userfiles -о rsize=8192
. При создании записи в файле
/etc/fstab
эти опции помещаются в специальное поле (в приведенном ранее примере в этом поле указано значение
defaults
).
• Оптимизация за счет исключения информации об обращении к файлу. Опция
noatime
утилиты
mount
сообщает Linux о том, что информация о времени обращения к файлу не должна обновляться. В обычных условиях Linux записывает сведения о времени создания и изменения файла, а также о времени последнего обращения к нему. Отказавшись от данных о времени обращения, можно повысить производительность системы.
• Выбор количества экземпляров сервера NFS. Как правило, в сценарии запуска сервера NFS предусматривается одновременное выполнение восьми экземпляров этой программы. Если нагрузка на систему не велика, с ней может справиться и меньшее количество серверов. Если же система постоянно обрабатывает запросы, восьми серверов может оказаться недостаточно. Недостаток серверов при большой нагрузке на систему приводит к что для установления соединения с клиентом потребуется неоправданно большое время. Увеличить производительность можно, выбрав наиболее подходящее число экземпляров сервера. Обычно это значение задается в начале сценария и имеет вид