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

Ключови точки:
  • Подробни съобщения за грешки: обяснете причината, вида (твърда/мека) и решението.
  • bcachefs fs top вече показва скорости на трансфер в реално време.
  • Асинхронно сливане на Btree възли за подобряване на производителността при натоварване
  • Нови опции mount_trusts_udev и writeback_timeout.
  • Масово намаляване на goto в кода (от 2500 на 600) в подготовка за появата на Rust.
bcachefs

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).