Interested Article - Btrfs

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

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

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

Возможности

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

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

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

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

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

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

Недостатки

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

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

Примечания

  1. (неопр.) gmane.org (24 апреля 2014). Дата обращения: 18 июня 2014. Архивировано из 16 февраля 2018 года.
  2. (неопр.) . Дата обращения: 13 июля 2010. 10 февраля 2010 года.
  3. (неопр.) . Дата обращения: 1 ноября 2014. 1 ноября 2014 года.
  4. (англ.) . Архивировано из 28 июня 2012 года.
  5. Sean Michael Kerner. (англ.) . 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. (англ.) . 20 декабря 2008 года.
  7. от 12 июня 2010 на Wayback Machine LKML: Christian Kujau: [PATCH] Remove EXPERIMENTAL flag from Btrfs]
  8. (неопр.) . Phoronix.com (9 июня 2010). Дата обращения: 9 июля 2010. Архивировано из 28 июня 2012 года.
  9. . (неопр.) (1 августа 2008). Дата обращения: 22 января 2009. Архивировано из 28 июня 2012 года.
  10. Dr Chris Brown. B-tree filesystem // Linux format. — 2011. — № LXF140 . — ISSN .
  11. (неопр.) . Дата обращения: 18 августа 2017. 18 августа 2017 года.
  12. (неопр.) . Дата обращения: 18 августа 2017. 12 июня 2017 года.
  13. (неопр.) . Дата обращения: 29 августа 2020. 10 сентября 2020 года.
  14. (неопр.) . Дата обращения: 31 мая 2009. 20 февраля 2009 года.
  15. (неопр.) . Дата обращения: 31 мая 2009. 19 февраля 2009 года.
  16. от 14 мая 2019 на Wayback Machine — opennet 04.03.2019 «Добавлена возможность размещения раздела подкачки в файлах внутри ФС Btrfs…»
  17. (неопр.) . Дата обращения: 13 февраля 2017. 14 июня 2017 года.
  18. Josef Bacik. (неопр.) (1 февраля 2012). Дата обращения: 13 июля 2010. Архивировано из 28 июня 2012 года.

Ссылки

На английском языке

  • , основана на btrfs.

На русском языке

  • — статья на
  • — большая статья о btrfs на
  • (неопр.) (16 января 2009). Дата обращения: 13 июля 2010. Архивировано из 19 мая 2012 года.
  • (неопр.) (28 сентября 2009). Дата обращения: 13 июля 2010. Архивировано из 26 августа 2011 года.

Same as Btrfs