Выпуск Bcachefs 1.38.0. Дистрибутив NASty для развёртывания NAS на базе Bcachefs

Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.0. Выпуск охватывает два пакета: bcachefs-kernel-dkms с модулем ядра, собираемым при помощи системы DKMS (Dynamic Kernel Module Support), и bcachefs-tools с запускаемой в пространстве пользователя утилитой bcachefs, реализующей команды для создания (mkfs), монтирования, восстановления и проверки ФС. Пакеты собраны для Arch Linux и ожидаются для Debian, Ubuntu, 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. Управление осуществляется через web-интерфейс. Размер установочного iso-образа 1.9 ГБ. Наработки проекта [[https://github.com/nasty-project/nasty/распространяются]] под лицензией GPLv3. Web-интерфейс на писан на TypeScript с задействованием фреймворка SvelteKit. Движок для управления хранилищем и системой написан на языке Rust.

Обновления загружаются и устанавливаются автоматически. Система обновляется атомарно с возможностью отката на прошлое состояние при выявлении проблем в новой версии. В web-интерфейсе доступны возможности для управления файловыми системами, снапшотами, подразделами, дисками, виртуальными машинами и совместным доступом. Имеются встроенные в web-интерфейс файловый менеджер и эмулятор терминала, работающие в браузере. Возможно создание правил для выполнения действий и оповещении администратора в случае излишнего потребления дискового пространства, сбоях в работе накопителей и перегреве.

Возможен запуск изолированных окружений и приложений, используя виртуализацию на базе QEMU/KVM и контейнерную изоляцию при помощи k3s runtime (Helm chart-ы для запуска приложений в контейнерах с настройкой проброса через nginx ingress можно устанавливать напрямую из WebUI). Поддерживается интеграция с платформой 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) для мониторинга устройств бесперебойного питания; web-панель для тонкой настройки NFS, SMB и iSCSI (включая опции для выбора планировщика ввода/вывода, журналирования и резервирования метаданных); дополнительные настройки для Bcachefs (управление кодами коррекции ошибок, выбор алгоритма контрольных сумм, online-ребалансировки и т.п.); поддержка кэша Cachix для ускорения доставки обновлений; возможность генерации TLS-сертификатов через Let’s Encrypt; включение в состав утилит iotop-c, btop, fwupd, rsync и croc.

CFD0C5CECEC5D4_1776666964.jpg



Источник: http://www.opennet.ru/opennews/art.shtml? num=65244

© OpenNet