Можно ли дедуплицировать tars на уровне блоков?

Не прямое отвечает, но это может помочь:

Каталог /etc хранит конфигурацию для Вашей операционной системы, поэтому это нужно считать хорошей идеей иметь Вашу конфигурацию с Вашей операционной системой, которая находится на том же разделе. Чтобы сохранить разумное резервное копирование или возможно даже совместно использовать конфигурации, Вы могли использовать мерзавца:

  • создайте репозиторий мерзавца из Вашего /etc и клонируйтесь/поместите его к тому, везде, где Вы хотите сохранить его
  • запишите init сценарий, который делает a git pull на "запуске" для получения новой версии от того специального раздела в /etc
  • исправьте сценарий после того, как упомянутый раздел будет смонтирован в Вашем порядке начальной загрузки, где-нибудь в runlevel S
  • имейте сценарий, делают a git commit и git push на завершении работы/перезагрузке для сохранения текущей конфигурации

Два преимущества:

  1. когда что-то повредится, у Вас всегда будет своя конфигурация, где ОС ожидает, что это будет
  2. Вы будете иметь управление версиями и можете вернуться и debig Ваши конфигурации, если Вы испортили
5
10.06.2015, 19:43
1 ответ

Обычно, нет. Можно было бы спроектировать файловую систему, которая обеспечивает такую дедупликацию, но это было бы очень дорого, за очень небольшую практическую пользу, так что я сомневаюсь, что это было сделано. Проблема в том, что дедупликация смотрит только на выровненные экстенты.

Дедупликация файловых систем обычно работает на блочном уровне. Когда драйвер файловой системы собирается хранить блок, он вычисляет контрольную сумму для содержимого блока и ищет эту контрольную сумму в таблице. Если в таблице указано, что блок с этой контрольной суммой не существует, то блок сохраняется, а контрольная сумма добавляется в таблицу. Если контрольная сумма присутствует в таблице, драйвер проверяет, идентичен ли какой-либо из блоков с этой контрольной суммой блоку, который вскоре будет сохранен; если он есть, то создается новая ссылка на этот блок, а если нет, то блок добавляется.

Как видите, при написании блока необходимо заплатить определенную цену. Но, по крайней мере, эта стоимость оплачивается только один раз за запись блока. Если файл 1 содержит aaaabbbcccc, файл 2 содержит aabbbbcccc и размер блока 4, то файлы не содержат идентичных блоков, поэтому дедупликация не происходит. Обнаружение того, что файл 2 включен в файл 1, потребует вычисления контрольных сумм для блоков при любом выравнивании, по непомерно высокой цене.

В общем случае блоки файла в файле tar не выравниваются с блоками файловой системы. Файл в tar-архиве может начинаться с любого смещения, кратного 512 (размер tar-блока), но большинство файловых систем используют больший размер блоков. Если начало файла внутри архива случайно совпадает с началом блока файловой системы, то этот файл будет выровнен, если представится такая возможность. Типичные размеры блоков файловой системы больше, хотя, поскольку они кратны 512, дедупликация будет происходить время от времени, например, примерно 1 из 8 для блоков размером 4096 байт, предполагая равномерное распределение размеров файлов по модулю 4096 (что не совсем верно, так что вероятность на самом деле несколько меньше).

Типичным случаем использования дедупликации являются файлы, которые идентичны или в основном идентичны: резервные копии, старые версии файла и т.д. Преобразованные файлы не типичны. Особенно не типичны несжатые архивы.

5
27.01.2020, 20:39

Теги

Похожие вопросы