Храните несколько версий больших двоичных файлов с минимальным дублированием данных (предпочтительно Linux)

Мне нужно хранить несколько версий двоичного файла размером ~ 150 ГБ (qcow2) на серверах Linux с локальным хранилищем, и я надеялся, что есть какое-то решение, которое заключается в сохранении различий, которые могут быть объединены по мере необходимости, так что мне не нужно создавать другую копия файла объемом 150 ГБ, когда изменилось только 4 гигабайта. Это вопрос хранения, а не вопрос об особенностях KVM/qcow2. Я уже исследовал некоторые из этих вариантов. В настоящее время используется CentOS 6.3 с EXT4. Файлы должны храниться неопределенно долго и должны быть полностью исправны при восстановлении. Я готов изменить файловую систему и т.д., если решение того стоит.

3 ответа

ZFS на Linux с дедупликацией может быть вашим другом в этом случае. Для установки доступны RPM / репозитории Red Hat.

Даже без дедупликации, если вы можете включить это в рабочий процесс создания снимков ZFS, есть некоторые существенные преимущества при попытке сделать это с ZFS.

Можете ли вы объяснить немного больше о том, как вы хотите работать с этими файлами? Вы ищете моментальные снимки или копируете несколько ревизий одних и тех же / похожих файлов в хранилище данных?

Я бы посмотрел на снимки LVM как на решение. Не вдаваясь в подробности, я бы сделал это:

  1. Создайте том LVM, достаточно большой, чтобы вместить ваши данные.
  2. Загрузите исходную копию вашего большого двоичного файла на этот том.
  3. Создать снимок LVM.
  4. Используйте rsync, чтобы скопировать другую версию большого файла вместо существующего файла.

На этом этапе вы можете получить доступ к исходному файлу, смонтировав снимок LVM. Также будет доступна последняя версия большого файла. Вы можете создать несколько снимков таким образом.

Я использую librsync для этой цели. Он доступен для CentOS и других клонов RHEL в репозитории EPEL.

Просто используйте:

rdiff signature new.qcow2 /tmp/new.qcow2.rdiffsig
rdiff delta /tmp/new.qcow2.rdiffsig old.qcow2 new.qcow2--old.qcow2.rdiff
rm /tmp/new.qcow2.rdiffsig
xz new.qcow2--old.qcow2.rdiff 

Вы можете удалить old.qcow2, Когда вам это понадобится снова, вы сделаете:

xz -d < new.qcow2--old.qcow2.rdiff.xz > /tmp/new.qcow2--old.qcow2.rdiff
rdiff patch new.qcow2 /tmp/new.qcow2--old.qcow2.rdiff old.qcow2
rm /tmp/new.qcow2--old.qcow2.rdiff

Это может быть цепочка - вы можете создать RDIFF из old.qcow2 в evenolder.qcow2 и так далее. Это довольно медленно, но очень экономно - мне обычно не нужно удалять старые резервные копии, используя это. Также есть программа rdiff-backup, которая автоматизирует аналогичную схему для целых каталогов.

Другие вопросы по тегам