В новой версии добавлена функциональность "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).
Источник: https://www.opennet.ru/opennews/art.shtml?num=64396
(opennet.ru, основная лента)