Напредък на Bcachefs в ядрото на Linux

Кент Оверстрит (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, той предпочита да програмира, а не да отстранява грешки в кода, и сега му е безумно да пише код на езика C, когато съществува по-добра опция. 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster