Дедупликация NTFS, ZFS, BTRFS
Главный вопрос зачем?
Есть множество примеров где дедупликация может решить поставленные задачи.
Скажем у вас есть домашний архив фото, вы храните их на ПК, но хотите так же иметь резервную копию на внешнем usb hdd, но фотографий так много что на диск они не помещаются, покупать новый вы не планировали, но иметь хоть какой то вариант резервной копии нужно, тут вам может помочь один из вариантов технологии дедупликации.
Либо у вас есть корпоративный сервер с резервными копиями данных, еще одна копия у вас хранится в другом офисе, но вы скажем хотите иметь offline бекап на периодически подключаемом NAS (ленточные бекапы для вас это что то на богатом), почему периодически? Потому что вы хотите обезопасить себя от всякого рода шифровальщиков и прочих онлайн угроз, и иметь такого рода “холодный” бекап где то под ногами, но опять же NAS всего то несколько террабайт, а копия весит сильно больше.
Есть также примеры с эфемерными VM поднимаемыми по требованию десятками тысяч в день, на которых нет каких либо важных данных, но суммарно они могут занимать терабайты дискового пространства одними и теми же библиотеками.
Что же такое дедупликация?
Дедупликация данных - это процесс обнаружения и удаления повторяющихся данных в файловой системе.
Это позволяет уменьшить размер данных, уменьшить затраты на хранение.
Есть так же реализации дедупликации данных в базах данных, но эта тема находится за рамками данной статьи.
Виды и варианты дедупликации данных:
Дедупликация на уровне блоков.
Этот вид дедупликации идентифицирует повторяющиеся блоки данных внутри файловой системы и хранит только одну копию каждого уникального блока. Повторяющиеся блоки заменяются ссылками на эту единственную копию, что позволяет сократить объем используемого дискового пространства.
Дедупликация на уровне файлов.
В этом случае дедупликация происходит на уровне целых файлов. Система идентифицирует повторяющиеся файлы и хранит только одну копию каждого уникального файла. Вместо дублирования файлов система создает ссылки на одну и ту же копию.
Дедупликация на уровне блоков с учетом контента (content-aware deduplication).
Этот вид дедупликации основан на анализе фактического содержимого блоков данных. Он позволяет обнаруживать и удалять повторяющиеся блоки, даже если они физически размещены в разных местах файловой системы или имеют незначительные отличия.
Так же реализации дедупликации данных могут комбинировать данные виды дедупликации для достижения наилучших результатов.
Помимо этого реализация дедупликации бывает “на лету” и в постобработке.
Inline Deduplication (интегрированная дедупликация): В этом подходе дедупликация выполняется непосредственно в момент записи данных на диск. Когда новые данные добавляются в файловую систему, система проверяет их на наличие дубликатов и удаляет повторяющиеся блоки данных, прежде чем записать данные на диск. Это позволяет избежать сохранения дублирующихся данных на диске и сразу же сэкономить пространство.
Как хороший пример использования: можно скопировать 10TB данных на диск с настроенной inline deduplication объемом 5TB, с оговоркой что вы попадете в коэффициент дедупликации x2 с вашим типом данных.
Post Processing Deduplication (последующая дедупликация): В этом подходе дедупликация выполняется после того, как данные уже были записаны на диск. В этом случае дедупликация процесс, который работает в фоновом режиме и сканирует файловую систему, ищет повторяющиеся блоки данных и удаляет дубликаты. Последующая дедупликация может быть более ресурсоемкой операцией, поскольку требуется сканирование всей файловой системы для выявления повторений, но она может быть эффективной, особенно для файловых систем, в которых часто происходят изменения данных.
Пример использования: у вас уже есть диск объемом 10 TB данных который практически заполнен, и вы хотите сократить занимаемое на нем место без фактического удаления данных.
Есть еще варианты реализации так называемых Target Deduplication и Source Deduplication, но они чаще всего применяются в специализированном ПО или системах СХД, в домашней лабе это сложно проверить.
И так лаба:
Virtualbox 7.0.4
Host PC:
Intel Core i7-10510U CPU 1.80GHz / 2.30 GHz
4 CPU
32GB RAM
NVME Samsung SSD 970 EVO Plus 1TB
Windows Server 2022
2 vCPU
4GB RAM
Ubuntu Server 23.04 ZFS
2 vCPU
4GB RAM
Ubuntu Server 23.04 BTRFS
2 vCPU
4GB RAM
Zabbix Appliance 6.4.3
2 vCPU
4GB RAM
Официальная документация доступна по ссылке:
https://www.zabbix.com/download_appliance
Датасет:
103 GB (111,144,359,353 bytes)
Внутри tar.gz архивы с бэкапами сайта.
Для минимального влияния просадки производительности хост машины все тесты я проводил поочередно, то есть включенными одновременно были только VM Zabbix и текущая VM с тестом дедупликации, другие 2 VM были выключены.
Linux ZFS
Копируем dataset
И так датасет скопирован, смотрим что у нас со статистикой zpool:
Данные с копировались примерно за 18 минут, а вот с дедупликацией потребовалось уже около 30:
Так же посмотрим на процессор:
По оперативной памяти особой разницы нет.
Результат дедупликации.
Занято около 33 Gb дискового пространства, коэффициент дедупликации 3.39!
Занятое место по Заббикс:
Но в процентах картина ближе к правде:
Итого дедупликация на zpool дала нам следующую статистику:Было занято 104GB, стало 30.6G.
Коэффициент дедупликации: 3.39
Инфографика:
Выводы:
ZFS действительно способен эффективно экономить дисковое пространство, однако важным фактором является выбор между оперативной памятью и жестким диском, а также тип данных, который будет храниться и дедуплицироваться.
Linux BTRFS
Копируем файлы:
Как видимо занято 103.73GiB
Результаты:
Весь процесс занял более 7 часов. К сожалению, результаты дедупликации оказались не очень впечатляющими: объем занимаемого пространства до применения составлял 103.73GiB, а после сокращения процессом осталось только 82.30GiB, что означает, что удалось сократить всего лишь около 20.66%.
Инфографика:
Выводы:
По моему мнению, дедупликация в сочетании BTRFS с BEES не оказалась такой интересной и эффективной, как в случае с ZFS. Хотя у них разные принципы работы, конечные результаты на ZFS выглядят более привлекательными и достигаются за меньший период времени.
С другой стороны, BTRFS, как видно, менее требовательна к оперативной памяти, хотя при таких результатов сжатия места лично для меня это уже не так важно.
Windows NTFS
Копируем файлы на нашу систему:
Результаты:
Удивительно, но результаты дедупликации оказались впечатляющими. Размер был сжат на целых 93%! Теперь занимаемое место на диске составляет всего 7.13GB вместо изначальных 103 GB. Это значительное уменьшение объема данных, которые нужно хранить, и безусловно позволяет сэкономить драгоценное дисковое пространство.
Инфографика:
Вот тут было неожиданно для меня, дедупликация потребовала меньше RAM чем копирование файлов.
Выводы:
Для моего датасета Windows оказалась удивительно эффективной, и коэффициент сжатия данных оказался превосходным – просто мечта! Жаль, что у Майкрософт есть проприетарные ограничения и нюансы, которые не позволяют использовать дедупликацию на обычной версии Windows. Она доступна только на Windows Server.
Дедупликация данных - процесс обнаружения и удаления повторяющихся данных в файловой системе. Это позволяет сократить объем используемого дискового пространства и уменьшить затраты на хранение. В статье были рассмотрены различные виды дедупликации, такие как дедупликация на уровне блоков и файлов, а также дедупликация на уровне блоков с учетом контента.
Дедупликация может быть реализована "на лету" или в постобработке. При интегрированной дедупликации данные проверяются на наличие дубликатов и удаляются перед записью на диск, что позволяет сразу сэкономить пространство. При последующей дедупликации процесс сканирует файловую систему и удаляет дубликаты уже после записи данных на диск.
Linux ZFS и Windows (на Windows Server) предлагают эффективные реализации дедупликации данных. Например, Windows сжала размер данных на целых 93%, что значительно экономит дисковое пространство. Однако у Windows есть ограничения, и дедупликация доступна только на Windows Server.
Linux BTRFS с BEES показал менее впечатляющие результаты дедупликации по сравнению с ZFS и Windows. Хотя она менее требовательна к оперативной памяти, результаты сжатия пространства не так впечатляющи.
Выбор между оперативной памятью и жестким диском, а также тип данных, может оказывать влияние на эффективность дедупликации.
В целом, дедупликация данных может быть полезна в различных сценариях, таких как создание резервных копий, сокращение занимаемого места на диске и обеспечение эффективного использования ресурсов хранения. Однако, при выборе реализации дедупликации необходимо учитывать особенности каждой системы и типов данных, чтобы достичь наилучших результатов.