Дедуплицирующая файловая система на уровне блоков
Я ищу решение для файловой системы с копией при записи для общих пользовательских данных, таких как /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 недокументирован и не смог реализовать все системные вызовы.
2 ответа
Это звучит очень предприимчиво (как в дорогой).
datadomain предлагает дедупликацию данных и, возможно, netapp с их файловой системой wafl. Но по высокой цене.
"Свободной" альтернативой может быть zfs.
По моему мнению, "лучшая" и наиболее подходящая альтернатива Linuxy, хотя и на уровне файлов, а не на уровне блоков, была бы rsnapshot. Он использует rsync и жесткие ссылки для управления версиями.
Я скорее доверяю старым проверенным инструментам, чем использую новые файловые системы, такие как Btrfs, которых не было достаточно долго, чтобы люди могли обнаружить всевозможные неприятные ошибки.
Я смотрю и исследую точно так же, я мог бы предложить https://attic-backup.org/quickstart.html на данный момент, кажется, довольно просто и хорошо для резервного копирования Linux.
Существует также bacula с этой функцией, но чердак, кажется, достаточно хорош для большинства случаев.