Доклад для предзащиты.

Введение и причины создания распределенной ФС.

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

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

Перед разработкой был проведен анализ наиболее распространенных распределенных Ф.С., обладающих схожими функциями. Были рассмотрены такие системы, как GlusterFS, AFS, Lustre, Hadoop и HDFS. В результате проведения анализа были выявлены положительные и отрицательные стороны этих Ф. С. Из рассмотренных положительных сторон, можно выделить широкий спектр возможностей, за счет использования модулей расширения, применение технологии FUSE организующую файловую систему в пространстве пользователя, отсутствие централизованного сервера метаданных, предоставление избыточности, благодаря хранению нескольких копий файлов.

Рассказать о постановке задачи

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

Рассказать о средствах разработки и причинах выбора

Для разработки приложений организующих распределенную файловую систему, был выбран язык программирования C++. C++ был выбран в качестве языка для создания файловой системы потому, что он поддерживая различные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков программирования. Являясь одним из самых популярных языков, C++ широко используется для разработки программного обеспечения. Для реализации файловой системы была выбрана библиотека FUSE («Файловая система в пользовательском пространстве»). FUSE состоит из модуля ядра UNIX-подобных операционных систем, реализующего виртуальную файловую систему и динамической библиотеки, используемую приложениями. Она позволяет разрабатывать полностью функциональную файловую систему, без программирования ядра, которая может использоваться непривилегированными пользователями и обеспечивает защищенную реализацию. И вдобавок FUSE обладает доказанной стабильностью. Эта библиотека реализована на языке Си и может быть легко использована в C++ приложениях.

Рассказать о дополнительных средствах разработки

Для создания проекта использовались также дополнительные средства разработки. Для построения конфигурационных файлов, была выбрана библиотека XFlib. XF это универсальный, легкий и переносимый формат представления данных в текстовом виде, который просто воспринимается человеком и обрабатывается программами. XF значительно более гибок и лаконичен, чем XML. Он полностью поддерживает стандарт Unicode и может применяться для создания приложений на различных языках. Для организации обмена метаданными решено использование формата представления данных XML, в качестве базового формата для обмена запросами операций между сервером и клиентом. В качестве XML анализатора был выбран EXPAT. Это потоко-ориентированный анализатор, в котором приложение регистрирует обработчики событий для элементов, которые анализатор может найти в XML документе (например начало тега). Данный анализатор поддерживается во многих языках, таких как Си, Erlang, Ocaml, Objective-C, Python, Ruby, TCL и др. Данный анализатор применяется в таких проектах как Ejabberd - jabber сервер, и xmpppy - библиотека протокола XMPP для языка Python.

Рассказать о том что:

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

Далее рассказать о том что были спроектированы протоколы передачи данных.

В качестве протокола обмена разработан протокол на основе XML (eXtensible Markup Language). Формат XML позволяет создавать легко расширяемый интуитивно понятный протокол разметки, таким образом при внесении модификаций в новых версиях файловой системы можно добиться, того, что старые версии клиентов будут работать с новыми серверами и наоборот без внесения значительных изменений в код программ. Однако XML не позволяет передавать внутри себя поток данных таких как файлы. Поскольку протокол является текстовым, он не может обеспечить передачу символов, которые являются частью его разметки. Для решения данной проблемы обычно использую кодировку формата MIME (Multipurpose Internet Mail Extensions — многоцелевые расширения почты интернета) — стандарт, описывающий передачу различных типов данных по электронной почте, а также, спецификация для кодирования информации и форматирования сообщений таким образом, чтобы их можно было пересылать по Интернету. Однако данный формат вызывает значительный прирост к пересылаемому трафику от сервера к клиенту, что в результате может повлечь значительное замедление функционирования системы. Для решения поставленной задачи разработан второй двоичный протокол, через который будет производиться передача содержимого файлов. В таком случае клиент и сервер имеет два постоянно открытых соединения. Через первое соединение производиться передача запросов на файловые операции (чтение содержимого директорий, переименование удаление, получение и изменение атрибутов файлов и прочие операции), а по второму протоколу производится непосредственно сама передача содержимого файлов.

Основные модули:

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

Основными классами библиотеки взаимодействия сервера и клиента являются:

XML/Node — организующий один лист дерева,

XML/TagIQ — организует систему запрос — ответ, в протоколе на основе XML,

XML/Protocol — реализует обмен данными по XML протоколу, между сервером и клиентом,

BIN/BynaryProtocol — организует обмен содержимым файлов,

BaseConfigFile — производит чтение конфигурационного файла,

ModuleLoader — организующий динамическую загрузку модулей.

В библиотеке — модуля расширения сервера, реализующей операции над файловой системой, для операции над ФС реализован отдельный модуль.

В библиотеке — модуля расширения клиента, находится модуль, реализующий обработчики функций FUSE, и взаимодействующей с серверной частью.

Клиентское приложение содержит класс ClientProgram реализующего алгоритм соединения сервера с клиентами, а Серверное приложение класс ServerProgram, организующий подключение клиентов.

Перспективы дальнейшего развития

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

Доклад для предзащиты

Nickolay

2011-11-14T18:38:00