Дедуплицирующая файловая система на уровне блоков

8

Я ищу дедупликационное решение для файловой системы с копированием при записи для общих пользовательских данных, таких как /homeи их резервные копии. Он должен использовать оперативную / встроенную / синхронную дедупликацию на уровне блоков с использованием безопасного хеширования (для незначительной вероятности коллизий), такого как SHA256 или TTH . Дублирующиеся блоки не должны даже касаться диска.

Идея состоит в том, что я должен иметь возможность просто скопировать /home/<user>на внешний жесткий диск с такой же файловой системой, чтобы сделать резервную копию. Просто. Нет необходимости возиться с инкрементными резервными копиями, когда повреждение любого из моментальных снимков почти всегда будет нарушать все последующие моментальные снимки, и нет необходимости использовать специальный инструмент для удаления или «извлечения» снимка. Все должно быть просто сделано из файлового браузера, не беспокоясь. Вы можете себе представить, как легко это будет? Мне никогда не придется дважды думать о резервном копировании!

Я не возражаю против снижения производительности, главное - надежность. Хотя, с конкретными реализациями cp, mvи scp, и плагином файлового браузера, эти операции были бы очень быстрыми, особенно когда есть много дублирования, поскольку они должны были бы только передать отсутствующие блоки. Случайное использование обычных инструментов копирования, которые не интегрируются с FS, займет больше времени, приведет к потере некоторой полосы пропускания при удаленном копировании и потере некоторого ЦП, поскольку дублированные данные будут повторно считываться, повторно передаваться и повторно хэшироваться (хотя ничего не будет переписано), но абсолютно ничего не испортило бы. (Некоторое программное обеспечение для обмена файлами также может принести пользу путем интеграции с FS.)

Так каков лучший способ сделать это?

Я посмотрел на несколько вариантов:

  • lessfs - выглядит неуправляемым Любой хороший?
  • Opendedup / SDFS - Java? Могу ли я использовать это на Android ?! Что такое SDFS ?
  • Btrfs - Некоторые патчи плавают в архивах списков рассылки, но реальной поддержки нет.
  • ZFS - Надеюсь, однажды они получат лицензию на условиях настоящей свободной лицензии / лицензии OpenLource, совместимой с GPL.

Кроме того, 2 года назад у меня была попытка в Python использовать Fuse на уровне файлов для использования поверх обычной твердой FS, такой как EXT4, но я обнаружил, что Fuse для Python недокументирован и не смог реализовать все системные вызовы.

Джеймс Хей
источник
Не файловая система, но вы можете взглянуть на недавно выпущенный инструмент резервного копирования Obnam .
JanC
@JanC: Спасибо, это похоже на то, что программное обеспечение для резервного копирования сделано правильно! Это позволяет избежать этого: «Нет необходимости возиться с инкрементными резервными копиями, когда повреждение любого из моментальных снимков почти всегда будет нарушать все последующие моментальные снимки», - но не это: «и не нужно использовать специальный инструмент для удаления или« извлечения » снимок. ". Определенно хорошая находка, хотя! Я мог бы работать с некоторыми кодами Python. :-)
Джеймс Хай
@JamesHaigh Вы можете также опубликовать эту идею в Ubuntu BrainStorm ; если вы еще этого не сделали.
Самик
@JamesHaigh Одна из вещей в дорожной карте Obnam - это файловая система на основе предохранителей (но я не думаю, что есть временная шкала, показывающая, когда этого ожидать). Это приблизило бы «никакой дополнительный инструмент».
JanC
Если вы хотите избежать повреждения одной резервной копии, нарушая последние, вы просто делаете инкрементное резервное копирование нескольких поколений. Вместо того, чтобы делать полное воскресенье и дневной дифференциал, который всегда относительно предыдущего дня, вы, например, в среду делаете инкрементное резервное копирование относительно полного резервного копирования в воскресенье (а не во вторник). Тогда, если вторник поврежден, вам все равно, если у вас есть резервная копия среды, вы пропускаете понедельник и вторник при восстановлении.
psusi

Ответы:

1

Это звучит очень предприимчиво (как в дорогой).

datadomain предлагает дедупликацию данных и, возможно, netapp с их файловой системой wafl. Но по высокой цене.

«Свободной» альтернативой может быть zfs.

По моему мнению, «лучшей» и наиболее подходящей альтернативой для Linuxy, хотя и на уровне файлов, а не на уровне блоков, будет rsnapshot. Он использует rsync и жесткие ссылки для управления версиями.

Я скорее доверяю старым проверенным инструментам, чем использую новые файловые системы, такие как Btrfs, которых не было достаточно долго, чтобы люди могли обнаружить всевозможные неприятные ошибки.

Tomodachi
источник
Enterprise? Нет, это скорее та вещь, которую я ожидал увидеть по умолчанию в Ubuntu в будущем из-за простоты использования. Я упомянул ZFS, но это CDDL, поэтому не Free с большой буквы F. rsnapshotне является файловой системой, это скорее хакерская функция для создания функциональности, подобной моментальным снимкам, в устаревших файловых системах, не создающая «настоящие» снимки (снимки должны быть атомарными ) и является инкрементным (см. 2-й абзац). Я бы предпочел использовать относительно новую ФС, чем ту, которая использует инкрементальные значения.
Джеймс Хей
Я предполагаю, что «уровень файла» немного двусмыслен, но я видел термин, используемый в контексте файловых систем наряду с уровнем блоков, уровнем байтов и уровнем битов. Это был контекст, который я имел в виду.
Джеймс Хай
1
@JamesHaigh Согласно Free Software Foundation , CDDL является бесплатной (как и в случае свободы) лицензией, просто она не совместима с GPL . Это означает, что код CDDL (например, официальная реализация ZFS) и код GPL (например, ядро ​​Linux) не могут быть юридически связаны друг с другом , и, поскольку драйверы в Linux обычно связаны как модули, это препятствует поддержке CDDL в операционных системах на основе Linux.
Элия ​​Каган
2
Возможно, ZFS в Linux (зависит от того, кого вы спрашиваете) справляется с этим отдельно . В качестве альтернативы, FUSE позволяет «драйверам» файловой системы работать в пользовательском пространстве, где им не нужно самим связываться с ядром, а также существует версия ZFS для FUSE . Таким образом, у вас есть несколько вариантов использования файловых систем ZFS в операционных системах, таких как Ubuntu, которые используют Linux в качестве ядра. (Некоторые операционные системы, такие как Debian, позволяют использовать другое ядро.)
Элия ​​Каган
1

Я смотрю и исследую точно так же, я мог бы предложить https://attic-backup.org/quickstart.html#automating-backups на данный момент, кажется, довольно просто и хорошо для резервного копирования Linux.

Существует также bacula с этой функцией, но чердак, кажется, достаточно хорош для большинства случаев.

pablodav
источник