Btrfs

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Btrfs
Разработчик Oracle, Fujitsu, Red Hat[1]
Файловая система Btrfs
Дата представления 4.18:
август 2018 года[2] (Linux)
Структура
Содержимое папок B-tree
Размещение файлов экстент
Ограничения
Максимальный размер файла 16 ЭиБ
Максимальная длина имени файла 255 байт[3]
Максимальный размер тома 16 ЭиБ
Допустимые символы в названиях Все байты, кроме NUL и '/'
Возможности
Атрибуты POSIX
Права доступа POSIX, ACL
Фоновая компрессия Да (LZO, zlib начиная с ядра 4.14: — zstd)
Фоновое шифрование нет
Поддерживается ОС Linux
Логотип Викисклада Медиафайлы на Викискладе

Btrfs (B-tree FS, «Better FS» или «Butter FS», где FS - file system, англ. файловая система) — файловая система для Linux, основанная на структурах B-деревьев и работающая по принципу «копирование при записи» (copy-on-write). Опубликована корпорацией Oracle в 2007 году под лицензией GNU General Public License[4].

Основной автор BTRFSКрис Мэйсон (англ. Chris Mason). Одной из первоначальных целей разработки этой файловой системы было создать замену ZFS, использование которой в Linux было затруднено лицензионными ограничениями, и создать файловую систему без недостатков, присущих более ранним файловым системам для Linux. Также Мэйсон указывал одной из целей разработки создание простого интерфейса управления файловой системой[5].

Изначально планировалось выпустить Btrfs v1.0 и зафиксировать формат хранения в конце 2008 года[6], однако релиз был выпущен только 12 июня 2010 года[7].

Btrfs включена в основную ветвь ядра Linux с версии 2.6.29-rc в статусе экспериментальной ФС. Проведённая Phoronix в 2010 году оценка производительности показала, что Btrfs с включённым режимом сжатия иногда опережает по производительности Ext4[8].

Возможности

[править | править код]
Снимок экрана с информацией об использовании Btrfs

