Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Кинсбурский Станислав Александрович

Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах
<
Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Кинсбурский Станислав Александрович. Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах : диссертация ... кандидата технических наук : 05.13.11 / Кинсбурский Станислав Александрович; [Место защиты: Ин-т электрон. упр. машин].- Москва, 2008.- 109 с.: ил. РГБ ОД, 61 09-5/959

Содержание к диссертации

Введение

Глава 1. Современные методы доступа к удалённым данным в распределённых вычислительных системах '. 8

1.1 Общий обзор структуры распределённых вычислительных систем 8

1.2 Анализ требований к методам доступа к удалённым данным в современных распределённых вычислительных системах 11

1.3 Характеристики современных методов хранения и доступа к данным 13

1.4 Анализ методов доступа к удалённым данным 16

1.4.1 Распределённая операционная система Sprite 19

1.4.2 Сетевая файловая система Network File System (NFS) 21

1.4.3 Распределённая файловая система Andrew File System (AFS) 25

1.4.4 Распределённая файловая система Coda 29

1.4.5 Распределённая файловая система xFS 32

1.4.6 Распределённая файловая система CIFS 33

1.4.7 Распределённая файловая система Lustre 33

1.4.8 Распределённая файловая система GPFS 34

1.5 Обобщённые выводы по анализу методов доступа к удалённым данным 35

1.6 Постановка задачи диссертационной работы 40

1.7 Выводы 42

Глава 2. Методы повышения скорости доступа к удалённым данным 43

2.1 Разработка архитектуры быстрой распределённой файловой системы 43

2.2 Аналитическая оценка эффективности архитектуры быстрой распределённой файловой системы 49

2.3 Анализ дополнительного преимущества блочной адресации в быстрой распределённой файловой системе 55

2.4 Выводы 60

Глава 3. Реализация быстрой распределённой файловой системы в ОС Linux 61

3.1 Реализация протокола обмена данными с драйвером каналов связи 61

3.2 Реализация протокола SRPC 64

3.3 Реализация клиента БРФС 66

3.4 Реализация сервера БРФС 82

3.5 Выводы 98

Глава 4. Результаты исследования 99

4.1 Сравнение быстрой распределённой файловой системы и NFS 99

4.2 Выводы 105

Заключение 106

Библиографический список использованной литературы

Введение к работе

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

Под распределенной обработкой данных будем понимать обработку данных многомашинным вычислительным комплексом (МВК). МВК представляют собой объединённые в сеть для совместной работы компьютеры (узлы МВК), которые не имеют доступа к общей памяти или шине, и обладают доступом только к своим собственным ресурсам.

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

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

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

Примером современного отечественного компактного МВК является вычислительный комплекс, построенный на основе процессорных модулей «МВС/С» разработки ЗАО «МЦСТ» [1]. Он разработан для встраиваемых применений и ориентирован на работу в режиме реального времени и состоит из четырёх узлов, соединённых между собой быстрыми каналами связи. При этом доступом к внешним устройствам обладает только один из узлов МВК. Для загрузки всего МВК необходимо обеспечить возможность загрузки и рестарта бездисковых узлов, которые не имеют прямого доступа к данным. Причём в системах реального времени скорость загрузки и рестарта МВК являются особенно важными параметрами.

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

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

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

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

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

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

Реализация предложенных методов и алгоритмов в виде комплекса программных средств и технологий.

Таким образом, объектом исследования являлись методы организации доступа к удалённым данным, а предметом исследования - разработка методов повышения скорости доступа к данным по сравнению с существующими методами.

Для достижения указанной цели, в диссертационной работе применялись следующие методы исследований:

Обзор существующих методов доступа к удалённым данным.

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

Синтез усовершенствованных методов доступа к удалённым данным, позволяющих добиться большей скорости доступа, уменьшения времени готовности к работе и уменьшения нагрузки на сервер.

Оценка эффективности предложенных методов посредством сравнения реализации предложенных методов и наиболее распространенного аналога.

Научная новизна исследования. К составляющим научную новизну диссертационной работы решениям можно отнести:

Реализация доступа к удалённым данным на уровне блоков файловой системы.

Реализация методов доступа к данным полностью в пространстве ядра (или драйверов) операционной системы (ОС).

Реализация алгоритмов единого прозрачного доступа к данным, расположенным на разных носителях.

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

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

В частности, на основе исследований, выполненных по теме диссертации, была реализована модель «клиент-сервер» для процессорного модуля «МВС/С» в ядре ОС Linux.

Апробация. Основные положения и результаты работы докладывались на Международных и других научных конференциях: XXXII Гагаринские чтения (Москва, 2006 г.); ХХХШ Гагаринские чтения (Москва, 2007 г.); XXXIV Гагаринские чтения (Москва, 2008 г.); XXIII научно-техническая конференция на тему "Направление развития и применения перспективных вычислительных систем и новых информационных технологий в ВВТ РКО" (Москва, 2007 г.), а также на семинарах НТС ИМВС РАН, ЗАО "МЦСТ" и ОАО "ИНЭУМ".

По теме диссертационной работы опубликованы семь печатных работ, в том числе в издании, рекомендованном ВАК РФ:

Кинсбурский С.А. Распределённая виртуальная файловая система для многомашинных комплексов // XXXII Гагаринские чтения. Научные труды Международной молодежной научной конференции в 8 т. Т. 6. М.: "МАТИ"-РГТУ,2006. С. 159-161.

Кинсбурский С.А. Подход к реализации распределённой виртуальной файловой системы для многомашинных комплексов // XXXIII Гагаринские чтения. Научные труды Международной молодежной научной конференции в 8 т. Т. 6. М.: "МАТИ"-РГТУ, 2007. С. 234-235.

Кинсбурский С.А. Концепция виртуальной файловой системы на распределенных носителях // Информационные технологии, № 12, 2007. С. 12-15.

Кинсбурский С.А. Распределённая виртуальная файловая система // в/ч 03425 (НИЦ 4ЦНИИ МО РВ), XXIII научно-техническая конференция на тему "Направление развития и применения перспективных вычислительных систем и новых информационных технологий в ВВТ РКО", 2007 г.

Кинсбурский С.А. Характеристики распределённой виртуальной файловой системы // XXXIV Гагаринские чтения. Научные труды Международной молодежной научной конференции в 8 т. Т. 6. М.: "МАТИ"— РГТУ,2008. С. 188-190.

Кинсбурский С.А. Распределённые файловые системы и основные проблемы повышения скорости доступа к удалённым данным // Компьютеры в учебном процессе. 2008. № 5. С. 3-12.

Кинсбурский С.А., ОКР "Созвездие - М 2", «Разработка предложений по использованию средств вычислительной техники в составе мобильного сервера, мобильных, переносных и переносимых ПТК», Шифр "Созвездие -М 2 - МЦСТ", ТВГИ.460659.018 ПЗ, 2008 г.

Краткое содержание работы

Во введении обоснована актуальность работы, поставлена цель исследования и определены задачи, решаемые для её достижения. Отмечена научная новизна исследования и дана краткая характеристика содержания работы и её результатов.

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

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

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

В третьей главе описывается реализация быстрой распределённой файловой системы. Приводится реализация методов взаимодействия программ обслуживания быстрой распределённой файловой системы с драйвером каналов связи. Описывается реализация протокола взаимодействия между сервером и клиентом быстрой распределённой файловой системы. Далее приводится описание реализации клиента быстрой распределённой файловой системы. Завершает главу описание реализации сервера быстрой распределённой файловой системы.

В четвёртой главе приводятся результаты сравнения характеристик быстрой распределённой файловой системы и сетевой файловой системы NFS.

Анализ требований к методам доступа к удалённым данным в современных распределённых вычислительных системах

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

В случае запроса пользователя к локальным данным операционная система просто читает или записывает их на носитель информации.

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

