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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

Первая состоит в том, что сервер не должен хранить такую информацию (сервер stateless). Другими словами, когда клиент посылает запрос на сервер, сервер его выполняет, отсылает ответ, а затем удаляет из своих внутренних таблиц всю ин­формацию о запросе. Между запросами на сервере не хранится никакой текущей информации о состоянии клиента. Другая точка зрения состоит в том, что сервер должен хранить такую информацию (сервер stateful).

Серверы stateful работают по схеме, обычной для любой локальной файловой службы. Такой сервер поддерживает тот же набор вызовов, что и локальная система, то есть вызовы open, read, write, seek и close, рассмотренные в главе 7 «Ввод-вывод и файловая система». Открывая файлы по вызову open, передан­ному по сети клиентом, сервер stateful должен запоминать, какие файлы от­крыл каждый пользователь в своей внутренней системной таблице (рис. 10.5).

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

Для сервера stateless каждый запрос должен содержать исчерпывающую инфор­мацию (полное имя файла, смещение в файле и т. п.), необходимую серверу для выполнения требуемой операции. Очевидно, что эта информация увеличивает длину сообщения и время, которое тратит сервер на локальное открытие файла каждый раз, когда над ним производится очередная операция чтения или записи. Серверы, работающее по схеме stateless, не поддерживают в протоколе обмена с клиентами таких операций, как открытие (open) и закрытие (close) файлов.

Принципиально набор команд, предоставляемый клиенту сервером stateless, мо--жет состоять только из двух команд: read и write (рис. 10.6). Эти команды долж­ны передавать в своих аргументах всю необходимую для сервера информацию — имя файла, смещение от начала файла и количество читаемых или записывае­мых байт данных.

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

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

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

□ Серверы stateless:

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

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

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

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

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

□ Серверы stateful:

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

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

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

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

Кэширование

Кэширование данных в оперативной памяти, как было показано в главе 8 «Допол­нительные возможности файловых систем», может существенно повысить ско­рость доступа к файлам, хранящимся на дисках. Кэширование также широко ис­пользуется в сетевых файловых системах, где оно позволяет не только повысить скорость доступа к удаленным данным (это по-прежнему является основной целью кэширования), но и улучшить масштабируемость и надежность файловой системы.

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

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

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

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

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

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

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

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

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

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



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 754; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.83.223 (0.009 с.)