Кент Оверстрит (Kent Overstreet) публикува версия 1.38.0 на файловата система Bcachefs. Версията включва два пакета: bcachefs-kernel-dkms с модул за ядро, компилиран с помощта на системата DKMS (Dynamic Kernel Module Support), и bcachefs-tools с потребителска утилита bcachefs, реализираща команди за създаване (mkfs), монтиране, възстановяване и проверка на файловата система. Пакетите са събрани за Debian, Ubuntu, а се очакват и за Arch Linux, Fedora, openSUSE и NixOS. DKMS модулът поддържа работа с Linux ядра, започвайки от 6.16.
Проектът Bcachefs развива файлова система, целяща да съчетае разширената функционалност, характерна за Btrfs и ZFS, с нивото на производителност, надеждност и мащабируемост, присъща за XFS. Bcachefs поддържа възможности като включване на няколко устройства в един дял, многослойни разположения на носители (долният слой с често използвани данни на базата на бързи SSD, а горният слой с по-малко търсени данни от твърди дискове), репликация (RAID 1/10), кеширане, прозрачно компресиране на данни (режими LZ4, gzip и ZSTD), моментни снимки (снапшоти), проверка на целостта с контролни суми, кодове за корекция на грешки, съхранение на информация в криптиран вид (използват се ChaCha20 и Poly1305).
В новата версия:
- Структурата Btree need_discard, използвана за проследяване на освободените набори блокове, е преминала на индексиране по последователен номер от журнал вместо двойка устройство/набор блокове (device/bucket). Промяната е позволила ускоряване на работата със структурата need_discard и избягване на взаимна блокировка при възстановяване от журнала по време на монтиране на файловата система с недостатъчен брой свободни блокове за метаданни.
- Операциите по запис в журнала са преместени в отделна fifo-опашка, а максималният брой едновремени операции по запис в журнала е увеличен от 16 на 256, което е позволило ускоряване на работата на големи хранилища с интензивно натоварване на запис.
- Монтирането на файловата система с голям брой снимки е значително ускорено.
Допълнително, може да се отбележи издаването на проекта NASty 0.0.3, който развива дистрибуция за създаване на мрежови хранилища (NAS) на базата на стандартно оборудване. Дистрибуцията е изградена на пакетна база NixOS, използва файловата система Bcachefs и поддържа предоставяне на достъп до файлове чрез NFS и SMB, а също така експортира блокови устройства чрез iSCSI и NVMe-oF. Управлението се осъществява чрез уеб-интерфейс. Размерът на инсталационния iso-образ е 1.9 GB. Разработките на проекта се разпространяват под лиценз GPLv3. Уеб-интерфейсът е написан на TypeScript с използване на фреймуърка SvelteKit. Двигателят за управление на хранилището и системата е написан на Rust.
Актуализациите се изтеглят и инсталират автоматично. Системата се актуализира атомарно с възможност за възстановяване на предишно състояние в случай на проблеми с новата версия. В уеб интерфейса са налични опции за управление на файлови системи, моментни снимки, дялове, дискове, виртуални машини и споделен достъп. Има вграден файлов мениджър и емулятор на терминал, които работят в браузъра. Могат да се създават правила за извършване на действия и известяване на администратора в случай на прекомерно потребление на дисково пространство, неизправности в работата на носителите и прегряване.
Поддържа се стартиране на изолирани среди и приложения, като се използва виртуализация на базата на QEMU/KVM и контейнерна изолация с помощта на k3s runtime (в WebUI могат директно да се инсталират Helm chart-ове за стартиране на приложения в контейнери и настройка на достъп чрез nginx ingress). Поддържа се интеграция с платформата Kubernetes, за която е предоставен CSI драйвер за динамично предоставяне на място в хранилището. Дистрибуцията по подразбиране изпраща телеметрия с анонимизирани данни за броя на носителите и размера на хранилището (телеметрията може да се деактивира в секция "Settings → Telemetry").
Като причини за избора на Bcachefs вместо ZFS се посочват активното развитие, предоставянето под лиценз GPL, простата работна модел с файловата система, дяловете и моментните снимки (без сложни концепции, като dataset-и, zvol и вложени pool-ове) и наличието на напреднали възможности, като автоматично преместване на рядко използвани данни на бавни носители, кодове за корекция на грешки и възстановяване на повреди без спиране на работа с файловата система.
Сред промените в версия NASty 0.0.3 се отличават:
- преминаване на използване на механизма nix flake за опаковане и управление на зависимости;
- подкрепа VPN Tailscale за пренос на NVMe-oF през VPN;
- интеграция на k3s runtime; добавяне на NUT (Network UPS Tools) за мониторинг на устройства с непрекъсваемо захранване;
- уеб панел за прецизно настройване на NFS, SMB и iSCSI (включително опции за избор на планировчик на вход/изход, логиране и резервиране на метаданни);
- допълнителни настройки за Bcachefs (управление на кодове за корекция на грешки, избор на алгоритъм за контролни суми, онлайн ребалансировки и др.);
- поддръжка на кеш Cachix за ускоряване на доставката на актуализации;
- възможност за генериране TLS-сертификати чрез Let’s Encrypt;
- включването в пакет от утилити iotop-c, btop, fwupd, rsync и croc.

Източник: opennet.ru
