Общий алгоритм дедупликации
-
Определение блочного устройства, в которое будут переданы дедуплицированные блоки данных резервной копии после её создания.
-
Получение от сервера хеш-таблицы блоков данных, которые уже располагаются в дедуплицированном блочном устройстве и которые с наибольшей степенью вероятности могут располагаться в источнике данных, для которых выполняется резервное копирование.
-
Расчёт хеш-функций для всех блоков данных резервной копии. Если хеш находится в ранее переданной таблице, то этот блок помечается, как не требующий передачи на сервер, но учитывается в метаданных резервной копии. Блоки данных для резервной копии помещаются в дедупликационном буфере в оперативной памяти клиента системы резервного копирования (параметр
deduplication-task-memory
в конфигурационном файле/opt/rubackup/etc/config.file
определяет максимально возможный объём памяти, который разрешено использовать для этой задачи, по умолчанию равен256 МБ
). Когда буфер полностью заполнен, он передаётся на сервер резервного копирования вместе с сопроводительной хеш-таблицей. -
Когда сервер резервного копирования принимает блоки данных от клиента, он должен проверить, что блочное устройство не содержит точно такие же блоки. Таблица всех блоков данных блочного устройства располагается в оперативной памяти сервера резервного копирования. Для быстрой проверки того, что переданные блоки точно не содержатся в блочном устройстве используется вероятностный фильтр Блума. Если блок данных точно не содержится в блочном устройстве, происходит его запись в первый свободный блок, а также происходит запись в хеш-таблицу оперативной памяти и в базу данных RuBackup. Если фильтр Блума указывает, что блок данных, вероятно, уже существует в блочном устройстве, происходит проверка наличия соответствующего дайджеста в общей хеш-таблице блочного устройства. Если блок найден, то происходит запись в соответствующую таблицу базы данных RuBackup о том, что резервная копия использует этот блок данных; если блок не найден - происходит его запись в блочное устройство в первый свободный блок, запись дайджеста в хеш-таблицу и записи в соответствующие таблицы базы данных RuBackup.
-
При восстановлении резервной копии происходит проверка наличия восстанавливаемых блоков непосредственно в месте восстановления. Если в месте восстановления присутствует информация, которую не нужно восстанавливать, то будут переданы только те блоки данных, которые отсутствуют в месте восстановления. Например, если в месте восстановления требуется восстановить структуру каталогов и отсутствует несколько файлов или каталогов, то сервер резервного копирования передаст только недостающие или изменённые блоки данных.