Bcachefs — це файлова система копіювання під час запису для операційних систем на базі Linux.
Кілька днів тому Kent Overstreet оголосив про випуск 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) з падінням продуктивності в режимі реального часу.
Оптимізація в Btrees та нові варіанти монтування
Під капотом покращилася продуктивність при великих навантаженнях завдяки змінам в управлінні B-деревом. Об'єднання порожніх вузлів тепер відбувається асинхронно, що усуває вузькі місця буфера запису. Крім того, додано додатковий прохід відновлення. merge_btree_nodes, щоб за потреби вручну оптимізувати деревоподібну структуру.
Ще однією дуже практичною додатковою функцією є можливість завантаження файлової системи з конфігурацією replicas=2 на одному дискуЦе дозволяє користувачам починати з одного диска, знаючи, що система «повинна» мати резервування; щойно підключається другий диск, Bcachefs автоматично реплікує дані без необхідності складного ручного втручання.
Наостанок варто згадати про це нова версія, тепер доступна Для таких дистрибутивів, як Debian, Fedora, Arch Linux та NixOS, це оновлення вимагає ядра Linux версії 6.16 або вище та розповсюджується у двох основних пакетах: модуль ядра (bcachefs-kernel-dkms) та інструменти користувача (bcachefs-tools).