Фотография

Нестеренко Вадим Сергеевич

Факультет компьютерных наук и технологий

Кафедра искусственного интеллекта и системного анализа

Специальность: «Технологии программного обеспечения интеллектуальных систем»

Исследование и разработка удалённой системы резервного копирования данных

Научный руководитель: д.ф.-м.н., проф. Дегтярев Сергей Петрович

Консультант: ст. пр. Ольшевский Андрей Иванович



Исследование и разработка удалённой системы резервного копирования данных

Содержание

Введение

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

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

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

1. Резервная копия данных

1.1 Резервное копирование

При разработке программного обеспечения стоит отметить определенные термины для дальнейшего разъяснения структуры программного обеспечения и его реализации [3].

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

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


Рисунок 1.1 Схематическая анимация резервного копирования данных

Рисунок 1.1 Схематическая анимация резервного копирования данных

1.2 Виды резервного копирования

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

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

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

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

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

Ещё одним видом резервного копирования данных является резервное копирование в виде образа.

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

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

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

2. Распределенные файловые системы

2.1 Общие свойства распределенных файловых систем

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

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

Современные распределенные файловые системы включают в себя специальные сервисы для управления разделами. Это позволяет вам смонтировать разделы различных файловых серверов в центральную иерархию директорий, поддерживаемую файловыми системами. Иерархии директорий доступны всем клиентам распределенной файловой системы, и выглядят одинаково на любой из клиентских рабочих станций. Это дает возможность пользователям работать со своими файлами одинаково на любом компьютере. Если ваш настольный компьютер не работает, вы совершенно спокойно можете использовать любой другой – все ваши файлы находятся в безопасности на сервере [5].

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

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

  1. Сетевая прозрачность – клиенты должны иметь возможность обращаться к удаленным файлам пользуясь теми же самыми операциями, что и для доступа к локальным файлам
  2. Прозрачность размещения – имя файла не должно определять его местоположения в сети
  3. Независимость размещения – имя файла не должно меняться при изменении его физического месторасположения
  4. Мобильность пользователя – пользователи должны иметь возможность обращаться к разделяемым файлам из любого узла сети
  5. Устойчивость к сбоям – система должна продолжать функционировать при неисправности отдельного компонента (сервера или сегмента сети). Однако это может приводить к ухудшению производительности или к исключению доступа к некоторой части файловой системы
  6. Масштабируемость – система должна обладать возможностью масштабирования в случае увеличения нагрузки. Кроме того, должна существовать возможность постепенного наращивания системы путем добавления отдельных компонентов
  7. Мобильность файлов – должна быть возможность перемещения файлов из одного месторасположения в другое на работающей системе

2.2 Вопросы разработки

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

  1. Пространство имен – некоторые распределенные файловые системы обеспечивают однородное пространство имен такое, что каждый клиент использует одно и то же путевое имя для доступа к данному файлу. Другие системы позволяют клиенту создавать свое пространство имен путем монтирования разделяемых поддеревьев к произвольным каталогам в иерархии файлов.
  2. Операции с сохранением и без сохранения состояний – сервер, сохраняющий состояния, обеспечивает хранение информации об операциях клиента между запросами и использует эту информацию о состоянии для корректного обслуживания последующих запросов. Такие запросы как open или seek связаны с изменением состояний, так как кто-то должен запомнить информацию о том, какие файлы открыл клиент, а также все смещения в открытых файлах. В системе без сохранения состояний каждый запрос является «самодостаточным» и сервер не поддерживает устойчивых состояний о клиентах. Например, вместо того, чтобы поддерживать информацию о смещении в открытом файле сервер может требовать от клиента указания смещения в каждой операции чтения или записи. Серверы с сохранением состояний работают быстрее, поскольку они могут использовать знания о состоянии клиента для существенного уменьшения сетевого трафика. Однако они должны иметь и целый комплекс механизмов поддержания согласованного состояния системы и восстановления после ее отказа. Серверы без сохранения состояний более просты в разработке и реализации, но не дают такой высокой производительности.
  3. Семантика разделения – распределенная файловая система должна определить семантику, которая применяется, когда несколько клиентов одновременно обращаются к одному файлу. Семантика UNIX требует, чтобы все изменения, сделанные одним клиентом, были бы видны другим клиентам, когда они выдают следующий системный вызов read или write. Некоторые файловые системы обеспечивают «семантику сессии» (session semantics), при которой изменения становятся доступными другим клиентам на основе гранулированности системных вызовов open и close. А некоторые системы дают даже еще более слабые гарантии, например, интервал времени, который должен пройти прежде, чем изменения наверняка попадут к другим клиентам.
  4. Методы удаленного доступа – в простой модели клиент-сервер используется метод удаленного обслуживания, при котором каждое действие инициируется клиентом, а сервер просто представляет собой агента, который выполняет заявки клиента. Во многих распределенных системах, особенно в системах, сохраняющих состояние, сервер играет гораздо более активную роль. Он не только обслуживает запросы клиентов, но и участвует в работе механизма обеспечения когерентности, уведомляя клиентов о всех случаях, когда кэшированные в нем данные становятся недостоверными.

На рисунке 2.1 приведен пример, в котором два подкаталога удаленной файловой системы-сервера (share и X11) монтируются к двум (пустым) каталогам файловой системы-клиента.

Рисунок 2.1 Схема монтирования удаленной файловой системы
Рисунок 2.1 Схема монтирования удаленной файловой системы

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

