Поддержка нескольких иерархий в сервере NFS
Напомним, что для обеспечения возможности предоставлять дистанционный доступ к файлам с разнотипных компьютеров проектировщики системы NFS предусмотрели интерпретацию всех составных имен в клиентских программах. Это позволяет использовать и в клиенте, и в сервере собственную схему именования файлов, соответствующую применяемой в них операционной системе, и исключить необходимость закладывать в тот или иной программный компонент информацию об операционной среде другого компонента. Купить металлочерепица, металлочерепица со склада в новосибирске.
Ограничение на использование полных составных имен практически не отражается на выполнении большинства операций с файлами. Однако при дистанционном доступе к файлам такое ограничение создает серьезную проблему, поскольку означает, что в клиентской программе нельзя применять полное составное имя для обозначения удаленной файловой системы или каталога.
В ранних версиях протокола NFS предполагалось, что каждый сервер предоставляет доступ только к одной удаленной иерархии каталогов. Первоначальный протокол включал функцию NFSPROC_ROOT, которая могла быть вызвана в клиентской программе для получения дескриптора корневого каталога в иерархии каталогов сервера. После получения в клиентской программе дескриптора корневого каталога можно было выполнять чтение записей каталогов и следовать по произвольному пути через эту иерархию.
Современные версии NFS позволяют использовать один сервер для предоставления дистанционного доступа к файлам, находящимся в нескольких иерархиях каталогов. В подобных случаях недостаточно иметь лишь процедуру, которая возвращает дескриптор единственного корневого каталога. Для обеспечения поддержки одним сервером нескольких иерархий в системе NFS должен использоваться дополнительный механизм, позволяющий клиенту указать одну из возможных иерархий каталогов и получить дескриптор ее корневого каталога.
Протокол монтирования
В текущей версии NFS для решения задачи поиска корневого каталога применяется отдельный протокол, получивший название протокола монтирования и определенный с использованием средств дистанционного вызова процедур. Однако протокол монтирования не составляет часть программы дистанционного доступа NFS. Хотя он и требуется для сервера NFS, протокол монтирования поддерживается отдельной удаленной программой.
Программное обеспечение протокола монтирования предоставляет четыре основных службы, которые требуются клиентам для работы с системой NFS. Во-первых, оно позволяет клиенту получить список иерархий каталогов (т.е. файловых систем), к которым клиент может получить доступ с помощью системы NFS. Во-вторых, оно принимает полные составные имена и позволяет указывать в клиентской программе конкретную иерархию каталогов. В-третьих, это программное обеспечение выполняет аутентификацию запросов каждого клиента и проверяет права клиента на доступ к затребованной иерархии. В-четвертых, оно возвращает дескриптор файла для корневого каталога иерархии, указанной клиентом. Клиент сохраняет дескриптор корневого каталога, возвращенный программным обеспечением протокола монтирования, и использует этот дескриптор при выполнении последующих запросов к серверу NFS.
Имя протокола монтирования и основные принципы работы были позаимствованы в системе UNIX; в этой операционной системе протокол монтирования применяется для монтирования удаленной файловой системы в собственном пространстве имен. В клиентской системе протокол монтирования используется для обеспечения взаимодействия с сервером и проверки прав доступа к удаленной файловой системе перед введением соответствующей точки монтирования в локальное иерархическое пространство имен. Если программное обеспечение протокола монтирования откажет в предоставлении доступа, то клиентское программное обеспечение сообщит об ошибке системному администратору. Если же программное обеспечение протокола монтирования разрешит доступ, то клиентское программное обеспечение сохранит дескриптор корневого каталога удаленной файловой системы, чтобы дать возможность использовать этот дескриптор при осуществлении попытки открыть файл в этой файловой системе.