Несложно понять, что доступ к удалённым данным предполагает дополнительные накладные расходы на обмен. К накладным расходам можно отнести временные задержки, связанные с работой драйверов каналов связи, самих каналов связи, а также с обменом информацией между драйвером файловой системы и драйвером каналов связи. Причём значительная часть расходов ложиться на узел, являющийся «собственником» данных - сервер.

Основные требования к методам доступа к удалённым данным в современных вычислительных системах включают:

- Скорость обмена данными с удалённым носителем должна быть сравнима со скоростью обмена с локальным носителем. Поскольку доступ к удалённым данным предполагает их пересылку по каналам связи, то скорость обмена данными вычислительного узла с удалённым носителем оказывается ниже, чем с локальным носителем. Использование удалённых данных в распределённых вычислительных системах является целесообразным только в случае, если скорость обмена данными с удалённым носителем сравнима со скоростью обмена с локальным носителем.

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

Приведённые выше требования являются значимыми для всех распределённых вычислительных систем. Однако для систем реального времени доступ к удалённым данным несёт в себе дополнительные проблемы.

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

К тому же, во встраиваемых многомашинных системах, работающих в режиме реального времени (к примеру, таких, как «МВС/С»), где один из узлов является сервером, представляется важным снизить на этот узел нагрузку, так как в противном случае серверный узел будет почти полностью загружен только облуживанием запросов других узлов к данным.

Таким образом, можно привести дополнительные требования к методам доступа к удалённым данным в распределённых системах реального времени:

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

- Высокая скорость доступа к данным. Увеличение скорости доступа к удалённым данным (установление соединения между узлами, подготовка к обмену данными) также является значимым критерием с точки зрения систем реального времени.

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

- Снижение нагрузки на сервер. Для пересылки данных используется специальное программное обеспечение, причём не только на клиенте, но и на сервере, что дополнительно уменьшает скорость обмена данными между узлами. При этом работа специализированного программного обеспечения оказывает дополнительную нагрузку на эти узлы, поэтому в крупных распределённых системах обычно один из узлов выделяют только для обслуживания запросов к удалённым данным. Однако во встраиваемых системах реального времени (таких, к примеру, как «МВС/С»), где количество вычислительных узлов может составлять от 2 до 8, выделение одного узла только для обслуживания удалённых запросов существенно снижает общую производительность распределённой вычислительной системы. Таким образом, снижение нагрузки на сервер является важным требованием для встраиваемых систем реального времени.

Данные в современных вычислительных системах хранятся в виде файлов. Файл — именованный набор данных, с которым можно выполнять различные операции. Понятие файла применимо только в контексте файловой системы, которая организует файлы и управляет доступом к хранящимся в них данным [2].

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

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

Файловые системы позволяют пользователям создавать, изменять удалять файлы; они также должны предоставлять возможность структурирования файлов способами, удобными для приложений и переноса данных между файлами. Пользователи должны иметь возможность предоставлять другим пользователям доступ к своим файлам. Механизм разделения файлов (совместного доступа к файлам) должен реализовать различные типы контролируемого доступа — например, доступ для чтения (read access), доступ для записи (write access), доступ для выполнения («execute access) и их сочетания.

Файловые системы должны обладать аппаратной независимостью (device independence) — пользователи должны иметь возможность обращаться к файлам по символьным именам (symbolic names), а не по физическим именам (physical names). Символьные имена — это логические, (дружественные пользователям) имена, например, myDirectory:Myfile.txt. Физические имена указывают, где расположен файл, например, на диске 2, в блоках 782-791. Символьные имена дают системе возможность реализовать для пользователей логическое представление (logical view) их данных, присваивая осмысленные имена файлам и операциям над файлами. Физическое представление (physical view) связано с размещением данных файла на физическом накопителе и специфичными для накопителя операциями работы с данными.

Сетевая файловая система Network File System (NFS)

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

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

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

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

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

