«Технологии программного обеспечения интеллектуальных систем»
В настоящее время большинство данных хранятся на компьютерных накопителях, содержащих жёсткие магнитные диски, считывающие головки и прочие компоненты. Ввиду присутствия таких факторов как перепады напряжения, износ рабочих частей техники, внешние физические факторы, приводящие к деформации, человеческий фактор случайности, стало необходимым создавать копии важных данных и хранение их на других накопителях.
Проблема резервного копирования данных является наиболее критичной для большинства людей и предприятий на сегодняшний день. На текущий момент большое количество людей используют различные системы резервного копирования. Так же на разных предприятиях используется своя структура хранения данных, будь то базы данных или обычные файлы, свои сервера, ЭВМ, и свои используемые операционные системы, потому для каждого предприятия подходит только им необходимое специфическое программное средство для резервного копирования данных, соответствующие необходимым требованиям структуры самого предприятия. Но стоит отметить что бесплатных систем с открытым исходным кодом насчитывается единицы.
Так же существует очень мало присутствует систем, управляемых с сервера, на котором можно в профиле пользователя подключить несколько компьютеров и настроить создание резервных копий файлов каждого из компьютеров, обеспечивая работу в корпоративной сети без подключения к сети интернет. Так же мало систем, способных отправлять резервные копии на собственный сервер, следить за количеством копий на сервере, отправлять их на сервер по расписанию. В связи с этим проблема создания системы резервного копирования с данным функционалом и открытым исходным кодом на сегодняшний день весьма актуальна [1-2].
При разработке программного обеспечения стоит отметить определенные термины для дальнейшего разъяснения структуры программного обеспечения и его реализации [3].
Резервное копирование – процесс создания копии данных на носителе (жёстком диске, дискете и т.д.), предназначенном для восстановления данных в оригинальном или новом месте их расположения в случае их повреждения или разрушения.
Резервное копирование необходимо для возможности быстрого и недорогого восстановления информации (документов, программ, настроек и т.д.) в случае утери рабочей копии информации по какой-либо причине.
Всего существует не так много различных видов резервного копирования которые используются на сегодняшний день.
Полное резервное копирование обычно затрагивает всю систему и все файлы. Еженедельное, ежемесячное и ежеквартальное резервное копирование подразумевает создание полной копии всех данных. Обычно оно выполняется тогда, когда копирование большого объёма данных не влияет на работу организации. Для предотвращения большого объёма использованных ресурсов используют алгоритмы сжатия, а также сочетание этого вида с другими: дифференциальным или инкрементным. Полное резервное копирование незаменимо в случае, когда нужно подготовить резервную копию для быстрого восстановления системы с нуля.
При дифференциальном резервном копировании каждый файл, который был изменен с момента последнего полного резервного копирования, копируется каждый раз заново. Дифференциальное копирование ускоряет процесс восстановления. Все копии файлов делаются в определенные моменты времени, что, например, важно при заражении вирусами.
При добавочном резервном копировании происходит копирование только тех файлов, которые были изменены с тех пор, когда в последний раз выполнялось полное или добавочное резервное копирование. Последующее инкрементное резервное копирование добавляет только файлы, которые были изменены с момента предыдущего. Инкрементное резервное копирование занимает меньше времени, так как копируется меньшее количество файлов. Однако процесс восстановления данных занимает больше времени, так как должны быть восстановлены данные последнего полного резервного копирования, а также данные всех последующих инкрементных резервных копирований. В отличие от дифференциального копирования изменившиеся или новые файлы не замещают старые, а добавляются на носитель независимо.
Следующим видом резервного копирования данных является клонирование. Клонирование позволяет скопировать целый раздел или носитель (устройство) со всеми файлами и директориями в другой раздел или на другой носитель. Если раздел является загрузочным, то клонированный раздел тоже будет загрузочным.
Ещё одним видом резервного копирования данных является резервное копирование в виде образа.
Образ – точная копия всего раздела или носителя (устройства), хранящаяся в одном файле. Резервное копирование в режиме реального времени позволяет создавать копии файлов, директорий и томов, не прерывая работу, без перезагрузки компьютера.
При холодном резервировании база данных выключена или закрыта для потребителей. Файлы данных не изменяются, и копия базы данных находится в согласованном состоянии при последующем включении.
При горячем резервировании база данных включена и открыта для потребителей. Копия базы данных приводится в согласованное состояние путём автоматического приложения к ней журналов резервирования по окончании копирования файлов данных.
Программное обеспечение по резервному копированию данных имеет элементы распределенного хранения и считывания данных, потому важно отметить структуру и реализацию работы распределённых файловых систем [4].
Такие файловые системы имеют собственные механизмы управления разделами, которые упрощают возможности хранения общедоступной информации. Они так же поддерживают дублирование – способность делать копии разделов и сохранять их на других файловых серверах. Если один файловый сервер становится недоступным, то все равно к данным, хранящимся на его разделах, можно получить доступ с помощью имеющихся резервных копий этих разделов.
Современные распределенные файловые системы включают в себя специальные сервисы для управления разделами. Это позволяет вам смонтировать разделы различных файловых серверов в центральную иерархию директорий, поддерживаемую файловыми системами. Иерархии директорий доступны всем клиентам распределенной файловой системы, и выглядят одинаково на любой из клиентских рабочих станций. Это дает возможность пользователям работать со своими файлами одинаково на любом компьютере. Если ваш настольный компьютер не работает, вы совершенно спокойно можете использовать любой другой – все ваши файлы находятся в безопасности на сервере [5].
Распределенная файловая система представляет собой определенный слой программного обеспечения, который управляет связью между традиционными операционными системами и файловыми системами. Этот слой программных средств интегрируется с операционными системами машин-хостов сети и обеспечивает сервис распределенного доступа к файлам для систем, которые имеют централизованное ядро.
Распределенные файловые системы имеют ряд важных свойств. Каждая конкретная система может обладать всеми или частью этих свойств. Это как раз и создает основу для сравнения различных архитектур между собой.
Имеется несколько важных вопросов, которые рассматриваются при разработке распределенных файловых систем. Они касаются функциональных возможностей, семантики и производительности системы. Различные файловые системы можно сравнивать между собой, выясняя как они решают эти вопросы:
На рисунке 2.1 приведен пример, в котором два подкаталога удаленной файловой системы-сервера (share и X11) монтируются к двум (пустым) каталогам файловой системы-клиента.
В программном комплексе используется модифицированная трёхуровневая архитектура [6-7], она состоит из таких компонентов (слоёв): клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений). Модификация представляет собой возможность развёртывания программного средства в локальной сети, а также распределенное хранение и считывание данных. Помимо этого, для каждого слоя имеются свои модификации. На рисунке 4.1 изображена трёхуровневая архитектура программного средства.
В данной архитектуре первым слоем является клиент. Клиент – это интерфейсный компонент комплекса, который не имеет прямых связей с базой данных, не хранит состояние приложения, и не обрабатывает бизнес-логику (реализация правил и ограничений автоматизируемых операций). Компьютер пользователя подвязывается к его аккаунту на слое сервера приложений, принимает задачи, и в соответствии с ними по расписанию отправляет копию данных на указанные пользователем хранилища, с заданными пользователем настройками, а также сообщает серверу приложений о состоянии каждой задачи при их выполнении. Модификация данного слоя представляет собой хранение сообщений, посылаемых серверу приложений при отсутствии подключения к сети, и отправки сохранённых сообщений при подключении к сети. Данная модификация необходима в виду работы клиента с расписанием действий.
Второй слой (средний, связующий) является сервером приложений, где сосредоточена большая часть бизнес-логики. Он отвечает за обработку данных при общении с клиентом и базой данных [8]. Программное средство проектируются таким образом, чтобы при добавлении дополнительного функционала обеспечивалось горизонтальное масштабирование производительности программного средства и не требовалось внесения изменений в программный код приложения. Модификация данного слоя представляет собой возможность управления хранением данных, предоставляя выбор места хранения (на сервере баз данных или в хранилище сети Интернет), а также возможность распределенного хранения и считывания из разных хранилищ данных. Серверная часть доступна по URL внутри сети, помимо всей логики она так же отвечает и за Web-интерфейс, позволяющий управлять и настраивать все задачи по резервному копированию. Также пользователю доступна возможность подвязки нужных компьютеров к аккаунту, для составления на каждом из них необходимых задач резервного копирования. Задача имеет такие настройки как: выбор файлов, сжатие, выбор мест хранения, расписание, уведомление о состоянии, шифрование, история задач и сами сохраненные данные, которые пользователь может себе загрузить.
Сервер баз данных (слой данных) обеспечивает хранение данных и выносится на отдельный третий уровень. В программном средстве он реализуется средством системы управления базами данных MongoDB, подключение к этому компоненту обеспечивается только с уровня сервера приложений. Модификация данного слоя представляет собой распределенное хранение данных для обеспечения большей надежности и скорости считывания данных [9].
На сегодняшний день существует множество облачных сервисов, позволяющих хранить данные на собственных носителях информации. В разрабатываемом программном продукте разработана возможность распределенного хранения данных как на собственном дисковом пространстве, так и на популярных облачных хранилищах (Dropbox, Google Drive, Mega, OneDrive и пр.). В программном продукте всё дисковое пространство с выбранных пользователем сервисов представлено, как единое. Так же спроектированы элементы искусственного интеллекта для отслеживания загружаемых и считываемых данных, и автоматического распределения наиболее используемых файлов на сервис с лучшей скоростью обмена данными, а менее используемые файлы, соответственно, на сервис худшей скоростью обмена данными [10].
Магистерская работа посвящена актуальной научной задаче создания программного комплекса удалённого резервного копирования данных для корпоративных сетей. В рамках проведенных исследований выполнено:
В магистерской работе была выявлена и обоснована необходимость разработки данного программного средства, а так же выявлена предполагаемая будущая актуальность на основе статистики других альтернативных программных средств.