Просування Bcachefs до складу ядра Linux

Кент Оверстріт (Kent Overstreet), автор входить до складу ядра Linux системи кешування блокових пристроїв на SSD-накопичувачах BCache, у своєму виступі на конференції LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) узагальнив результати роботи з просування файлової системи в основний склад ядра Linux і розповів про плани подальшого розвитку даної ФС. У травні для рецензування та включення до основного складу ядра Linux було запропоновано оновлений набір патчів з реалізацією ФС Bcachefs. ФС Bcachefs розвивається вже близько 10 років. Про готовність рецензування реалізації Bcachefs перед включенням до складу ядра було оголошено ще наприкінці 2020 року і в поточному варіанті патчів враховано виявлені при минулому рецензуванні зауваження та недоробки.

Метою розробки Bcachefs є досягнення рівня XFS у продуктивності, надійності та масштабованості, надаючи при цьому додаткові можливості, властиві Btrfs і ZFS, такі як включення в розділ декількох пристроїв, багатошарові розкладки накопичувачів, реплікація (RAID 1/10), кешування, прозоре стиснення (Режими LZ4, gzip і ZSTD), зрізи стану (снапшоти), верифікація цілісності за контрольними сумами, можливість зберігання кодів корекції помилок Ріда-Соломона (RAID 5/6), зберігання інформації в зашифрованому вигляді (використовуються ChaCha20 і Poly1305). За продуктивністю Bcachefs випереджає Btrfs та інші ФС на базі механізму Copy-on-Write і демонструє швидкість роботи, близьку до Ext4 та XFS.

З останніх досягнень у розробці Bcachefs наголошується на стабілізації реалізації снапшотів, доступних на запис. У порівнянні з Btrfs снапшоти в Bcachefs тепер значно краще масштабуються і позбавлені проблем, властивих Btrfs. Насправді робота снапшотів випробувана з організацією резервного копіювання MySQL. У Bcachefs також проведено велику роботу з покращення масштабованості — файлова система добре зарекомендувала себе при тестуванні в сховищах, розміром 100 ТБ, і найближчим часом очікується впровадження Bcachefs у сховище розміром 1 ПБ. Додано новий режим nocow для відключення механізму copy-on-write (nocow). Протягом літа планують довести до стабільного стану реалізацію кодів корекції помилок та RAIDZ, а також вирішити проблеми з високим споживанням пам'яті під час відновлення та перевірки ФС утилітою fsck.

З планів на майбутнє згадується бажання використовувати при розробці Bcachefs мову Rust. На думку автора Bcachefs, він любить програмувати, а не налагоджувати код, і тепер шалено писати код мовою Сі, коли з'явився найкращий варіант. Rust вже задіяний в Bcachefs у реалізації деяких утиліт, що запускаються у просторі користувача. Більше того, виношується ідея поступово повністю переписати Bcachefs на Rust, оскільки використання цієї мови суттєво заощаджує час на налагодження.

Що стосується просування Bcachefs в основний склад ядра Linux, то процес прийняття може затягнутися через достатній великий розмір змін (2500 патчів та близько 90 тисяч рядків коду), який важко рецензувати. Для прискорення рецензування деякі розробники запропонували розбити серію патчів на дрібніші та логічно розділені частини. У процесі обговорення деякі учасники також звернули увагу на розвиток проекту одним розробником і небезпеку того, що код може залишитися без супроводу, якщо з його розробником щось трапиться (до проекту виявляють інтерес два співробітники Red Hat, але їхня робота поки що обмежується виправленням помилок).

Bcachefs розвивається з використанням технологій вже випробуваних при розробці блокового пристрою Bcache, призначеного для кешування доступу до повільних жорстких дисків на швидких SSD-накопичувачах (входить до ядра, починаючи з випуску 3.10). В Bcachefs використовується механізм Copy-on-Write (COW), при якому зміни не призводять до перезапису даних - новий стан записується в місце, після чого змінюється покажчик актуального стану.

Особливістю Bcachefs є підтримка багатошарового підключення накопичувачів, при якому сховище компонується з декількох шарів - до нижнього шару підключаються найбільш швидкі накопичувачі (SSD), які використовуються для кешування часто використовуваних даних, а верхній шар утворюють більш ємні та дешеві диски, що забезпечують зберігання . Між шарами може застосовуватися кешування як відкладеного запису (writeback). Накопичувачі можна динамічно додавати та від'єднувати від розділу без зупинки використання файлової системи (дані мігрують автоматично).

Джерело: opennet.ru

Додати коментар або відгук