AFS является распределённой файловой системой. Разработка AFS началась в 1983 году в университете Карнеги-Меллона. Позднее компания Transarc Corporation развила AFS до уровня коммерческого продукта. В дальнейшем эта компания была приобретена фирмой IBM. Подробная информация о AFS приведена в работах Силбершатса (Silberschatz) и др. [9], Сатьянараянана (Satyanarayanan) [10, 13], а также Сатьянараянана и Мирьяны Спасоевич (Mirjana Spasojevic) [14, 15].

AFS используется в нескольких сотнях организаций, и стала основной файловой системой для крупных университетов, таких, как Массачусетский технологический институт, Университет штата Мичиган, и других. Изначально она разрабатывалась для целей образования и научных исследований как удобная в использовании файловая система, в которой пользователи могли бы взаимодействовать и обмениваться данными. В основу конструкции AFS положены принципы хорошего масштабирования и безопасности, что помогло ей превратиться в очень мощную распределенную файловую систему. Развитие этой файловой системы продолжается, она получает всё большее распространение. Недавно проект AFS стал открытым и получил название OpenAFS [16].

Подобно большинству распределенных файловых систем, AFS использует принцип взаимодействия «клиент-сервер». В отличие от NFS, AFS проводит четкое различие между рабочей станцией — сервером и рабочей станцией - клиентом. Архитектура AFS подразумевает, что серверов в сети немного и они надёжны, тогда как клиентов может быть очень много, причём они могут быть ненадёжными. В рабочих станция — клиентах пространство имен локальной файловой системы и пространство имён импортируемой файловой системы хранятся отдельно. Пространство имён импортируемой файловой системы хранится в директории /afs. Пространство имён файлов в папке /afs контролируется набором серверов в локальной сети, называемых VICE-серверами (VICE - Vast Integrated Computing Environment, обширная интегрированная вычислительная среда). VICE-серверы могут взаимодействовать между собой внутри локальной сети. На клиентской машине контролем доступа к экспортируемым с VICE-сервера файлам управляет процесс, называемый Venus. Вначале Venus выполнялся в пользовательском режиме, но позже он был перемещен в ядро для повышения производительности. Venus работает также в качестве менеджера кэша. Сервера VICE и модуль Venus предоставляют каждому пользователю клиентской машины доступ к пространству имён импортированной файловой системы, как если бы она присутствовал на их локальном компьютере.

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

Аналитическая оценка эффективности архитектуры быстрой распределённой файловой системы

Для оценки эффективности предлагаемой архитектуры БРФС с точки зрения реактивности, нагрузки на узел-сервер и скорости инициализации методов доступа после старта и рестарта был проведён анализ на основе модели OSI. Модель OSI быстрой распределённой файловой системы представлена на рис. 10.

Физический уровень модели OSI может быть любым. Однако хорошим вариантом являются каналы LVDS, которые могут обеспечить существенно более высокую пропускную способность, чем 100BASEX и 1000ВASEX. Более высокая пропускная способность позволяет пересылать большие объёмы данных, исключая опасность перегрузки сети.

Уровень каналов данных (в модели в качестве примера приведён RDM А разработки ЗАО «МЦСТ») поддерживает аппаратную сборку и разборку пакетов данных, контроль целостности и повтор пакетов в случае сбоев. Эти особенности позволяют существенно разгрузить логику, а, следовательно, и ресурсоёмкость, протоколов уровня передачи. Так, аппаратный контроль ошибок позволяет устранить алгоритмы контроля целостности пакета данных, и повтора в случае сбоев, и снизить тем самым нагрузку на центральный процессор. Сборка и разборка пакетов позволяют устранить копирование данных при составлении пакета.

Уровень сети может быть основан на протоколе IP, или его модификации.

Уровень передачи может быть основан на протоколе UDP [25], или подобному ему. В частности, протокол UDP можно упростить, исключив из него поля источника (в случае реализации уровня сети на основе МАС-адресов) и контрольной суммы. Такого протокола вполне достаточно, так как поддержка сохранения целостности пакета данных при передаче возложена на аппаратуру.

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

