su13@pochta.ru

| Первый | Второй | Третий | Четвёртый | Пятый | Шестой | Седьмой |


//

Монтирование тома NFS

Монтирование томов NFS очень похоже на монтирование обычных файловых систем. Команда mount имеет следующий вид:
# mount -t nfs nfs_volume local_dir options

Параметр nfs_volume имеет вид remote_host:remote_dir. Он указаывает определенную файловую систему NFS, причем можно опустить параметр -t nfs.

Имеется ряд дополнительных опций, которые Вы можете определить в команде mount. Они могут быть заданы переключателем -o в командной строке или в области опций файла /etc/fstab. В обоих случаях составные опции отделяются друг от друга запятыми. Опции, определенные в командной строке, всегда отменяют те, что были заданы в файле fstab.

Типовая запись в /etc/fstab могла бы быть такой:
# volume              mount point       type  options
news:/var/spool/news  /var/spool/news   nfs   timeo=14,intr

Этот значение затем может быть использовано при монтировании:
# mount news:/var/spool/news

В отсутствии записи в fstab, NFS устанавливает большинство параметров mount по умолчанию. Например, предположим, что Вы монтируете home-каталоги Ваших пользователей с машины moonshot, которая использует заданный по умолчанию размер блока, равный 4k, для операции чтения-записи. Вы могли бы уменьшить размер блока до 2k, чтобы подойти под размер Linux-пакетов, введя следующую команду:
# mount moonshot:/home /home -o rsize=8192,wsize=8192

Список всех допустимых опций есть на man-странице по nfs(5). Ниже приведен список наиболее популярных опций:

rsize=n и wsize=n

Точно определяют размер пакетов, используемый NFS-клиентами при чтении и записи запросов, соответственно. В настоящее время они определены по умолчанию в зависимости от версии ядра, но обычно это 1024 байта, из-за предела на размер UDP-пакета.

timeo=n

Устанавливает время (в десятых долях секунды), которое NFS-клиент будет ждать запрос, чтобы завершить работу. Значение по умолчанию 7 (0.7 секунды). Что произойдет после окончания времени ожидания зависит от того, используете Вы опцию hard или soft.

hard

Отмечает этот том как hard-смонтированный. Задано по умолчанию. Эта опция предписывает серверу выдать сообщение на консоль при окончании времени ожидания и продолжать попытки смонтировать том.

soft

Противоположность hard. В случае окончания времени ожидания процесс, который пытается выполнить действие с файловой системой, получит ошибку ввода-вывода.

intr

Разрешает прервать обращение к NFS. Удобно в случае недоступности сервера.

Кроме rsize и wsize, все эти опции обращаются к клиенту, если сервер стал временно недостижим. Они работают вместе следующим способом: всякий раз, когда клиент посылает запрос к NFS-серверу, он ожидает, что операция закончится после заданного интервала времени (точно установленного в опции блокировки по времени, timeout). Если никакого подтверждения не получено в этот промежуток времени, то появится так называемая незначительная остановка по времени (minor timeout), и операция повторится, но уже с интервалом блокировки по времени вдвое большим. После достижения максимальной блокировки по времени (60 секунд), происходит глобальная блокировка по времени (major timeout). Вот тут-то и срабатывают опции hard или soft .

По умолчанию, глобальная блокировка по времени заставит клиента напечатать сообщение на консоль и начать все снова. В принципе это может продолжаться вечно. Значения, которые упрямо повторяют операцию до тех пор, пока сервер не становится доступным, называются hard-mounted. В противоположность им значения soft-mounted генерируют ошибку ввода-вывода для процесса всякий раз, когда происходит глобальная блокировка по времени. Из-за того, что write-behind вводится буферным кэшем, это условие ошибки не распространяется непосредственно на процесс прежде, чем он вызовет функцию write в следующий раз. Дело в том, что иначе программа никогда не сможет убедиться в том, что операция записи в ресурс, помеченный как soft-mounted, имела место вообще.

Поставили ли Вы hard или soft-mount значение, это не только вопрос вкуса, но также и то, что Вы должны сделать с той информацией, которую хотите получить от этого значения. Например, если Вы монтируете Ваши Х-программы NFS, Вы конечно не хотели бы, чтобы ваш X-сеанс рухнул только потому, что кто-то свалил сеть, запустив семь копий xv в одно и тоже время, или скажем, вытащив Ethernet-разъем. Используя hard-mounting, Вы удостоверитесь в том, что компьютер будет ждать, пока не появится возможность заново восстановить контакт с nfs-сервером. С другой стороны, некритические данные типа новостей или FTP-архив могут быть soft-mounted, так что это не повесит сеанс в случае, если удаленная машина должна стать временно недосягаемой или просто выключенной. Если сетевая связь с сервером медленная или проходит через программу маршрутизации, то Вы можете также увеличить начальную блокировку по времени, используя опцию timeo или значение hard-mount, но разрешите прерывание вызова NFS, так чтобы Вы могли прервать любое действие с файлами.

Hard-mount представляют проблему, потому что, по умолчанию, операции с файлами не прерываются. Таким образом, если процесс пытается, например, записать файл на удаленной машине, а она недоступна, программа пользователя висит, а пользователь бегает вокруг нее, не в состоянии прервать процесс записи. Если Вы используете опцию intr при hard mount, сигналы процессу прервут NFS-вызов, так что пользователь все же сможет продолжать работу.

Обычно daemon rpc.mountd будет следить, какие каталоги какими хостами были смонтированы. Эта информация может быть отображена при использовании программы showmount, которая также включена в пакет сервера NFS:
# showmount -e moonshot
Export list for localhost:
/home <anon clnt>
# showmount -d moonshot
Directories on localhost:
/home
# showmount -a moonshot
All mount points on localhost:
localhost:/home

GNU OCXE GNU LINUX
Hosted by uCoz