Kent Overstreet, создатель и главный разработчик файловой системы (ФС) bcachefs, запустил кампанию по привлечению средств на дальнейшее развитие проекта. Мотивацию к созданию ещё одной файловой системы Кент извлекает из текущей плачевной ситуации с файловыми системами в Linux:
- ext4: Да, она работает, но годы долгой эволюции берут своё. Серьёзные проблемы с качеством исходного кода, проблемы с производительностью, периодически выявляемые ошибки, приводящие к повреждению или потере хранимых данных. По мнению разработчиков ФС, надёжная работа этой ФС — это мираж, т.к. лучший компонент этой ФС — это fsck.
- XFS: Работает надёжно, качество и строгость исходного кода ФС является примером для подражания для всех остальных. XFS имеет классическую архитектуру: update-in-place, а не copy-on-write. Поэтому множество продвинутых функций в рамках этой ФС реализовать проблематично или просто невозможно.
- btrfs: ФС разрабатывалась под Linux как ФС следующего поколения, «наш ответ ZFS». Но она разрабатывалась на скорость, без проработки архитектуры. Например, допущено множество ошибок в формате хранимых данных, ужасное качество исходного кода и его огромный объем. Много людей уже погорело на btrfs.
- ZFS: Эта ФС показывает людям то, что они могут получать от copy-on-write ФС, но ФС живёт и развивается вне Linux, и на Linux она не ориентирована. Из технических особенностей: в отличие от остальных современных ФС, ZFS имеет block-based архитектуру вместо extent-based (сделано для упрощения реализации снимков на уровне ФС).
Как видно, ситуация с файловыми системами в Linux оставляет желать лучшего, что же предлагает Kent? bcachefs уже сегодня — это:
- copy-on-write POSIX-совместимая ФС.
- Нижний слой ФС реализован на базе стабильного и оттестированного годами проекта bcache. Файловая система (при текущем наборе функций) уже стабильна и протестирована на хранении 50 ТБ+ данных. С момента первого анонса было выявлено лишь несколько мелких ошибок. Создатель ФС использует bcachefs на своём ноутбуке в качестве корневой.
- Высокая скорость работы. Со времени апрельских тестов производительности были сделаны оптимизации. В bcachefs хорошо отработан tail latency, практически отсутствуют блокировки потоков на вводе-выводе.
- Простой и понятный исходный код. Текущий исходный код меньше по объёму, чем ext4, но уже содержит большинство функций btrfs.
Таким образом, проект bcachefs готов к ограниченному использованию уже сейчас, но реализация части функций требует спонсирования. Текущий статус основных функций:
- Хеш-суммы: реализовано на 100%, по умолчанию — crc32c.
- Сжатие: реализовано (LZ4, gzip). Но не доделан подсчёт свободного места, поэтому сжатие пока не приводит к увеличению свободного места.
- Работа поверх нескольких устройств, включая кэширующие устройства (tiering): уже работает, но требуется тестирование и отладка.
- Репликация: сделано на 80%.
- Коды избыточности (Reed-Solomon, наподобие RAID 5/6): не начато.
- Шифрование: не начато.
- Снимки (snapshots): уже в процессе. Они будут иметь ряд приемуществ над традиционными снимками: значительно меньшие потери производительности и свободного места.
- И другие.
Для продолжения стабильного развития bcachefs необходимо $3000 в месяц. Сейчас все расходы на развитие ложатся на кошелёк Кента.
>>> Подробности