3.1 Трёхуровневая архитектура

В программном комплексе используется модифицированная трёхуровневая архитектура [6-7], она состоит из таких компонентов (слоёв): клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений). Модификация представляет собой возможность развёртывания программного средства в локальной сети, а также распределенное хранение и считывание данных. Помимо этого, для каждого слоя имеются свои модификации. На рисунке 4.1 изображена трёхуровневая архитектура программного средства.

Рисунок 3.1 Трёхуровневая архитектура программного средства
Рисунок 3.1 Трёхуровневая архитектура программного средства

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

Второй слой (средний, связующий) является сервером приложений, где сосредоточена большая часть бизнес-логики. Он отвечает за обработку данных при общении с клиентом и базой данных [8]. Программное средство проектируются таким образом, чтобы при добавлении дополнительного функционала обеспечивалось горизонтальное масштабирование производительности программного средства и не требовалось внесения изменений в программный код приложения. Модификация данного слоя представляет собой возможность управления хранением данных, предоставляя выбор места хранения (на сервере баз данных или в хранилище сети Интернет), а также возможность распределенного хранения и считывания из разных хранилищ данных. Серверная часть доступна по URL внутри сети, помимо всей логики она так же отвечает и за Web-интерфейс, позволяющий управлять и настраивать все задачи по резервному копированию. Также пользователю доступна возможность подвязки нужных компьютеров к аккаунту, для составления на каждом из них необходимых задач резервного копирования. Задача имеет такие настройки как: выбор файлов, сжатие, выбор мест хранения, расписание, уведомление о состоянии, шифрование, история задач и сами сохраненные данные, которые пользователь может себе загрузить.

Сервер баз данных (слой данных) обеспечивает хранение данных и выносится на отдельный третий уровень. В программном средстве он реализуется средством системы управления базами данных MongoDB, подключение к этому компоненту обеспечивается только с уровня сервера приложений. Модификация данного слоя представляет собой распределенное хранение данных для обеспечения большей надежности и скорости считывания данных [9].

3.2 Хранение данных

На сегодняшний день существует множество облачных сервисов, позволяющих хранить данные на собственных носителях информации. В разрабатываемом программном продукте разработана возможность распределенного хранения данных как на собственном дисковом пространстве, так и на популярных облачных хранилищах (Dropbox, Google Drive, Mega, OneDrive и пр.). В программном продукте всё дисковое пространство с выбранных пользователем сервисов представлено, как единое. Так же спроектированы элементы искусственного интеллекта для отслеживания загружаемых и считываемых данных, и автоматического распределения наиболее используемых файлов на сервис с лучшей скоростью обмена данными, а менее используемые файлы, соответственно, на сервис худшей скоростью обмена данными [10].

Выводы

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

  1. Определён необходимый пользователям функционал программного комплекса, на основе анализа достоинств и недостатков актуальных на сегодняшний день других программных средств резервного копирования данных.
  2. Описана и спроектирована архитектура программного средства.
  3. Определены и обоснованы современные средства для разработки всего необходимого функционала.
  4. Разработан сам программный продукт.

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

Список источников

  1. Ольшевский А.И. Исследование и проектирование программного комплекса удаленного резервного копирования данных [Текст] / А.И. Ольшевский, В.С. Нестеренко // Сб. мат. «Информатика, управляющие системы, математическое и компьютерное моделирование» (ИУСМКМ – 2018). – Донецк : ДонНТУ, 2017. – С. 61-64
  2. Ольшевский А.И. Система удаленного резервного копирования данных для корпоративных сетей [Текст] / А.И. Ольшевский, В.С. Нестеренко // Сб. мат. «Программная инженерия: методы и технологии разработки информационно-вычислительных систем» (ПИИВС – 2018). – Донецк : ДонНТУ, 2018. – С. 88-92
  3. Бычкова Е.В. Программное средство создания резервных копий данных [Текст] / Е.В. Бычкова, В.С. Нестеренко // Сб. науч. тр. «Информатика, управляющие системы, математическое и компьютерное моделирование» в рамках III форума «Инновационные перспективы Донбасса» (ИУСМКМ – 2017). – Донецк : ДонНТУ, 2017. – С. 381-384
  4. Silberschatz A. Operating System Concepts / Silberschatz A., Galvin P.B., Gagne G. – Salt Lake City : John Wiley & Sons, 1994. – 780 p.
  5. Gupta М. Storage Area Network Fundamentals / Gupta М. – Indianapolis : Cisco Press, 2002. – 320 p.
  6. Jepsen T.C. Distributed Storage Networks: Architecture, Protocols and Management / Jepsen T.C. – Raleigh : John Wiley & Sons, 2003. – 338 p.
  7. El-Rewini H. Advanced Computer Architecture and Parallel Processing / El-Rewini H., Abd-El-Barr M. – Hoboken : John Wiley & Sons, 2005. – 288 p.
  8. Столлингс В. Компьютерные сети, протоколы и технологии Интернета / В. Столлингс – СПб. : БХВ-Петербург, 2005. – 752 с.
  9. Хокинс С. Администрирование Web-сервера Apache и руководство по электронной коммерции / С. Хокинс – СПб. : Вильямс, 2001. – 336 с.
  10. Джордж Ф. Искусственный интеллект. Стратегии и методы решения сложных проблем / Ф. Джордж – СПб. : Вильямс, 2001. – 864 с.