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