Для повторного монтирования файловых систем всех типов, включая NFS, в Unix используется информация из специальной таблицы. Следует очень осторожно вносить изменения в эту таблицу, поскольку от нее во многом зависит доступ пользователей к программам и файлам.
В различных вариантах Unix используется один из двух форматов. В системах Linux и BSD применяется файл /etc/fstab, а в Solaris, точнее в нашей подопытной системе типа System V, - файл /etc/vfstab.
Формат записей NFS в файле Solaris vfstab следующий:
файловая система - точка монтирования nfs - yes параметры
Поля записей расположены в строго определенном порядке и разделяются пробелами. Поля, не выделенные курсивом (оба дефиса, слова nfs и yes), являются ключевыми словами и должны фигурировать в записях точно в таком виде, файловая система - это имя каталога на сервере, точка монтирования - путь к локальной точке монтирования, а о параметрах монтирования мы поговорим ниже. Пример записи NFS файла vfstab:
jerboas:/home/research - /home/research nfs - yes rw.soft
Данная запись монтирует файловую систему NFS jerboas:/home/research в локальной точке монтирования /home/research. Файловая система монтируется с параметрами rw и soft. Мы уже обсуждали распространенные параметры режимов rw (read/write, чтение/запись) и го (read-only, только для чтения), однако параметров NFS существует гораздо больше. В системах Solaris доступны следующие параметры монтирования NFS:
- remount - Если файловая система уже смонтирована в режиме только для чтения, перемонтировать ее в режиме чтения/записи.
- soft - Если сервер не отвечает, сообщить об ошибке и не повторять попытку монтирования.
- timeo=n - Определяет длительность интервала ожидания, по истечении которого выдается сообщение об ошибке (в секундах).
- hard - Если сервер не отвечает, повторять попытки монтирования, пока не будет получен ответ. Режим по умолчанию.
- bg - Повторять попытки в фоновом режиме, чтобы не блокировать процесс загрузки системы.
- fg - Повторять попытки в приоритетном режиме. Данный параметр может заблокировать процесс загрузки системы повторениями попыток монтирования. По этой причине параметр fg используется преимущественно при отладке.
- intr - Разрешает принудительное завершение процесса, ожидающего ответа от сервера, прерыванием с клавиатуры. Жестко смонтированные файловые системы могут приводить к «зависанию» процессов, поскольку клиент бесконечно повторяет попытки монтирования, независимо от работоспособности сервера. Параметр intr принимается по умолчанию.
- noint r - Запрещает прерывания с клавиатуры. Как правило, это плохая идея.
- nosuid - Запрещает запуск исполняемых файлов из смонтированных файловых систем в режиме setuid. Повышает защищенность, но может ограничивать полезность приложений.
- acdirmax=n - Ограничивает продолжительность кэширования атрибутов каталогов временем в п секунд. По умолчанию значения хранятся не более 60 секунд. Частое повторение запросов по атрибутам файловой системы - одна из основных причин роста трафика NFS. Кэширование этой информации помогает сократить объем передаваемых данных.
- acdirmin=n - Устанавливает минимальное время кэширования атрибутов каталога. По умолчанию 30 секунд.
- acregmax=n - Устанавливает максимальное время кэширования атрибутов файлов. По умолчанию 60 секунд.
- acregmin=n - Устанавливает минимальное время кэширования атрибутов файлов. По умолчанию 3 секунды.
- actirneo=n - Устанавливает общее значение для параметров acdirmax, acdirmin, acregmax и acregmin.
- grpid - Предписывает использовать идентификатор группы родительского каталога при создании файлов. В отсутствие данного параметра используется действующий идентификатор группы вызывающего процесса.
- noac - Запрещает кэшировать информацию. По умолчанию кэширование включено и может включаться принудительно при помощи параметра ас.
- port=n - Указывает номер IP-порта сервера. posix - Предписывает работать с файловой системой по стандарту POSIX. POSIX - это широкоплановый стандарт взаимодействия систем Unix, включающий многочисленные стандарты на файловые системы. В частности, определяет максимальную длину имен файлов и методы блокировки файлов.
- proto=protocol - Позволяет указать транспортный протокол для NFS.
- public - Предписывает использовать открытый дескриптор файла при подключении к серверу NFS.
- quota - Предписывает использовать ограничительные квоты пользователей для данной файловой системы.
- noquota - Запрещает использовать ограничительные квоты пользователей для данной файловой системы.
- retrans-n - Определяет число повторных попыток передачи при использовании транспортного протокола, не предусматривающего создание соединений.
- retry=n - Определяет число повторных попыток монтирования. По умолчанию попытка повторяется 10000 раз.
- rsize=n - Определяет размер буфера чтения в байтах. Для NFS версии 3 размер по умолчанию равен 32 768 байтам.
- sec-type - Указывает тип защиты для транзакций NFS. Значения типа для команды mount в Solaris 8 идентичны описанным для команды share: sys, dh, krb4 и none.
- wsize=n - Определяет размер буфера записи в байтах. Для NFS версии 3 размер по умолчанию равен 32 768 байтам.
- vers=version - Указывает версию NFS для данной операции монтирования. По умолчанию система автоматически выбирает наиболее современную версию NFS, реализованную как клиентом, так и сервером.
В Solaris файловые системы, определенные в файле vfstab, монтируются командой mount all, выполняемой из загрузочного сценария. В системе Linux загрузочный файл содержит команду mount с ключом -a, который предписывает смонтировать все файловые системы, обозначенные в fstab.1 Формат записей NFS в файле /etc/fstab следующий:
файловая система точка монтирования nfs параметры
Порядок следования полей должен соответствовать указанному. Поля разделяются пробелами. Ключевое слово nfs является обязательным для файловых систем NFS. файловая система - это имя каталога, который необходимо смонтировать. точка монтирования - путь к локальной точке монтирования. В качестве параметров могут фигурировать любые параметры монтирования Linux.
Параметры монтирования в Linux в значительной степени повторяют параметры монтирования NFS в Solaris. Параметры rsize, wsize, timeo, ret rans, acregmin, acregmax, acdirmin, acdirmax, actimeo, retry, port, bg, fg, soft, hard, intr, nointr, ас , noac, а также posix являются общими для Linux и Solaris. Кроме того, в Linux существуют:
- mountport=n Указывает порт для использования mountd.
- mounthost=name Указывает, на каком сервере работает mountd.
- mountprog=n Указывает номер программы RPC для mountd на удаленном узле.
- mountvers=n Указывает номер версии RPC для mountd на удаленном узле.
- nfsprog=n Указывает номер программы RPC для nfsd на удаленном узле.
- nfsvers=n Указывает номер версии RPC для nfsd на удаленном узле.
- namlen=n Указывает, какая максимальная длина имен файлов поддерживается удаленным сервером.
- nocto Запрещает получение атрибутов при создании файла. По умолчанию атрибуты копируются. Принудительно такого поведения можно добиться при помощи параметра cto.
- tcp Предписывает NFS использовать в качестве транспортного протокола TCP.
- udp Предписывает NFS использовать в качестве транспортного протокола UDP.
- nolock Предотвращает запуск демона lockd. По умолчанию демон lockd запускается и может запускаться принудительно при помощи параметра lock.
Наконец, существует ряд параметров, действующих не только для NFS. Их можно использовать с командой mount при монтировании файловых систем Всех типов. В табл. 9.1 перечислены распространенные параметры монтиро- вания для систем Linux.
Таблица 9.1. Распространенные параметры монтирования
Параметр | Назначение |
async | Использовать асинхронный файловый ввод/вывод. Операции записи подтверждаются непосредственно после получения информации в целях повышения производительности |
auto | Монтировать файловую систему, когда используется ключ -а |
dev | Разрешить использование файлов символьных и блочных специальных устройств в файловой системе |
exec | Разрешить исполнение файлов из файловой системы |
noauto | Не монтировать файловую систему, когда используется ключ -а |
nodev | Запретить использование файлов символьных и блочных специальных устройств в файловой системе |
noexec | Запретить исполнение файлов из файловой системы |
nosuid | Запретить исполнение программ из файловой системы в режимах setuid и setgid |
nouser | Разрешить монтирование файловой системы только пользователю root |
remount | Перемонтировать файловую систему с новыми параметрами |
ro | Монтировать данную файловую систему в режиме только чтения |
rw | Монтировать данную файловую систему в режиме чтения/записи |
suid | Разрешить исполнение программ в режимах setuid и setgid |
sync | Использовать синхронный файловый ввод/вывод. Операции запйси подтверждаются только после записи данных на диск в целях повышения надежности |
user | Разрешить монтирование файловой системы обычным пользователям |
atime | Обновлять отметку времени доступа к узлу inode при всех операциях доступа |
noatime | Не обновлять отметку времени доступа к узлу inode |
defaults | Установить параметры rw, suid, dev, exec, auto, nouser и async |
Команда grep для файла fstab позволяет просмотреть примеры записей NFS.
% grep nfs /etc/fstab jerboas:/usr/spool/mail /usr/spool/mail nfs rw 0 0 jerboas:/usr/man /usr/man nfs rw 0 0 jerboas:/home/research /home/research nfs rw 0 0
Мы видим, что в файле /etc/fstab существуют записи для трех файловых систем NFS. Команда загрузочного сценария mount -а повторно монтирует эти каталоги при каждой загрузке системы.
Файлы vfstab и fstab реализуют наиболее распространенный способ монтирования файловых систем в процессе загрузки. Существует и другой механизм автоматического монтирования файловых систем NFS - при необходимости. Речь идет об автомонтировщике.