Команда mount понимает запись вида
имя_коыпьютера:каталог
как путь к каталогу, расположенному на другом компьютере.
Команда mount и ее NFS-расширения — самая важная область деятельности системного администратора на NFS-клиенте. Во многих системах добиться повышения производительности можно с помощью демона блочного ввода-вывода biod (иногда он называется nfsiod). Этот демон не относится к числу обязательных, но мы настоятельно рекомендуем им пользоваться.
Демоны biod и nfsiod: кэширование на стороне клиента
При работе с файловыми системами демон biod/nfsiod выполняет базовые операции блочного кэширования по алгоритму опережающего чтения и отстающей записи. Он доступен как в NFS 2, так и в NFS 3. Мы советуем запускать этот демон на всех NFS-клиентах, хотя это и не является строго обязательным требованием. Наличие или отсутствие кэшируюшего демона не влияет на решение задач администрирования.
Как и nfsd, демон biod в качестве аргумента принимает число, показывающее, сколько экземпляров самого себя ему нужно запустить. Для обычной машины достаточно будет четырех или восьми копий. Если демоны nfsd и biod работают на одном компьютере, то разумнее будет разделить "оптимальное" число экземпляров между ними. Все зависит от того, как используется система — вам придется поэкспериментировать.
Во FreeBSD число экземпляров демона nfsiod задается в командной строке с помощью флага -n.
Монтирование удаленных файловых систем
Для создания временных сетевых точек монтирования может использоваться команда mount. Но те монтируемые файловые системы, которые являются частью постоянной конфигурации, должны быть перечислены в файле /etc/fstab (/etc/vfstab в Solaris), в таком случае они будут монтироваться автоматически на этапе начальной загрузки. С другой стороны, они могут быть обработаны службой автоматического монтирования, например программой automount или amd (подробнее об этом речь пойдет начиная с параграфа 17.6).
Следующие элементы файла fstab предназначены для монтирования файловых систем /beast/users и /usr/man машин beast и chimchim:
# filesystem mountpoint fstype flags dump fsck
beast:/beast/users /beast/users nfs rw,bg,intr,hard 0 0
chimchim:/usr/man /usr/man nfs ro,bg,intr,soft 0 0
В Solaris файл /etc/vfstab имеет немного другой формат, но опции NFS указываются схожим образом. В основном это те же опции, что и в других системах.
Добавляя элементы в файл fstab/vfstab, обязательно создавайте с помощью команды mkdir каталоги точек монтирования. Можно сделать так, чтобы изменения вступали в силу немедленно. Для этого в Solaris или HP-UX следует выполнить команду mount -a -F nfs, а в Red Hat и FreeBSD — вместо флага -F указать флаг -t.
В поле флаги файла /etc/fstab задаются параметры точек монтирования NFS. Наиболее распространенные флаги перечислены в табл. 17.9.
Таблица 17.9. Флаги монтирования NFS
|
Флаг
|
Система1
|
Назначение
|
|
rw
|
SHRF2
|
Монтирование файловой системы для чтения-записи (она должна экспортироваться сервером в режиме чтения-записи)
|
|
ro
|
SHRF2
|
Монтирование файловой системы только для чтения
|
|
bg
|
SHRF
|
Если монтирование прошло неудачно (сервер не отвечает), перевести операцию в фоновый режим и продолжать обрабатывать другие запросы монтирования
|
|
hard
|
SHR3
|
Если сервер отключился, операции, которые пытаются получить к нему доступ, повторяются до тех пор, пока сервер не включится вновь
|
|
soft
|
SHRF
|
Если сервер отключился, операции, которые пытаются получить к нему доступ, завершаются, выдавая сообщение об ошибке; этот флаг полезно устанавливать для того, чтобы предотвратить зависание процессов в случае неудачного монтирования не очень важных файловых систем
|
|
intr
|
SHRF
|
Позволяет прерывать с клавиатуры заблокированные операции (и заставляет их выдавать сообщения об ошибках)
|
|
nointr
|
SHRF2
|
Не позволяет прерывать с клавиатуры заблокированные операции
|
|
retrans=n
|
SHRF4
|
Указывает, сколько раз нужно повторить запрос прежде чем будет выдано сообщение об ошибке (файловой системе, смонтированной c флагом soft)
|
|
timeo=n
|
SHRF4
|
Устанавливает интервал тайм-аута для запросов (в десятых долях секунды)
|
|
rsize=w
|
SHRF4
|
Задает размер буфера чтения равным n байтам
|
|
wsize=n
|
SHRF4
|
Задает размер буфера записи равным n байтам
|
|
vers=n
|
SH
|
Задает версию протокола NFS: 2 или 3 (обычно определяется автоматически)
|
|
nfsv3, nfsv2
|
F
|
Задает версию протокола NFS: 2 или 3 (обычно определяется автоматически)
|
|
proto=протокол
|
S
|
Назначает транспортный протокол; возможные значения — tcp и udp
|
|
tcp
|
RF
|
Выбирает TCP в качестве транспортного протокола, по умолчанию принят протокол UDP
|
1 Рассматриваемые системы Solaris, HP-UX, Red Hat Linux и FreeBSD обозначень как S, H, R, и F соответственно.
2 Этот флаг не упоминается в документации к FreeBSD, но работает.
3 Во FreeBSD не разрешается указывать данный флаг явно, но задаваемое им поведение принято по умолчанию.
4 Во FreeBSD эти флаги называются по-другому: retrans — -x, timeo — -t. rsize — -r, wsize — -w.
Файловые системы, смонтированные с флагом hard, могут вызвать зависание процессов при отключении серверов. Это особенно неприятно, когда такими процессами оказываются стандартные демоны. Вообще говоря, использование флагов soft и intr позволяет сократить число проблем, связанных с NFS. Но эти флаги могут вызывать нежелательные побочные эффекты (например, останов 20-часового процесса моделирования из-за временного сбоя в сети после 18 часов работы). Некоторые средства для борьбы с проблемами монтирования предлагает программа amd (описывается в параграфе 17.8).
Флаги, задающие размеры буферов чтения и записи, применимы в отношении обоих протоколов, TCP и UDP, но оптимальные значения будут разными. В случае TCP буфер должен быть большим, поскольку данные передаются эффективнее. (В Solaris по умолчанию принят размер 32 Кбайт.) В случае UDP, если сервер и клиент находятся в одной сети, оптимальный размер буфера — 8 Кбайт. В некоторых системах по умолчанию установлены гораздо меньшие значения (в Red Hat, например, всего 1 Кбайт).
Демонтирование сетевых файловых систем осуществляется командой umount.
Выбор порта
Клиенты NFS при подключении к серверу NFS могут использовать любой TCP- или UDP-порт. Но некоторые серверы требуют, чтобы запросы поступали из привилегированного порта (номер которого меньше, чем 1024). В других серверах данное требование может включаться пользователем. В мире персональных компьютеров и настольных UNIX-станций применение привилегированных портов не приводит к реальному повышению безопасности системы.
Большинство клиентов NFS следует традиционному (и по-прежнему рекомендуемому) подходу: по умолчанию выбирается привилегированный порт, что позволяет предотвратить возникновение конфликтов.