- •Ограничения.
- •Механизм передачи сообщений.
- •Синхронизация.
- •Вызов удалённых процедур.
- •Назначения стабов.
- •Генерация стабов.
- •Формат сообщений в rpc.
- •Модель сетевой файловой системы (сфс).
- •Модифицируемость файлов.
- •Интерфейс сфс.
- •Единицы доступа.
- •Распределение клиентов и серверов по ос.
- •Кэширование.
- •Репликация.
- •Управление репликацией.
- •Согласованность реплик.
- •Примеры сетевых файловых служб ftp, nfs.
- •Организация базы справочных данных.
- •Служба nds и файловая система.
Единицы доступа.
Файловый интерфейс относится к 1 из 2 типов в зависимости того, поддерживается ли модель загрузки-выгрузки или модель удалённого доступа. Если первый вариант, то пользователям предлагаются средства чтения или записи файла целиком. Чтение файла с сервера на клиентское устройство, обработка в файловом устройстве и запись обновлённого файла на сервер. Данный файловый интерфейс реализуется посредством службы FTP. Пользователь должен применить команду get имя файла для перемещения с сервера клиенту, а put для обратного. Преимущества: концептуальная простота, передача файла целиком эффективна в отношение. Недостаток: требование к объёму дисковой памяти, который должен поместить любой файл, хранящийся на сервере, неэффективно перемещать весь файл, если нужна его небольшая часть, реализация интерфейса предполагает прозрачности операций, пользователь должен сам набирать команды для перемещения файл. Вторая модель предполагает открытие и закрытие файлов, чтение и запись частей файла, позиционирование в файле, проверка и изменение атрибутов в файле. Если модель загрузки-выгрузки обеспечивала только хранение и перемещение файла, то в данном случае все файловые операции выполняются на серверах, а клиенты генерируют запросы на их отработку. Преимущества: низкие требования к дисковому пространству на клиентских устройствах и исключение необходимости передачи целого файла, если нужна только его часть. Данная модель используется в том случае, когда удалённые файловые системы монтируются в общие с локальной системой дерево, то есть происходит отображение удалённой системы на букву логического диска.
Байт, блок, запись:
Запись применяется, когда LFS поддерживает структурированные файлы.
Распределение клиентов и серверов по ос.
В некоторых файловых системах на всех компьютерах сети работает базовое ПО, которое включает как клиентскую, так и серверную часть, поэтому, если любое устройство, захочет предложить услуги файловой службы, то оно сможет это сделать. Для этого администартору ОС достаточно объявить имена, чтобы другие устройства получали к ним доступ. В некоторых случаях выпускается серверную ОС, который использует то же ПО файловой службы, но позволяет за счёт выделения файловому серверу больше ресурсвом одновременно обслуживать большее число источников. Файловый сервер специализированный компонент серверной ОС, который отсутствует на стороне клиента. Для повышения эффективности работы файловый сервер и клиент – это модули ядра ОС, которые работают в привелигированном режиме. В ОС данные компоненты оформляются как высокоуровневые драйверы, которые работают в составе подсистемы ввода-вывода. Эффективность работы повышается за счёт прямого доступа, в том числе и к дисковому кэшу, отсутствуют допоплнительные операции и смена пользовательноскому режиму. Т.к. доступ к дисковому кэшу повышает скорость, то ОС должна быть сконфигурирована для поддержки кэша большого объёма. Файловый сервер и клиенты могут оформляться как модули, работающие в пользовательском режиме. У них невысокая скорость доступа и небольшой объём хранимых данных. Используется в файловых системах и процессах, основанной на микроядерной архитектуре.
Файловый сервер может быть реализован по одной из двух схем:
Запоминание данных о последовательных записях клиента стейтфулл
Без запоминания данных стейтлесс
1 Схема состоит в том, что сервер не должен хранить данную информацию, то есть он находится в положение стейтлесс. Клиент посылает запрос на сервер, а тот его выполняет, отсылает ответ и после этого удаляет из своих внутренних таблиц всю информацию о запросе. Между запросами на сервере не хранится никакой текущей информации о состояние клиента. Состояние стейтфулл сервер поддерживает тот же набор вызовов, что и локальная система, то есть вызовы open, read, write, see, close. Открывая файл по вызову open, переданному по сети клиента, сервер statefull должен запомнить, какие файлы открыл каждый пользователь в своей внутренней системной таблице. При открытие файлов клиентскому предложению по сети возвращается его дискриптор файла fd или любое другое число, которое используется при последующих вызовах для идентификации файлов. При поступление вызова read, write или sipe (?) сервер использует fd для определения нужного файла. В таблице хранится значение указателя на текущую позицию файла, относительно которой выполняется операция чтения или записи. Таблица, отображающая дискрипторы файлов на сами файлы, является хранилищем информации о состояние клиента.
Для сервера stateless каждый запрос должен содержать исчерпывающую информацию, т.е. полное имя файла и смещения в файле. Данная информация необходима серверу для выполнения требуемой операции. Эта информация увеличивает длину сообщения и время, которое сервер тратит на локальное открытие файла каждый раз, когда с ним производятся операции открытия или закрытия. Минимально набор команд, предоставляемый сервером stateless клиенту может состоять только из двух: read and write. Команды должны передавать в своих аргументах следующую информацию:
Имя файла.
Смещение от начала файла или операций чтения или записи.
Количество читаемых или записывающих байт данных.
Чтобы обеспечить приложение, работающих на стороне клиента, привычный файловый интерфейс, в том числе открытие-закрытие, клиент файловой службы должен самостоятельно поддерживать таблицы открытых файлов приложения. Основное последствие переноса таблиц открытых файлов на клиент реакция файловой службы на отказ доступ в файле сервера. При отказе сервера statefull теряются все таблицы и после перезагрузки неизвестно, какие файлы открыл каждый пользователь => операции чтения и записи с файлами будут бесполезны. Stateless более отказоустойчив, так как позволяют клиентам продолжать операции с открытыми файлами, но скорость работы сервера может уменьшиться (или уменьшается), так как он выполняет с этими же самыми файлами больше операций. Применение stateless затрудняет реализацию блокировок файлов, так как информацию о блокировке файла одним пользователем необходимо запомнить на всех клиентах файлового сервера.
Преимущества statefull:
Более короткие сообщения при запросах.
Лучше производительность.
Возможно опережающее чтение.
Возможна блокировка файлов.
Преимущества stateless:
Более высокий уровень отказоустойчивости.
Не нужны вызовы open-close.
Меньший расход памяти на (файловые) таблицы.
Отсутствуют ограничения на число открытых файлов и отказ клиента не создаёт проблем для сервера.
