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