Протоколы сетевой файловой системы (протокол NFS и протокол монтирования)

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

Введение

В предыдущей главе рассматриваются понятия, лежащие в основе системы NFS (Network File System — Сетевая файловая система) компании Sun, и показано, что основная часть этих понятии и многие особенности реализации были взяты из файловой системы UNIX. В настоящей главе продолжается описание NFS с точки зрения реализованного в ней протокола1. Внимание акцентируется на том, что система NFS может быть определена как удаленная программа с использованием технологии ONC RPC и что каждая операция с файлом соответствует дистанционному вызову процедуры.

Применение средств дистанционного вызова процедур для определения протокола

В главах с 21 по 23 показано, как может применяться технология RPC для разделения программы на компоненты, выполняемые на отдельных компьютерах. Многие программисты используют технологию RPC именно так, как описано в этих главах: они вначале разрабатывают нераспределенную программу, а затем с помощью средств RPC создают ее распределенную версию. В настоящей главе был выбран другой подход. В ней показано, как использовать средства RPC для определения протокола без привязки его к какой-либо конкретной программе.

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

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

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

Хотя технология RPC предоставляет удобный способ определения протокола, она не упрощает проектирование протокола, а также не гарантирует его эффективность.