Хранение бэкапов это всегда очень большие объемы данных и долгий срок хранения. Разрабатывая нашу систему хранения данных (СХД) для резервных копий TATLIN.BACKUP мы столкнулись с недопустимо быстрым ростом метаданных для восстановления данных, причём метаданные часто дублировались. При среднем сжатии данных в 6 раз и доступной ёмкости для данных в 690 ТБ, объём метаданных достигал 13 ТБ, что занимало всю выделенную ёмкость под них.
Я расскажу:
- Как мы решали эту проблему с использованием структуры Дерева Меркла и сократили объём метаданных на 83% при средней дедупликации в 6x раз,
- А также как это позволило нам ускорить поиск дубликатов в 10 раз
- И о применении content-defined chunking алгоритма для построения дерева для того, чтобы эти решения работали.
- А также о подобных (но не наших) решениях для систем контейнеризации и распределённых key-value хранилищ.
Наш подход сильно экономит дисковое пространство, а значит и финальную стоимость хранения. И его также могут использовать системы хранения и БД для ускорения операций поиска, pull/push операций данных или быстрой синхронизации реплик в распределённых БД.