Bcachefs 1.33: Расширенная диагностика, метрики в реальном времени и оптимизация B-деревьев.

Ключевые моменты:
  • Подробные сообщения об ошибках: объяснение причины, тип (аппаратная/программная) и решение.
  • Команда `bcachefs fs top` теперь отображает скорость передачи данных в реальном времени.
  • Асинхронное объединение узлов B-дерева для повышения производительности под нагрузкой.
  • Новые параметры mount_trusts_udev и writeback_timeout.
  • Значительное сокращение количества операторов goto в коде (с 2500 до 600) в рамках подготовки к появлению Rust.
Бкэшефс

Bcachefs — это файловая система с копированием при записи для операционных систем на базе Linux.

Несколько дней назад Кент Оверстрит объявил о выпуске Bcachefs 1.33.0 , новой версии файловой системы, которая вносит существенные структурные изменения в управление данными и архитектуру исходного кода.

Это обновление обещает стать одним из самых значительных за последние два года, уделяя особое внимание целостности метаданных и модернизации кода на языке C.

«Примирение»: новая эра целостности данных.

Наиболее заметной новой функцией, названной самым значительным изменением за последние два года, является внедрение функции согласования (rebalance_v2) . Этот новый механизм заменяет старую систему «перебалансировки» и устраняет одно из ее главных ограничений: теперь система может управлять и перемещать не только пользовательские данные, но и метаданные файловой системы.

Rebalance_v2 работает в упреждающем и автоматическом режиме. Если в массив добавляется новый диск или изменяются параметры резервирования, Bcachefs немедленно начинает репликацию и исправление любых поврежденных данных или метаданных, используя отдельные индексы для определения приоритета критически важных операций. Это гарантирует сохранение целостности системы даже во время интенсивных работ по техническому обслуживанию.

Очистка кода и подготовка к работе с Rust.

Внутри версии 1.33.0 произошла масштабная реструктуризация кода на языке C, что сделало его более безопасным и совместимым с будущей реализацией. РжавчинаРазработчик провел генеральную уборку, сократив количество операторов. goto с 2.500 до всего лишь 600, что значительно упрощает логическую структуру программы.

Кроме того, были введены новые макросы, такие как: DARRAY() y try()Эти функции разработаны для имитации динамического поведения векторов и обработки ошибок в Rust и C++. Это не только модернизирует существующий код, но и упростит переносимость и уменьшит поверхность ошибок памяти в будущем.

Улучшенная диагностика и гибкость хранения данных.

В этой версии, разработанной с учетом потребностей системного администрирования, значительно улучшена ясность сообщений об ошибках . Bcachefs теперь может различать и сообщать, вызвана ли ошибка программной ошибкой или физической проблемой оборудования, даже предлагая необходимые шаги по восстановлению. Это крайне важно для предотвращения ошибочной диагностики, когда причиной сбоя диска считается файловая система.

Эта прозрачность распространяется на несколько уровней:

  • Подробная информация об ошибках ввода-вывода: Когда слой блоков сообщает о сбое, Bcachefs теперь передает конкретный код (например, BLK_STS_IOERR), что помогает определить, является ли виновником физический диск.
  • Ошибки сборки: Если для сборки тома отсутствуют необходимые компоненты, система теперь точно указывает, какой именно компонент отсутствует, отображая его название и модель на основе времени последнего обнаружения.
  • Пределы частоты ошибок: Границы для «программных» и «аппаратных» ошибок разделены, что гарантирует, что множество мелких ошибок не замаскирует критический сбой диска.

Кроме того, команда bcachefs fs top Ситуация улучшилась. Внутренние счетчики теперь отображают скорость передачи данных, а не просто статические числа, что значительно упрощает сопоставление событий (например, data_update_fail) с падением производительности в реальном времени.

Оптимизация B-деревьев и новые варианты крепления.

Внутренние механизмы улучшены благодаря изменениям в управлении B-деревом. Объединение пустых узлов теперь происходит асинхронно, что устраняет узкие места в буфере записи. Кроме того, добавлен опциональный проход восстановления. merge_btree_nodes, при необходимости вручную оптимизировать структуру дерева.

Ещё одной очень полезной дополнительной функцией является возможность загрузки файловой системы с заданной конфигурацией. replicas=2 на одном дискеЭто позволяет пользователям начинать работу с одним диском, зная, что система «должна» иметь резервирование; как только подключается второй диск, Bcachefs автоматически реплицирует данные без необходимости сложного ручного вмешательства.

Наконец, стоит отметить, что новая версия, которая уже доступна для таких дистрибутивов, как Debian, Fedora, Arch Linux и NixOS, требует ядра Linux версии 6.16 или выше и распространяется в двух основных пакетах: модуле ядра (bcachefs-kernel-dkms) и пользовательских инструментах (bcachefs-tools).


Добавить в качестве предпочтительного источника в Google