В новой версии добавлена функциональность «reconcile» (rebalance_v2), отмеченная как крупнейшие за последние два года изменение в ФС. В отличие от ранее доступного режима «rebalance», механизм «reconcile» позволяет выполнить ребалансировку не только данных (например, реплицирование нескольких копий на разные накопители), но и метаданных в ФС (например, для переноса метаданных после добавления в пул дополнительного накопителя). Кроме того, reconcile теперь применим для всех опций ввода/вывода, а не только для операций фонового копирования и сжатия. В reconcile также автоматически учитываются изменения опций или настроек устройств и сразу перереплицируются деградировавшие данные и метаданные.
В reconcile задействованы отдельные индексы для: высокоприоритетных операций; оптимизации обработки данных на дисковых накопителях; данных, запланированных для обработки, которую пока невозможно выполнить (например, из-за нехватки места). Добавлена поддержка создания файловой системы на одном накопителе в режиме с двойной репликацией (replicas=2) — в такой конфигурации добавление второго накопителя приведёт к автоматической репликации данных на добавленный диск, без необходимости выполнения каких-либо действий пользователем.
Среди других изменений:
- Добавлены команды «reconcile status» и «reconcile wait». Добавлены опции монтирования «mount_trusts_udev» и «writeback_timeout». Переведены в число устаревших команды «data rereplicate», «data job drop_extra_replicas».
- Добавлен режим восстановления «merge_btree_nodes», выполняющий проверку всех узлов в btree-структурах, подпадающих под операции слияния.
- Проведена подготовка кода к переходу на использование языка Rust. Число используемых в коде операций goto сокращено с 2500 до 600. Вместо открыто кодированных векторов задействован макрос DARRAY(), предоставляющий функциональность, похожую динамические массивы C++ и Rust.
Для обработки ошибок задействован макрос try(), заимствованный из Rust. - В команде «bcachefs fs usage» обеспечено корректное информирование о деградировавших данных.
- Переработана обработка счётчиков, показываемых командной «bcachefs fs top». Упрощено добавление новых счётчиков и реализована возможность преобразования точек трассировки (tracepoint) в буферы вывода (printbufs).
- Повышено качество сообщений об ошибках, которые теперь включают информацию о типах сбоев (программные или аппаратные), действиях для устранения ошибки (например, запуска процесса восстановления), полученных от блочных устройств кодах ошибок ввода/вывода, отсутствующих устройствах. При сканировании btree-структур обеспечен вывод сведений о наличии возможности восстановления проблемных узлов.
- При записи в лог добавлена возможность раздельного определения лимитов на интенсивность вывода разных типов ошибок. Подобные лимиты позволяют предотвратить потерю сообщений об единичных аппаратных проблемах на фоне большого числа сообщений о программных ошибках.
- Для всех стадий восстановления добавлены индикаторы прогресса.
Проектом Bcachefs развивается файловая система, нацеленная на сочетание расширенной функциональности, свойственной Btrfs и ZFS, и уровня производительности, надёжности и масштабируемости, характерного для XFS. Bcachefs поддерживает такие возможности, как включение в раздел нескольких устройств, многослойные раскладки накопителей (нижний слой с часто используемыми данными на базе быстрых SSD, а верхний слой с менее востребованными данными из жестких дисков), репликация (RAID 1/10), кэширование, прозрачное сжатие данных (режимы LZ4, gzip и ZSTD), срезы состояния (снапшоты), верификация целостности по контрольным суммам, возможность хранения кодов коррекции ошибок Рида—Соломона (RAID 5/6), хранение информации в зашифрованном виде (используются ChaCha20 и Poly1305). По производительности Bcachefs опережает Btrfs и другие ФС на базе механизма Copy-on-Write, и демонстрирует скорость работы, близкую к Ext4 и XFS.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64396
