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») — файловая система для 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].
Возможности
![]() | Информация в этом разделе устарела. |

В 2008 году один из разработчиков Теодор Цо[англ.] (англ. Theodore Ts'o) сообщал, что Btrfs имеет ряд решений, впервые появившихся в ReiserFS[9], но при этом не поддерживает некоторые базовые функции.[источник?]
Список возможностей системы по состоянию на 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.[источник?]
В ранних версиях поддерживалась миграция с файловых систем ext3 и ext4 и обратно (до момента обновления), но начиная с версии ядра 4.0 использование функции не рекомендовано в связи с потенциальной опасностью потери данных[15].
Создание файла подкачки в Btrfs возможно с марта 2019 года (Linux kernel 5.0), файл при этом создается с флагом nocow и должен располагаться на одном накопителе[16].
Недостатки
Нельзя использовать снимки (англ. snapshot) LVM и копии тома, сделанные с помощью dd
, так как у них будут одинаковые UUID, что может привести к записи не в ту копию и повреждению всех данных[17]; вместо использования LVM и dd
в Btrfs необходимо использовать специальные утилиты Btrfs по управлению подтомами и механизм работы со снимками.[источник?]
В связи с использованием по умолчанию техники копирования при записи, при большом количестве перезаписей случайных фрагментов файлов может возникать значительная фрагментация[18]; решением может стать отключение COW (возможно только для новых и пустых каталогов/файлов).[источник?]
Примечания
- ↑ Which companies contribute to Btrfs? gmane.org (24 апреля 2014). Дата обращения: 18 июня 2014. Архивировано из оригинала 16 февраля 2018 года.
- ↑ список изменений . Дата обращения: 13 июля 2010. Архивировано 10 февраля 2010 года.
- ↑ Linux/VLFN - Исследование Etersoft на предмет увеличения длины имени файла . Дата обращения: 1 ноября 2014. Архивировано 1 ноября 2014 года.
- ↑ Btrfs Wiki: Main Page (англ.). Архивировано из оригинала 28 июня 2012 года.
- ↑ 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 года.
- ↑ Btrfs Wiki: Development timeline (англ.). Архивировано из оригинала 20 декабря 2008 года.
- ↑ [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]
- ↑ Where The Btrfs Performance Is At Today . Phoronix.com (9 июня 2010). Дата обращения: 9 июля 2010. Архивировано из оригинала 28 июня 2012 года.
- ↑ Theodore Ts’o. Re: reiser4 for 2.6.27-rc1 (1 августа 2008). Дата обращения: 22 января 2009. Архивировано из оригинала 28 июня 2012 года.
- ↑ Brown, C. B-tree filesystem // Linux format. — 2011. — № LXF140. — ISSN 1470-4234.
- ↑ LZ4 Compression Support Is Unlikely For Btrfs — Phoronix . Дата обращения: 18 августа 2017. Архивировано 18 августа 2017 года.
- ↑ Compression — btrfs Wiki . Дата обращения: 18 августа 2017. Архивировано 12 июня 2017 года.
- ↑ Btrfs hilights in 5.5: new hashes . Дата обращения: 29 августа 2020. Архивировано 10 сентября 2020 года.
- ↑ Coherent Remote File System . Дата обращения: 31 мая 2009. Архивировано 20 февраля 2009 года.
- ↑ Conversion from Ext3 . Дата обращения: 31 мая 2009. Архивировано 19 февраля 2009 года.
- ↑ Релиз ядра Linux 5.0 Архивная копия от 14 мая 2019 на Wayback Machine — opennet 04.03.2019 «Добавлена возможность размещения раздела подкачки в файлах внутри ФС Btrfs…»
- ↑ Gotchas — btrfs Wiki . Дата обращения: 13 февраля 2017. Архивировано 14 июня 2017 года.
- ↑ 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.
Ссылки
- btrfs.wiki.kernel.org (англ.) — официальный сайт Btrfs
- Project: CRFS : [англ.] : [арх. 9 августа 2016] // Oracle. — 2008. — June.
- Kerner, S. M. A Better File System for Linux? : [англ.] : [арх. 2 ноября 2008] // Internet News. — 2008. — 30 October.
- Btrfs // Xgu.ru.
- help.ubuntu.ru/wiki/btrfs Btrfs // Русская документация Ubuntu : wiki.
- Алексей Федорчук. Btrfs: прикинем быстродействие (16 января 2009). Дата обращения: 13 июля 2010. Архивировано из оригинала 19 мая 2012 года.
- Алексей Федорчук. Файловая система btrfs: Linux-ответ ZFS? (28 сентября 2009). Дата обращения: 13 июля 2010. Архивировано из оригинала 26 августа 2011 года.
- BTRFS для самых маленьких . Блог компании Veeam Software. Хабр (24 июля 2019).
- Богомолов, С. Е. Bog BOS: Файловая система btrfs // Bog BOS. — 2019. — 29 апреля.