Архітектура системи дедублікації та розподілу даних у хмарних сховищах під час резервного копіювання
Автор
Русин, Б. П.
Погрелюк, Л. В.
Висоцька, В. А.
Осипов, М. М.
Варецький, Я. Ю.
Капшій, О. В.
Rusyn, B. P.
Pohreliuk, L. V.
Vysotska, V. A.
Osypov, M. M.
Varetsky, J. Y.
Kapshiy, O. V.
Русын, Б. П.
Погрелюк, Л. В.
Высоцька, В. А.
Осыпов, М. М.
Варецькый, Я. Ю.
Капший, А. В.
Дата
2019Metadata
Показати повну інформаціюCollections
Анотації
Розроблена та детально описана концептуальна модель системи. Розроблена інтелектуальна система дедуплікації та розподілу даних у хмарному сховищі, описано опис програмного забезпечення, розглядаються етапи роботи користувача. Було проведено тестування роботи спроектованої системи. Описано кілька контрольних зразків, проаналізовано результати. Метою системи є дедублікації та розподілу даних у хмарних сховищах таким чином, щоб в кінцевому результаті резервного копіювання даних усунути повторюючі частини даних використовуючи потужності розподіленого обчислення та хмарних сховищ. Підібравши правильний підхід до розподілення завдань і даних під час дедублікації, можливо використати весь потенціал хмарних розподіле-них систем для збільшення швидкості резервного копіювання та його пропускної здатності. Проаналізовано (наведено недоліки та переваги використання різних підходів) та обрані ефективні методи вирішення задач: гібридну дедублікацію на рівні блоків, розбиття потоку даних на основі цифрового відбитку Рабіна, розподіл даних на основі хеш значень блоків дедублікації та викори-стання розподіленого індексу. Дедублікація на рівні блоків передбачає два типи розбиття потоків даних на блоки, це розбиття з фіксованою довжиною та змінною на основі алгоритму. Розбиття з фіксованої довжиною досить тривіальне і швидке відносно складності алгоритму, проте недоліком є зміщення даних на початку потоку, оскільки блоки які будуть слідувати після змін будуть вважатися як нові. Проте у випадку з розбиттям блоків зі змінною довжиною, точку власне розбиття визначає алгоритм. Даний алгоритм повинен працювати з безкінечними потоками даних використовуючи кільцеву хеш функцію. Алгоритм поглинає кожен вхідний байт даних з потоку, і як тільки значення кільцевої хеш функції відповідає заданому раніше шаблону, це і слугує точкою розбиття потоку на блоки. Таким чином, при змінені або зміщені даних на пару байтів, новим буде вважатись лише той блок даних який охоплює дані. Проте для того щоб відслідковувати зміни і правильно виставляти точки розбиття необхідно перевіряти вхідні дані на певний заданий цифровий шаблон – хеш значення. Поширеною практикою є обчислення хеш значення кожен раз на отри-мання вхідного байту в потоці даних. Точкою розбиття стане той момент, коли отримане хеш значення відповідатиме заданому шаблону. Щоб робити такі обчислення ефективно, було придумано алгоритм кільцевого хешу. Один із найпоширеніших алго-ритмів кільцевого хешу є цифровий відбиток Рабіна. В ході аналізу засобів вирішення задач було обрано мову програмування Rust для написання клієнтської частини, мову програмування Scala для серверної частини, інструментарій Akka для менеджменту розподілених обчислень та Amazon S3 в якості хмарного сховища. Разработана и подробно описана концептуальная модель системы. Разработана интеллектуальная система дедуплика-ции и распределения данных в облачном хранилище, описано описание программного обеспечения, рассматриваются этапы работы пользователя. Было проведено тестирование работы спроектированной системы. Описаны несколько контрольных образцов, про-анализированы результаты. Целью системы является дедубликации и распределения данных в облачных хранилищах таким обра-зом, чтобы в конечном итоге резервного копирования данных усунуть повторяющиеся части данных, используя мощности распре-деленного вычисления и облачных хранилищ. Подобрав правильный подход к распределению задач и данных при дедубликации, возможно использовать весь потенциал облачных распределенных систем для увеличения скорости резервного копирования и его пропускной способности. Проанализированы (приведены недостатки и преимущества использования различных подходов) и вы-бранные методы решения задач: гибридную дедубликацию на уровне блоков, раз-биение потока данных на основе цифрового отпе-чатка Рабина, распределение данных на основе хэш значений блоков дедубликации и использования распределенного индекса. Дедубликация на уровне блоков предусматривает два типа разбиения потоков данных на блоки, это разбиение с фиксированной длиной и переменной на основе алгоритма. Разбивка с фиксированной длиной достаточно тривиальное и быстрое относительно сложности алгоритма, однако недостатком является смещение данных в начале потока, поскольку блоки, которые будут следовать после изменений, будут считаться как новые. Однако в случае с разбивкой блоков с переменной длиной, точку собственно разбие-ние определяет алгоритм. Данный алгоритм должен работать с бесконечными потоками данных, используя кольцевую хэш-функцию. Алгоритм поглощает каждый входной байт данных из потока, и как только значение кольцевой хэш-функции соответ-ствует заданному ранее шаблону, это и служит точкой разбиения потока на блоки. Таким образом, при изменении или смещены данных на пару байтов, новым будет считаться только тот блок данных, который охватывает данные. Однако для того чтобы от-слеживать изменения и правильно выставлять точки разбиения необходимо проверять входные данные на определенный заданный цифровой шаблон - хэш значения. Распространенной практикой является вычисление хэш значение каждый раз на полу-ния вход-ного байта в потоке данных. Точкой разбиения станет тот момент, когда полученное хеш значение будет соответствовать заданно-му шаблону. Для таких вычислений эффективно использовать алгоритм кольцевого хеша. Один из самых распространенных алго-ритмов кольцевого хеша является цифровой отпечаток Рабина. В ходе анализа средств решения задач был выбран язык программирования Rust для написания клиентской части, язык программирования Scala для серверной части, инструментарий Akka для менеджмента распределенных вычислений и Amazon S3 в качестве облачного хранилища. The conceptual model of the system is developed and described in detail. An intelligent system of deduplication and distribution of data in the cloud storage is developed, the description of the software is described, the stages of the user's work are considered. Testing of the projected system was carried out. Several control samples are described and results are analyzed. The purpose of the system is to deduplicate and distribute data in cloud repositories in such a way that the end result of the backup is to eliminate duplicate pieces of data using distributed computing and cloud repositories. By picking the right approach to distribute tasks and data during deduplication, you can harness the full potential of cloud-based distributed systems to increase backup speed and bandwidth. Analyzes (disadvantages and advantages of using different approaches) are analyzed and effective methods of solution are selected: hybrid block-level deduplication, splitting of data flow on the basis of Rabin's digital imprint, distribution of data based on hash values of blocks of deduplication and use of distributed index. Block-level deduplication involves two types of data flow splitting into blocks, a fixed-length, algorithm-based split. Fixed-length partition-ing is rather trivial and fast with respect to the complexity of the algorithm, but the downside is that data is displaced at the beginning of the stream, since the blocks that will follow after the changes will be considered new. However, in the case of partitioning of blocks of variable length, the point of proper partitioning is determined by the algorithm. This algorithm should work with infinite data flows using the ring hash function. The algorithm absorbs each input byte of data from the stream, and as soon as the value of the annular hash function corre-sponds to the previously specified template, it also serves as a point of splitting the stream into blocks. Thus, if the data is changed or dis-placed by a couple of bytes, only the data block that covers the data will be considered new. However, in order to track changes and correctly set breakpoints, it is necessary to check the input data for a specific preset digital pattern - a hash value. It is a common practice to calculate a hash value every time an input byte is received in a data stream. The point of partition will be the moment when the resulting hash value matches the specified pattern. To do these calculations effectively, an algorithm has been devised for the ring hash. One of the most common ring hash algorithms is a digital Rabin imprint. During the analysis of the solutions, the Rust programming language for client-side writing, the Scala programming language for the server-side, the Akka distributed computing management tool, and Amazon S3 as the cloud reposi-tory were selected.
URI:
http://ir.lib.vntu.edu.ua//handle/123456789/30528