Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Деревянко_БС ЭВМ

.pdf
Скачиваний:
66
Добавлен:
31.05.2015
Размер:
3.6 Mб
Скачать

лом взаимодействия клиентов и серверов.

Доступ к локальной файловой системе могут обеспечивать различные протоколы сетевой файловой системы. Так, к файловой системе NTFS можно получить доступ с помощью различных протоколов (рис. 2.5), например, SMB, NCP (NetWare Control Protocol — компании Novell) и NFS (Network File System

— компании Sun Microsystems, популярный в различных вариантах ОС UNIX).

Рис. 2.5. Доступ к одной локальной файловой системе с помощью нескольких протоколов клиент-сервер

За достаточно долгий срок развития сетей в них утвердилось несколько сетевых файловых систем. В локальных сетях на протяжении многих лет доминировала сетевая операционная система NetWare, которая использовала на файловых серверах оригинальную локальную файловую систему NetWare и протокол NCP. Клиенты этой сетевой файловой системы обеспечивали приложениям расширенный интерфейс файловой системы FAT — расширения включали в основном поддержку разграничения прав доступа к файлам и каталогам.

В среде операционной системы UNIX наибольшее распространение получили две сетевые файловые системы — FTP

101

(File Transfer Protocol) и NFS (Network File System). Они перво-

начально разрабатывались для доступа к локальной файловой системе s5/ufs, являющейся основной для большинства ОС семейства UNIX.

2.2.2. Интерфейс сетевой файловой службы

Структура файла

Для любой файловой службы важен вопрос, каким является файл? Во многих системах, таких как UNIX и Windows, файл — это не интерпретируемая последовательность байтов. Значение и структура информации в файле является заботой прикладных программ, операционную систему это не интересует. В ОС мэйнфреймов поддерживаются разные типы логической организации файлов, каждый с различными свойствами. Файл может быть организован как последовательность записей, и у операционной системы имеются вызовы, которые позволяют работать на уровне этих записей.

Большинство сетевых файловых систем, как и локальные файловые системы, рассматривают файлы как последовательности байтов, а не последовательности записей.

Модифицируемость файлов

Важным аспектом файловой модели является возможность модификации файла после его создания. В большинстве сетевых файловых систем файлы могут модифицироваться, но в некоторых распределенных системах единственными операциями с файлами являются create (создать) и read (прочитать). Такие файлы называются неизменяемыми. Для неизменяемых файлов намного легче осуществить кэширование файла и его репликацию, так как исключаются все проблемы, связанные с обновлением всех копий файла при его изменении. Однако проблемы поддержки многих версий неизменяемого файла,

102

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

Семантика разделения (совместного использования) файлов

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

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

UNIX.

Семантика UNIX может быть обеспечена и в распределенных системах, но только если в ней имеется лишь один файловый сервер и клиенты не кэшируют файлы. Для этого все операции чтения и записи направляются на сервер, который обрабатывает их строго последовательно. Чтобы поднять производительность, клиенты обрабатывают локальные копии часто используемых файлов в своих личных кэшах. Для синхронизации файлов немедленно переносят все изменения в кэшированном файле на сервер. Такой подход не эффективен, поэтому обычно используются другие семантики.

Сеансовая семантика. Изменения в открытом файле сначала видны только процессу, который модифицирует файл,

103

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

Семантика неизменяемых файлов. Если сделать файл неизменяемым, то файл нельзя открывать для записи, а можно выполнять только операции create (создать) и read (читать). Тогда изменение файла будет состоять в создании полностью нового файла и занесении его в каталог под новым именем. В этом случае проблема обеспечения одновременного использования файла исчезает для файловой системы, но не для пользователей, которые будут вынуждены вести учет имен своих копий модифицированного файла.

Транзакционная семантика — это использование ме-

ханизма неделимых транзакций, то есть неделимых работ, которые не могут быть выполнены частично.

Управление доступом

С каждым разделяемым файлом обычно связан список управления доступом (Access Control List, ACL). Если локальная файловая система поддерживает механизм ACL для файлов и каталогов, то его использует и сетевая файловая система. Если же механизм защиты в локальной файловой системе отсутствует, то сетевой файловой системе приходится поддерживать его самостоятельно, иногда — упрощенным способом, защищая разделяемый каталог и входящие в него файлы и

104

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

Единица доступа