В предлагаемой распределённой файловой системе обмены поддерживаются на уровне блоков, и, таким образом, они прозрачны не только для пользователя, но и для VFS, для которой распределённая файловая система представляется локальной. По сути, клиент предоставляет пользователю не удалённые системные вызовы, а удалённые запросы к блочным устройствам. БРФС, в силу своей простоты и «низкоуровневое» позволяет реализовать простой протокол, который вполне может обрабатываться внутри ядра самими клиентом и сервером. Этот протокол называется SRPC (Simple RPC).

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

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

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

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

В БРФС, так же, как и во многих других распределённых файловых системах, поддерживается разделение ресурсов между несколькими клиентами. Но, так же, как и в других распределённых файловых системах, поддержание целостности данных в быстрой распределённой файловой системе является очень сложной задачей, требующей большое количество вычислительных ресурсов и дополнительных системных обменов между клиентами и серверами. Для реализации контроля целостности данных серверу необходимо сообщать клиентам об обновлённых блоках данных в случае записи оных одним из клиентов. То есть серверу необходимо вести статистику подкачанных клиентами блоков и управлять содержимым блоков клиентов с помощью специальных сообщений. После этого клиентам необходимо помечать изменённые блоки файловой системы, как устаревшие либо неверные. Поддержка разделения данных на запись в БРФС приведёт к существенному уменьшению скорости доступа к данным и увеличению нагрузки на сервер, что является неприемлемым в распределённых вычислительных системах, работающих в реальном масштабе времени.

Определение сервером корректности подключения клиента к определённым ресурсам может осуществляться по-разному. К примеру, возможна реализация выделения ресурсов на основе схемы FIFO (First In First Out - Первым Вошёл, Первым Вышел), то есть все клиенты пытаются подключиться по первому логическому каналу, и это удаётся только одному из них. Далее неподключенные клиенты перебирают номера логических каналов в запросе Connect до тех пор, пока не будут подключены к серверу, либо пока сервер не сообщит об отсутствии свободных ресурсов (в случае, если, скажем, пытается подключить больше клиентов, чем это предусмотрено сервером). Такая схема пригодна в том случае, если все клиентские узлы не отличаются друг от друга с точки зрения выполняемой задачи и позволяет упростить настройку клиентов.

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

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

Реализация протокола SRPC

Получив ответ от сервера, клиент проверяет параметр rq_result. Рассмотрим сначала результаты, сигнализирующие об ошибке. Результаты RQLCJWRONG, RQ_LC_NOT_PRESENT и RQJLCJBUSY считаются критическими ошибками, при которых клиент завершает свою работу и сигнализирует о том, что системный администратор неверно настроил быструю распределённую файловую систему. Результаты RQHDF AILED RQ_NOT_ACTIVE также считаются критическими ошибками. В этом случае клиент завершает свою работу и сигнализирует о том, что в управляющем программном обеспечении присутствуют ошибки. Результат RQ_LC_DENIED будет восприниматься как критическая ошибка в программном обеспечении, так как клиенту безразличен номер канала. Однако важно отметить, что в случае, если клиент реализован таким образом, что он перебирает номера каналов при подключении, то результат RQ_LC_DENIED будет воспринят как критическая ошибка только в том случае, если все возможные номера каналов исчерпаны и ни к одному из них не удалось подключиться. В этом случае клиент завершает свою работу и сигнализирует о том, что системный администратор неверно настроил быструю распределённую файловую систему.

Итак, в нашем случае, получив результат RQ_OK, клиент считает, что подключение к серверу прошло успешно. По структуре fdfs_parent_drives_info_s клиент определяет, что ему предоставляется только одно устройство, и что это АТА-диск. На основе полученных от сервера данных клиент заполняет относящуюся к этому устройству структуру fdfs_drive_s и её дочерние структуры fdfs_parent_drive_s. Теперь у клиента достаточно информации для того, чтобы закончить регистрацию устройства в системе и корректно контролировать и формировать запросы на чтение и запись к серверу.

Обмен данными с сервером

Максимальный размер запроса поставщика к клиенту ограничен максимальным размером запроса к жесткому диску стандарта АТА или SCSI, который равен 256 секторам, или 32 страницам оперативной памяти.

