Открыть сервис

Btrfs

Btrfs (B-tree file system, произносится как «би-три-эф-эс» или «баттерфс») — это копирующаяся при записи (copy-on-write, COW) файловая система для Linux, разработанная компанией Oracle в 2007 году. Btrfs ориентирована на решение задач, связанных с управлением большими объёмами данных, обеспечением целостности и гибкостью конфигурации, и позиционируется как современная альтернатива традиционным файловым системам, таким как ext4 и XFS. Основные особенности Btrfs включают встроенную поддержку снапшотов, сжатие данных, дедупликацию, RAID-массивы на уровне файловой системы, а также самовосстановление повреждённых блоков.

История

Разработка Btrfs была начата в 2007 году Крисом Мейсоном, сотрудником Oracle, с целью создания файловой системы, способной конкурировать с ZFS (компании Sun Microsystems) в области управления данными, но при этом распространяемой под лицензией GPL. Первая стабильная версия (2.6.29) была включена в ядро Linux в марте 2009 года. В последующие годы Btrfs активно развивалась при поддержке таких компаний, как Red Hat, SuSE, Fujitsu и Facebook (Meta). В 2013 году Red Hat объявила о прекращении поддержки Btrfs в своих корпоративных продуктах (RHEL), сославшись на недостаточную стабильность, однако проект продолжил развитие в сообществе и в дистрибутивах, таких как openSUSE и Fedora. Начиная с ядра 5.10 (2020 год) Btrfs считается стабильной для большинства типовых сценариев использования.

Архитектура и принцип работы

Copy-on-Write (COW)

Основополагающий принцип Btrfs — копирование при записи. При изменении данных файловая система не перезаписывает существующие блоки, а создаёт их новые копии, после чего обновляет метаданные. Это обеспечивает атомарность операций и позволяет создавать мгновенные снимки состояния (снапшоты) без дублирования данных.

B-деревья

Метаданные и данные в Btrfs организованы в виде сбалансированных B-деревьев. Каждое дерево (например, дерево корневой файловой системы, дерево экстентов, дерево контрольных сумм) хранит ключи и значения, что обеспечивает эффективный поиск, вставку и удаление записей.

Подтома (Subvolumes)

Btrfs поддерживает подтома — независимые точки монтирования внутри одной файловой системы. Каждый подтом может иметь собственные снапшоты, квоты и политики сжатия. Подтома не являются разделами и могут быть вложенными.

Снапшоты (Snapshots)

Снапшот — это мгновенная копия подтома, создаваемая с помощью механизма COW. Снапшоты могут быть доступны только для чтения или для записи. Они позволяют быстро откатывать изменения, создавать резервные копии и тестировать обновления.

Ключевые возможности

Целостность данных

Btrfs вычисляет контрольные суммы (CRC-32C, xxhash, sha256, blake2b) для всех данных и метаданных. При чтении файла система проверяет контрольную сумму и, в случае обнаружения ошибки, может попытаться восстановить данные из избыточных копий (если настроен RAID или дублирование).

Сжатие

Поддерживается прозрачное сжатие данных на лету с использованием алгоритмов zlib, LZO, ZSTD. Сжатие уменьшает занимаемое дисковое пространство и снижает нагрузку на ввод-вывод.

Дедупликация

Btrfs поддерживает как онлайн-дедупликацию (в реальном времени, с помощью утилиты duperemove), так и офлайн-дедупликацию (при сканировании файловой системы). Дедупликация удаляет дублирующиеся блоки данных, экономя место.

RAID

Btrfs реализует программный RAID на уровне файловой системы, поддерживая уровни 0, 1, 10, 5, 6, а также гибридные конфигурации (single, dup, raid1c3, raid1c4). В отличие от аппаратных RAID-контроллеров, Btrfs может восстанавливать данные на основе контрольных сумм.

Квоты

Система квот (qgroups) позволяет ограничивать использование дискового пространства для отдельных подтомов или групп подтомов.

Интеграция с LVM

Btrfs может работать поверх логических томов LVM, но также может напрямую управлять несколькими физическими устройствами (мультидисковые пулы).

Управление и инструменты

Основной инструмент управления Btrfs — утилита btrfs (и её псевдонимы btrfsck, btrfs-find-root и другие). Основные команды:

Также существуют графические оболочки (например, Snapper для управления снапшотами) и интеграция с системами резервного копирования (Borg, Timeshift).

Применение

Btrfs широко используется в следующих сценариях:

Ограничения и критика

Несмотря на широкие возможности, Btrfs имеет ряд недостатков:

Сравнение с другими файловыми системами

ХарактеристикаBtrfsext4XFSZFS
COWДаНетНетДа
СнапшотыДаНетНетДа
СжатиеДа (zlib, LZO, ZSTD)НетНетДа (LZ4, ZLE)
ДедупликацияДаНетНетДа
RAID на уровне ФСДа (0,1,10,5,6)НетНетДа (0,1,10,5,6)
Контрольные суммыДаНетНетДа
Макс. размер ФС16 ЭБ1 ЭБ8 ЭБ256 ЗБ

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →