Маркус Холланд-Мориц (инженер-программист Facebook) сделал это известным через публикацию первые версии DwarFS, файловая система только для чтения, предназначенная для максимального сжатия и уменьшения количества избыточных данных.
Эта файловая система использует механизм FUSE и работает в пространстве пользователя, код написан на C ++ и распространяется под лицензией GPLv3.
О DwarFS
карлики напоминает файловые системы, такие как SquashFS, cramfs и CromFS в ваших задачах, и может использоваться для создания живых образов и уменьшения размера файлов с большим количеством дубликатов и повторяющихся данных (например, хранение образов виртуальных машин или коллекций разных версий программ).
По скорости доступ к данным, DwarFS примерно на том же уровне, что и SquashFS, но в несколько раз опережает эту ФС по эффективности сжатия и скорости визуализации.
Проект был разработан для решения проблемы оптимизации хранилища с разными версиями Perl (автор DwarFS участвует в обслуживании файла CPAN).
Изначально мы пытались использовать Cromfs для сжатия, Но создание образа заняло слишком много времени, а стабильность оставляла желать лучшего. SquashFS работала стабильно и он рендерил изображения заметно быстрее, но уровень сжатия был неприемлемым.
Большая часть кода DwarFS был написан в 2013 году. В этом году автор нашел время, чтобы вывести код на публику и написать документацию. DwarFS использует библиотеки Boost и Folly.
Замороженная ветвь библиотеки Thrift Facebook используется для хранения метаданных. Другие зависимости включают FUSE3 и библиотеки сжатия lz4, zstd и liblzma.
DwarFS превзошла SquashFS по степени сжатия в 8 раз, а по скорости создания образа в 4 раза при создании образа, включающего 1139 различных инсталляций Perl, из которых 284 версии Perl.
карлики удалось сократить тест с 47 ГБ до 582 МБ (1,1% от исходного размера), а размер результирующего образа SquashFS составил 4,7 ГБ. Для создания образа SquashFS потребовалось 69 минут, в то время как DwarFS завершила работу за 15 минут.
Обе файловые системы использовали алгоритм сжатия ZSTD. При использовании LZMA размер образа DwarFS был уменьшен еще на 18% (примерно 479 МБ), но скорость доступа к этому образу была значительно снижена.
Тесты с данными с меньшим количеством дубликатов показали преимущество не столь значительный, но все же замечательный от DwarFS. Например, размер образа корневой файловой системы Paspberry Pi OS составлял 298 МБ для DwarFS и 364 МБ для SquashFS, а время сборки составляло 1 минуту 36 секунд и 1 минуту 54 секунды соответственно.
Из ключевые особенности DwarFS выделяются следующие:
- Способность Power устраняет избыточность, группируя похожие данные (независимо от границ файлов) с помощью хэш-функций LSH для идентификации похожих объектов.
- Анализ сегментации блоков файловой системы для уменьшения размера несжатой файловой системы и повышения эффективности использования кэша процессора за счет поступления большего количества необходимых данных.
- Многопоточная реализация утилиты создания образов и модуля FUSE, который может использовать все доступные ядра ЦП во время работы.
- Экспериментальная поддержка возможности подключения контроллеров Lua, которые можно использовать для фильтрации и сортировки контента.
- Режим переупаковки, позволяющий изменить алгоритм сжатия уже созданного образа (например, можно переупаковывать, используя LZMA или LZ4 вместо ZSTD).
- Образы создаются с помощью утилиты mkdwarfs и монтируются с помощью утилиты dwarfs.
Наконец, если вы хотите узнать больше об этой файловой системе или хотите скомпилировать ее исходный код, вы можете ознакомиться с информацией или получить исходный код. По следующей ссылке.