Клиент NFS в системе UNIX

Опубликовано в Технологии > Серверные технологии Продолжение

Напомним, что в такой системы UNIX, как Linux, для построения единой унифицированной иерархии имен на основе отдельных файловых систем, находящихся на нескольких жестких дисках, используется механизм монтирования. В реализациях клиентского программного обеспечения NFS для системы UNIX предусмотрена расширенная версия механизма монтирования для включения удаленных файловых систем в общую иерархию имен наряду с локальными файловыми системами. С точки зрения прикладного программиста, основным преимуществом использования механизма монтирования является единообразие, поскольку все имена файлов имеют одинаковую форму. В прикладной программе невозможно определить, является ли файл локальным или удаленным, исходя лишь из одного синтаксиса имени файла. Если путь, указанный в вызове функции open, включает каталог, смонтированный в системе NFS, то операционная система в конечном итоге находит точку монтирования файловой системы удаленного компьютера и передает управление клиентскому программному обеспечению NFS. Клиент NFS завершает операцию открытия файла, продолжая интерпретировать и отыскивать компоненты составного имени. В конечном итоге клиент NFS доходит до конца составного имени и возвращает информацию о файле на удаленном компьютере. Система создает дескриптор для этого удаленного файла, а приложение использует этот дескриптор для последующего выполнения операций чтения или записи. Таким образом, при открытии удаленного файла приложение получает для доступа к этому файлу целочисленный дескриптор, точно так же как и при открытии локального файла. Связанная с этим дескриптором информация, которая указывает, что этот файл является удаленным и доступ к нему осуществляется через NFS, хранится только в операционной системе.

При выполнении в приложении любой операции с дескриптором файла (например, операции чтения) система проверяет, относится ли этот дескриптор к локальному файлу или удаленному файлу. Если это — локальный файл, операционная система выполняет операцию, как обычно. Если файл является удаленным, операционная система вызывает клиентскую программу NFS, которая преобразует эту операцию в эквивалентную операцию NFS и передает на сервер дистанционный вызов процедуры.

Выполнение операций монтирования в системе NFS

При вводе записей монтирования NFS в таблицу монтирования UNIX необходимо указать удаленный компьютер, на котором функционирует сервер NFS, каталог на этом сервере, локальный каталог, в котором будет выполнено монтирование, и дополнительные сведения об операции монтирования. Например, ниже показана часть результатов выполнения команды mount системы UNIX и приведена информация об операциях монтирования NFS, выполненных на одном из компьютеров в Университете Пердью (записи, не относящиеся к операциям монтирования NFS, были удалены):

arthur:/pl	on	/pi    type nfs	(rw,grpid,intr,bg,noquota)
arthur:/p4	on	/p4    type nfs	(rw,grpid,intr,bg,noquota)
ector: /u4	on	/u4    type nfs	(rw,grpid,soft,bg,noquota)
gwen:   /	on	/gwen type nfs	(rw,grpid,soft,bg,noquota)
gwen:   /u5	on	/u5    type nfs	(rw,grpid,soft,bg,noquota)
 

Каждая строка в этом листинге соответствует одной операции монтирования файловой системы NFS. В первом поле каждой строки указан компьютер, на котором работает сервер NFS, и каталог на этом сервере, а в третьем поле указан локальный каталог, в котором смонтирована удаленная файловая система. Например, запись arthur:/pl указывает каталог /р1 на компьютере arthur, который смонтирован в локальном каталоге /р1. Файловая система /р1 компьютера arthur смонтирована в локальном каталоге с тем же именем, чтобы пользователи обоих компьютеров могли обращаться к файлам с использованием одинаковых имен.

Все операции монтирования, показанные в этом примере, принадлежат к типу nfs, а это означает, что они относятся к удаленным файловым системам, доступ к которым предоставляется через NFS. Кроме того, в каждой строке приведены параметры, заключенные в круглые скобки, которые сообщают дополнительные сведения о монтировании. Как и при монтировании локальных файловых систем, для удаленной файловой системы можно указать, допускает ли она чтение и запись (rw) или только чтение (г).

Система NFS предусматривает два основных метода дистанционного монтирования. Метод мягкого монтирования означает, что в клиенте NFS необходимо применять механизм тайм-аута и сообщать пользователю о том, что сервер находится в автономном режиме, если установка тайм-аута истекает до успешного завершения попытки монтирования. Применение жесткого монтирования означает, что в клиенте NFS не должен использоваться механизм тайм-аута.

Обычно выполнение всех операций монтирования происходит автоматически во время запуска системы. После завершения монтирования NFS прикладные программы и пользователи не имеют возможности различать между собой локальные и удаленные файлы. Пользователь может применять обычную прикладную программу для работы с удаленным файлом так же легко, как и с локальным файлом. Например, пользователь может вызвать на выполнение стандартный текстовый редактор для редактирования удаленного файла, а редактор выполняет операции с этим файлом точно так же, как и с локальным файлом. Кроме того, пользователь может перейти в удаленный каталог или вернуться в локальный каталог, просто указав составное имя, которое пересекает одну из точек монтирования.