Это не официальный сайт wikipedia.org 01.01.2023

Btrfs — Википедия

Btrfs

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

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 v1.0 и зафиксировать формат хранения в конце 2008 года[6], однако формат был зафиксирован только 12 июня 2010 года[7].

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

ВозможностиПравить

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

Считается, что Btrfs имеет ряд решений, впервые появившихся в ReiserFS[9], при этом не поддерживает некоторые базовые функции. Список возможностей системы по состоянию на 2011 год[10]:

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

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

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

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

НедостаткиПравить

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

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

ПримечанияПравить

  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. [https://web.archive.org/web/20100612201526/http://lkml.org/lkml/2010/6/12/66 Архивная копия от 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. Dr Chris Brown. 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 года.

СсылкиПравить

На английском языкеПравить

На русском языкеПравить