Рассмотрим обработку запросов поставщика клиентом. Поставщик добавляет запрос в очередь запросов клиента и вызывает функцию клиента, заявленную при инициализации как обработчик очереди запросов. В клиенте такой функцией является fdfs_client_request(). В качестве параметра этой функции всегда передаётся указатель на соответствующую major структуру request_queue_t, которая была проинициализирована при старте клиента. Необходимо отметить, что вызов этой функции, как и любой другой функции любого другого драйвера в ядре ОС Linux, происходит при закрытом глобальном спинлоке io_request_lock. Закрытый io_request_lock позволяет безопасно обращаться к очереди запросов блочного драйвера. В противном случае работа с очередью с высокой вероятностью вызовет нарушение целостности данных ядра ОС и скорый системный сбой ОС в целом.

Функция fdfs_client_request() не обрабатывает запросы и является промежуточным звеном. В этой функции клиент закрывает прерывания на всех процессорах с помощью функции ядра сН(). Такая реализация позволяет быть уверенным в том, что даже в случае возникновения прерывания клиент не будет выгружен с процессора с закрытым спинлоком io_request_lock. Далее клиент проверяет, проинициализирована ли очередь запросов request_queue_t. Для этого клиент вызывает функцию ядра blk_queue_plugged(), подавая туда в качестве параметра указатель на очередь блочных запросов. В случае, если функция blk_queue_plugged() возвращает ненулевое значение, что означает неактивность очереди, клиент сообщает о сбое пользователю, открывает спинлок io_request_lock, открывает прерывания, и выходит из функции fdfs_client_request(). Такая ситуация считается критической ошибкой в программном обеспечении и требует вмешательства разработчиков. В случае, если очередь проинициализирована, клиент выделяет из структуры request_queue_t указатель на структуру struct fdfs_client_data_s, описывающую системные данные клиента и вызывает функцию fdfs_do_client_request(), передавая в неё в качестве параметров указатель на очередь request_queue_t и указатель на структуру struct fdfs_client_data_s. По завершении функции fdfs_do_client_request() клиент открывает спинлок io_request_Jock, открывает прерывания на всех процессорах с помощью функции ядра sti() и выходит из функции fdfs_client_request().

Функция fdfs_do_client_request() предназначена для обработки очереди запросов. Рассмотрим функцию fdfs_do_client_request(). В этой функции клиент проверяет, не обрабатывается ли сейчас предыдущий запрос. Для этого клиент проверяет параметр busy структуры struct fdfs_client_data_s. Если параметр busy равен единице, клиент выходит из функции fdfs_do_client_request(). Если параметр busy равен нулю, клиент выставляет параметр busy в единицу, осуществляя, таким образом, захват клиента, и далее в цикле проверяет наличие запроса от поставщика в очереди запросов. Для этого клиент вызывает функцию ядра blk_queue_empty(), куда в качестве параметра подаёт указатель на свою структуру request_queue_t. В случае наличия запроса в очереди эта функция возвращает ненулевое значение. Если очередь пуста, клиент выходит из функции fdfs_client_request().

В случае если очередь не пуста, клиент выделяет первый запрос из очереди с помощью макроса ядра blkdev_entry_next_request(), подавая в неё в качестве параметра указатель на заголовок очереди, а именно на переменную queuejhead структуры request_queue_t. Функция blkdev_entry_next_request() возвращает указатель на структуру struct request, описывающую первый запрос в очереди запросов.

Клиент с помощью функции ядра MINORQ выделяет параметр minor из переменной rq_dev структуры struct request. Если minor оказывается больше, чем максимальное число разделов, поддержанное в клиенте (64 в нашем случае), клиент завершает запрос, возвращая его результат как ошибочный, и выходит из функции fdfs_do_client_request(). Для завершения запроса используется фукнция fdfs_end_request(), которая будет рассмотрена ниже.

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

Похожие диссертации на Разработка и исследование методов повышения скорости доступа к удалённым данным в распределённых вычислительных системах