В 2008 году один из разработчиков Теодор Цо[англ.] (англ. Theodore Ts'o) сообщал, что Btrfs имеет ряд решений, впервые появившихся в ReiserFS[9], но при этом не поддерживает некоторые базовые функции.[источник не указан 68 дней]

Список возможностей системы по состоянию на 2011 год[10]:

  • Проверка целостности без размонтирования;
  • Доступные для записи снимки (writeable snapshots);
  • Динамическое выделение индексных дескрипторов inode (нет ограничения на максимальное количество файлов в файловой системе);
  • Добавление и удаление устройств хранения при смонтированной файловой системе (накопители и разделы легко подключаются в Btrfs и заменяются или удаляются при необходимости);
  • Поддержка сложных многодисковых конфигураций RAID — уровней 0, 1, 5, 6 и 10 (реализовано, но 5 и 6 на то время не считались стабильными), а также реализация различных политик избыточности на уровне объектов файловой системы — то есть возможно назначить, к примеру, в планах было реализовать зеркалирование для какого-либо каталога или файла.
  • Сжатие (LZO, zlib, zstd — реализовано, предлагались патчи для LZ4 и Snappy)[11][12];
  • Подтома (subvolumes);
  • Эффективное клонирование файловой системы и создание инкрементальных архивов;
  • Дефрагментация смонтированной файловой системы.
  • Журналирование с копированием при записи.
  • Лимиты (отдельно для каждого подтома или группы подтомов, по фактически занимаемому месту или по «официальному»)
  • Контроль целостности блоков данных и метаданных с помощью контрольных сумм.
  • Зеркалирование метаданных даже в конфигурации с одним накопителем (отключается на SSD).
  • Полностью распределённое блокирование.
  • Поддержка ACL.
  • Защита от потери данных.[прояснить]
  • Выбор хеш-алгоритма для контроля целостности данных и метаданных (CRC-32). Начиная с версии 5.5 реализованы[13]: xxHash[англ.], SHA256, BLAKE2B.
  • Поддержка NFS (пока неполная).
  • Флаги совместимости, необходимые для изменения дискового формата в новых версиях Btrfs с сохранением совместимости со старыми.
  • Резервные копии суперблока, по крайней мере по одной на устройство.
  • Гибридные пулы (в планах) — btrfs старается перемещать наиболее используемые данные на самое быстрое устройство, вытесняя с него «залежавшиеся» блоки, эта политика хорошо согласуется с моделью использования SSD-накопителей совместно с дисковыми.
  • Балансировка данных между устройствами в Btrfs возможна сразу после добавления диска к пулу, отдельной командой, а не только постепенно, в процессе использования (как это реализовано в ZFS).
  • Диски для горячей замены, поддержка которых появилась и в ZFS (в планах).
  • Офлайн-дедупликация (в примонтированном виде, но после окончания записи — ядро 3.12 и новее), в перспективе — дедупликация будет осуществляться во время записи файла.

Несмотря на то, что Btrfs изначально не способна вести себя как распределённая (сетевая) файловая система, в 2009 году компания Oracle принялась за реализацию сетевого протокола файловой системы CRFS[14], который спроектирован и оптимизирован как раз под Btrfs.[источник не указан 68 дней]

В ранних версиях поддерживалась миграция с файловых систем ext3 и ext4 и обратно (до момента обновления), но начиная с версии ядра 4.0 использование функции не рекомендовано в связи с потенциальной опасностью потери данных[15].

Создание файла подкачки в Btrfs возможно с марта 2019 года (Linux kernel 5.0), файл при этом создается с флагом nocow и должен располагаться на одном накопителе[16].

Недостатки

[править | править код]

Нельзя использовать снимки (англ. snapshot) LVM и копии тома, сделанные с помощью dd, так как у них будут одинаковые UUID, что может привести к записи не в ту копию и повреждению всех данных[17]; вместо использования LVM и dd в Btrfs необходимо использовать специальные утилиты Btrfs по управлению подтомами и механизм работы со снимками.[источник не указан 68 дней]

В связи с использованием по умолчанию техники копирования при записи, при большом количестве перезаписей случайных фрагментов файлов может возникать значительная фрагментация[18]; решением может стать отключение COW (возможно только для новых и пустых каталогов/файлов).[источник не указан 68 дней]

Примечания

[править | править код]
  1. Which companies contribute to Btrfs? gmane.org (24 апреля 2014). Дата обращения: 18 июня 2014. Архивировано из оригинала 16 февраля 2018 года.
  2. список изменений. Дата обращения: 13 июля 2010. Архивировано 10 февраля 2010 года.
  3. Linux/VLFN - Исследование Etersoft на предмет увеличения длины имени файла. Дата обращения: 1 ноября 2014. Архивировано 1 ноября 2014 года.
  4. Btrfs Wiki: Main Page (англ.). Архивировано из оригинала 28 июня 2012 года.
  5. Sean Michael Kerner. A Better File System For Linux (англ.). InternetNews.com (30 октября 2008). — «The main goal is to let it [Linux] scale for the storage that will be available. Scaling is not just about addressing the storage but also means being able to administer and to manage it with a clean interface that lets people see what's being used and makes it more reliable.» Дата обращения: 30 октября 2008. Архивировано из оригинала 28 июня 2012 года.
  6. Btrfs Wiki: Development timeline (англ.). Архивировано из оригинала 20 декабря 2008 года.
  7. [1]Архивная копия от 12 июня 2010 на Wayback Machine LKML: Christian Kujau: [PATCH] Remove EXPERIMENTAL flag from Btrfs
  8. Where The Btrfs Performance Is At Today. Phoronix.com (9 июня 2010). Дата обращения: 9 июля 2010. Архивировано из оригинала 28 июня 2012 года.
  9. Theodore Ts’o. Re: reiser4 for 2.6.27-rc1 (1 августа 2008). Дата обращения: 22 января 2009. Архивировано из оригинала 28 июня 2012 года.
  10. Brown, C. B-tree filesystem // Linux format. — 2011. — № LXF140. — ISSN 1470-4234.
  11. LZ4 Compression Support Is Unlikely For Btrfs — Phoronix. Дата обращения: 18 августа 2017. Архивировано 18 августа 2017 года.
  12. Compression — btrfs Wiki. Дата обращения: 18 августа 2017. Архивировано 12 июня 2017 года.
  13. Btrfs hilights in 5.5: new hashes. Дата обращения: 29 августа 2020. Архивировано 10 сентября 2020 года.
  14. Coherent Remote File System. Дата обращения: 31 мая 2009. Архивировано 20 февраля 2009 года.
  15. Conversion from Ext3. Дата обращения: 31 мая 2009. Архивировано 19 февраля 2009 года.
  16. Релиз ядра Linux 5.0 Архивная копия от 14 мая 2019 на Wayback Machine — opennet 04.03.2019 «Добавлена возможность размещения раздела подкачки в файлах внутри ФС Btrfs…»
  17. Gotchas — btrfs Wiki. Дата обращения: 13 февраля 2017. Архивировано 14 июня 2017 года.
  18. Josef Bacik. Btrfs: The Swiss Army Knife of Storage (1 февраля 2012). Дата обращения: 13 июля 2010. Архивировано из оригинала 28 июня 2012 года.

Литература

[править | править код]
  • Mason, C. [ANNOUNCE Btrfs: a copy on write, snapshotting FS] : [англ.] // LKLM.ORG. — 2007. — 12 June.