Проект Bcachefs только что выпустил версию 1.33 с «самой крупной новой функцией за последние ~2 года» для этой современной файловой системы Linux с копированием при записи, которая поддерживает шифрование, моментальные снимки, сжатие и многое другое, а также предлагает расширенные функции, способные конкурировать с такими файловыми системами, как Btrfs или ZFS.
В новой версии появился принципиально новый механизм «согласования», который унифицирует работу с данными и метаданными, автоматизирует репликацию и восстановление, а также значительно повышает производительность, качество ведения журналов и точность отчетов об ошибках при высокой нагрузке. Но прежде чем мы перейдем к новым функциям этой версии, давайте вкратце вспомним предысторию.
Как мы сообщали ранее, в Bcachefs происходит масштабный переход в плане распространения и поддержки. В середине 2025 года Линус Торвальдс исключил Bcachefs из официального ядра Linux 6.17 после публичного спора с ведущим разработчиком Кентом Оверстритом.
С выходом ядра Linux 6.18 неделю назад основной код Bcachefs был полностью удалён из дерева ядра. Чтобы сохранить Bcachefs и возможность его использования, Оверстрит решил распространять Bcachefs как модуль DKMS, а не как часть встроенной в ядро файловой системы.
В новой версии 1.33 появилось множество улучшений, среди которых наиболее важными являются следующие:
- Переименованный и переработанный механизм «согласования» (ранее «rebalance_v2»), который теперь обрабатывает как пользовательские данные, так и метаданные, реагирует на изменения в устройстве или конфигурации и автоматически повторно реплицирует поврежденные данные или метаданные без ручного вмешательства.
- Новая индексация и планирование задач по согласованию, в том числе высокоприоритетная обработка поврежденных экстентов и особый подход к вращающимся дискам (HDD), позволяющий избежать ненужных операций ввода-вывода.
- Некоторые старые команды, такие как
data rereplicateилиdata job drop_extra_replicas, устарели. Их заменяют новые команды, такие какreconcile statusиreconcile wait. - Основные улучшения серверной части: асинхронное объединение узлов B-дерева, очищенные точки трассировки и счетчики, улучшенное протоколирование ошибок (с четким различием между программными и жесткими ошибками) и улучшенные отчеты о ходе выполнения этапов восстановления.
- Новые доступные пользователю параметры монтирования и файловой системы, такие как
mount_trusts_udevдля проверки устройства иwriteback_timeoutдля управления временем обратной записи, что дает администраторам более точный контроль. - Работайте над долгосрочной модернизацией кодовой базы, чтобы подготовиться к переходу на Rust в будущем. Удалите множество путей обработки ошибок в стиле «goto» и создайте более чистую и удобную в сопровождении структуру кодовой базы.
Для получения дополнительной информации см. объявление.