|
Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.0. Выпуск охватывает два пакета: 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. Управление осуществляется через web-интерфейс. Размер установочного iso-образа 1.9 ГБ. Наработки проекта распространяются под лицензией GPLv3. Web-интерфейс написан на TypeScript с задействованием фреймворка SvelteKit. Движок для управления хранилищем и системой написан на языке Rust.
Обновления загружаются и устанавливаются автоматически. Система обновляется атомарно с возможностью отката на прошлое состояние при выявлении проблем в новой версии. В web-интерфейсе доступны возможности для управления файловыми системами, снапшотами, подразделами, дисками, виртуальными машинами и совместным доступом. Имеются встроенные в web-интерфейс файловый менеджер и эмулятор терминала, работающие в браузере. Возможно создание правил для выполнения действий и оповещении администратора в случае излишнего потребления дискового пространства, сбоях в работе накопителей и перегреве.
Поддерживается запуск изолированных окружений и приложений, используя виртуализацию на базе 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) для мониторинга устройств бесперебойного питания;
- web-панель для тонкой настройки NFS, SMB и iSCSI (включая опции для выбора планировщика ввода/вывода, журналирования и резервирования метаданных);
- дополнительные настройки для Bcachefs (управление кодами коррекции ошибок, выбор алгоритма контрольных сумм, online-ребалансировки и т.п.);
- поддержка кэша Cachix для ускорения доставки обновлений;
- возможность генерации TLS-сертификатов через Let's Encrypt;
- включение в состав утилит iotop-c, btop, fwupd, rsync и croc.
|