Файловый интерфейс может быть отнесен к одному из следующих двух типов (моделей).

1.Модель загрузки-выгрузки, где пользователю предла-

гаются средства чтения или записи файла целиком. Схема обработки файла следующая: чтение файла с сервера на машину клиента, обработка файла на машине клиента и запись обновленного файла на сервер. Типичным представителем этого вида файлового интерфейса является служба FTP.

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

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

105

2.2.3. Вопросы реализации сетевой файловой системы

Размещение клиентов и серверов по компьютерам

ив операционной системе

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

втерминах NFS), то другие машины могут иметь к ним доступ. В некоторых системах файловый сервер — это особый компонент серверной ОС, отсутствующий в клиентских компьютерах (пример – ОС NetWare).

Файловые серверы типа stateful и stateless

Файловый сервер может быть реализован по одной из двух схем: с запоминанием данных о последовательности файловых операций клиента (stateful) и без запоминания таких данных (stateless).

1.Серверы stateful работают по схеме, обычной для любой локальной файловой службы. Такой сервер поддерживает тот же набор вызовов, что и локальная система, то есть вызовы open, read, write и т. п. Таблица, отображающая дескрипторы файлов на сами файлы, является хранилищем информации о состоянии клиентов.

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

106

открытых его приложениями файлов.

Преимущества каждого из подходов можно обобщить следующим образом.

Серверы stateless:

отказоустойчивы;

не нужны вызовы open/close;

меньше памяти сервера расходуется на таблицы;

нет ограничений на число открытых файлов;

отказ клиента не создает проблем для сервера.

Серверы stateful:

более короткие сообщения при запросах;

лучше производительность;

возможно опережающее чтение;

возможна блокировка файлов.

2.2.4. Кэширование

Схемы кэширования в сети отличаются по трем вопро-

сам:

месту расположения кэша;

способу распространения модификаций;

проверке достоверности кэша.

На схему кэширования влияет, какая выбрана модель: модель загрузки-выгрузки или модель удаленного доступа. В первом случае файл кэшируется целиком, а во втором – кэшируются только те части файла, к которым выполняется обращение.

Место расположения кэша

Имеются три места для хранения кэшируемых файлов и их частей: память сервера, диск клиента и память клиента.

Память сервера практически всегда используется для кэширования файлов. Файловый сервер может использовать

107

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

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

Кэширование в оперативной памяти клиента позволяет ускорить доступ к данным, но ограничивает размер данных объемом кэша.

Способы распространения модификаций

Существование в сети нескольких копий файла в кэшах клиентов порождает проблему согласования копий.

Одним из путей решения проблемы согласования является использование алгоритма сквозной записи. Когда кэшируемый элемент (файл или блок) модифицируется, новое значение записывается в кэш и одновременно посылается на сервер для обновления главной копии файла (семантика в стиле

UNIX).

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

108

Применяется также сеансовая семантика, по которой запись файла на сервер производится только после закрытия файла. Этот алгоритм называется «запись по закрытию» и приводит к тому, что если две копии одного файла кэшируются на разных машинах и последовательно записываются на сервер, то второй записывается поверх первого.

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

Проверка достоверности кэша

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

1. Клиент связывается с сервером и проверяет, соответствуют ли данные в его кэше данным главной копии файла на сервере:

перед каждым доступом к файлу. Этот способ дискредитирует саму идею кэширования, так как каждое обращение к файлу вызывает обмен по сети с сервером;

периодические проверки. семантику разделения зависит от временных соотношений;

проверка при открытии файла. Этот способ подходит для сеансовой семантики, требует одновремен-

109

ного применения модели доступа загрузки-выгрузки, метода распространения модификаций «запись по закрытию» и проверки достоверности кэша при открытии файла.

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

Когда новый клиент делает запрос на открытие уже открытого файла и сервер обнаруживает, что режим нового открытия входит в противоречие с режимом текущего открытия, то сервер может:

отвергнуть запрос;

поместить запрос в очередь;

запретить кэширование, потребовав от всех клиентов, открывших этот файл, удалить его из кэша.

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

Он отклоняется от традиционной модели взаимодействия клиента и сервера, при которой сервер только отвечает на запросы клиентов. Это усложняет код сервера.

Сервер должен хранить информацию о состоянии сеансов клиентов (тип stateful).

Клиенты должны инициировать проверки достоверности кэша при открытии файлов.

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]