решения других задач. Ряд опций утилиты 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 предусматривается одновременное выполнение восьми экземпляров этой программы. Если нагрузка на систему не велика, с ней может справиться и меньшее количество серверов. Если же система постоянно обрабатывает запросы, восьми серверов может оказаться недостаточно. Недостаток серверов при большой нагрузке на систему приводит к что для установления соединения с клиентом потребуется неоправданно большое время. Увеличить производительность можно, выбрав наиболее подходящее число экземпляров сервера. Обычно это значение задается в начале сценария и имеет вид RPCNFSDCOUNT=8
.
• Устранение причин снижения производительности, не связанных с работой средств поддержки NFS. Производительность NFS может снижаться по ряду причин, многие из которых непосредственно не связаны с работой сети. Например, если ваша сетевая карта работает медленно, эффективность NFS-обмена будет низкой. Качество работы сервера NFS существенно зависит от используемого жесткого диска. Важно, чтобы данное устройство было достаточно быстродействующим и не создавало излишней нагрузки на центральный процессор. (Для сервера хорошо подойдет EIDE-контроллер с поддержкой адаптера DMA или SCSI; производительность устройств SCSI выше, чем производительность дисков EIDE.)
Если производительность сервера NFS недостаточна, необходимо прежде всего выяснить, что является источником проблем: программное обеспечение сервера NFS, клиент-программы или конфигурация сети. Возможно также, что производительность снижается по другим причинам, например, из-за недостаточной эффективности работы жестких дисков. Выяснить это можно, выполняя тестирование с использованием различных протоколов и с участием разных клиентов. (Для проверки производительности жестких дисков можно вызвать команду hdparm
, указав опцию -t
.)
Отображение пользовательских имен
На компьютере под управлением Linux, работающем независимо от других машин, за отображение пользовательских имен в числовые идентификаторы (UID) отвечает файл /etc/passwd
. Аналогично, информация о соответствии имен групп и их идентификаторов (GID) хранится в файле /etc/group
. В системе NFS существуют как минимум два независимых файла /etc/passwd
: один — на сервере и по одному — на каждом клиенте. При этом может возникнуть проблема, связанная с тем, что одному и тому же пользователю на сервере и на клиентской машине будут соответствовать различные UID. Эта проблема может быть решена различными способами.
При рассмотрении данного вопроса предполагается, что пользователь имеет учетную запись и на клиентском компьютере, и на сервере. Если сервер используется только в качестве файлового сервера и содержащаяся на нем информация доступна только для чтения, учетная запись пользователя на нем может отсутствовать. Такая же конфигурация может быть реализована на некоторых серверах, допускающих чтение и запись. При настройке сервера, который допускает чтение и запись и обслуживает несколько пользователей, вопрос синхронизации числовых идентификаторов становится очень важным. Если на сервере NFS хранятся файлы, принадлежащие некоторому пользователю, целесообразно создать на сервере учетную запись данного даже если он никогда не будет регистрироваться на этой машине. Если же пользователь не является владельцем ни одного из файлов, хранящихся на сервере, отображать пользовательское имя не требуется.