Фотографія

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

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

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

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

Дослідження і розробка віддаленої системи резервного копіювання даних

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

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



Дослідження і розробка віддаленої системи резервного копіювання даних

Зміст

Вступ

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

Проблема резервного копіювання даних є найбільш критичною для більшості людей і підприємств на сьогоднішній день. На даний момент велика кількість людей використовують різні системи резервного копіювання. Так само на різних підприємствах використовується своя структура зберігання даних, будь то бази даних або звичайні файли, свої сервера, ЕОМ, і свої операційні системи, тому для кожного підприємства підходить тільки їм необхідний специфічний програмний засіб для резервного копіювання даних, що відповідає необхідним вимогам структури самого підприємства. Але варто зазначити що безкоштовних систем з відкритим вихідним кодом налічується одиниці.

Так само існує дуже мало присутнє систем, керованих з сервера, на якому можна в профілі користувача підключити кілька комп'ютерів і налаштувати створення резервних копій файлів кожного з комп'ютерів, забезпечуючи роботу в корпоративній мережі без підключення до мережі інтернет. Так само мало систем, здатних відправляти резервні копії на власний сервер, стежити за кількістю копій на сервері, відправляти їх на сервер за розкладом. У зв'язку з цим проблема створення системи резервного копіювання з даними функціоналом і відкритим вихідним кодом на сьогоднішній день досить актуальна [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 с.