Bcachefs befoarderje nei de Linux Kernel

Кент Оверстрит (Kent Overstreet), автор входящей в состав ядра Linux системы кэширования блочных устройств на SSD-накопителях BCache, в своём выступлении на конференции LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) обобщил результаты работы по продвижению файловой системы Bcachefs в основной состав ядра 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), при котором изменения не приводят к перезаписи данных — новое состояние записывается в новое место, после чего меняется указатель актуального состояния.

In skaaimerk fan Bcachefs is stipe foar multi-laach ferbining fan skiven, wêryn opslach is gearstald út ferskate lagen - de rapste skiven (SSD's) binne ferbûn mei de ûnderste laach, dy't wurde brûkt om faak brûkte gegevens te cache, en de boppeste laach foarmen rommere en goedkeapere skiven dy't minder frege gegevens opslaan. Writeback-caching kin brûkt wurde tusken lagen. Drives kinne dynamysk tafoege wurde oan en losmakke fan in partysje sûnder it gebrûk fan it bestânsysteem te ûnderbrekken (gegevens migreare automatysk).

Boarne: opennet.ru

Add a comment