Новая ФС Bcachefs, сочетающая функциональность btrfs/zfs с производительностью ext4/xfs
Кент Оверстрит (Kent Overstreet) объявил об эволюционировании блочного устройства для кэширования доступа к медленным жестким дискам на быстрых SSD-накопителях Bcache в полноценную файловую систему Bcachefs. Благодаря использованию накопившихся за годы разработки Bcache решений, в Bcachefs удалось добиться сочетания высокой производительности с расширенными возможностями, такими как включение в раздел нескольких устройств, репликация (RAID), кэширование, прозрачное сжатие данных и верификация целостности по контрольным суммам.
В Bcachefs также реализовано большинство базовых возможностей POSIX ФС, в том числе xattrs и ACL. Интересной возможностью Bcachefs является многослойное подключение накопителей, при котором более быстрый накопитель (SSD) может быть подключен к нижнему слою и задействован для кэширования, а медленные диски могут обеспечивать хранение менее востребованных данных. Между слоями может применяться кэширование в режиме отложенной записи (writeback). Файловая система основана на использовании механизма Copy-on-Write (COW), при котором изменения не приводят к перезаписи данных — новое состояние записывается в новое место, после чего меняется указатель актуального состояния.
Из пока недоступных, но запланированных к обязательной реализации, возможностей отмечаются предварительное резервирование места (fallocate), квоты, снапшоты, поддержка драйверов SMR и raw-режима доступа к flash. Из задач также отмечается необходимость проведения оптимизаций — в тестах Bcachefs уже заметно обгоняет btrfs, но пока отстаёт от ext4. Из ограничений отмечается достаточное большие требования к резервированию места под служебные данные (до 20%), необходимость выполнения сборщика мусора (в будущем не исключается реализация иного метода распределения данных), большое время монтирования (при монтировании осуществляется обход всех inode, dirent-ов и extent-ов в btree).
Отмечается, что в один прекрасный момент разработчики осознали, что созданные для Bcache технологии и наработки содержат заметную часть функциональности файловой системы, и если развивать код в нужном направлении, благодаря продуманной архитектуре, можно будет получить отличную ФС. В конечном счёте, участники проекта поставили перед собой цель создания файловой системы, находящейся на уровне btrfs и zfs с позиции функциональности и ext4 и xfs в плане производительности и надёжности.
Код новой файловой системы находится на альфа-стадии разработки (дисковый формат может измениться), но субъективно достаточно стабилен (в своё время, Bcache разрабатывался для Google). В настоящее время код Bcachefs функционально более-менее завершён, что позволяет перейти к стадии полномасштабного тестирования для выявления неочевидных проблем. В простейшем случае для тестирования достаточно собрать ядро и инструментарий из Git, после чего можно отформатировать (bcacheadm format -C /dev/sda1) и примонтировать раздел (mount -t bcache /dev/sda1 /mnt). Для включения контрольных сумм и сжатия при монтировании можно указать «mount -o data_checksum=crc32c, compression=gzip».
© OpenNet