Btrfs linux что это

Содержание
  1. Btrfs
  2. Материал из Xgu.ru
  3. Содержание
  4. [править] История
  5. [править] Работа с файловой системой btrfs
  6. [править] Подготовка файловой системы
  7. [править] Работа с подтомами и снэпшотами
  8. [править] Работа с квотами и определение размеров снэпшотов
  9. [править] Примеры команд по работе с btrfs (неотсортировано)
  10. [править] Создание файловой системы на нескольких устройствах
  11. [править] Превращение файловой системы ext3 в btrfs
  12. [править] Использование btrfs поверх SSD-накопителей
  13. [править] Планы по развитию
  14. [править] Возможности
  15. [править] Критика
  16. [править] История
  17. [править] v0.19, июнь 2009
  18. [править] v0.18, 17 января 2009
  19. [править] v0.17, 12 января 2009
  20. [править] v0.16, 6 августа 2008
  21. [править] 29 мая 2008, v0.15
  22. [править] 30 апреля 2008, v0.14
  23. [править] Дополнительная информация
  24. [править] См. также
  25. Файловая система Btrfs
  26. Что такое Btrfs?
  27. Готова ли Btrfs к использованию?
  28. Использования Btrfs
  29. Создание файловой системы btrfs
  30. Монтирование btrfs
  31. Сжатие в btrfs
  32. Восстановление Btrfs
  33. Изменение размера
  34. Создание подтомов
  35. Монтирование подтомов
  36. Удаление подтомов
  37. Создание мгновенных снимков
  38. Дефрагментация btrfs
  39. Выводы

Btrfs

Материал из Xgu.ru

btrfs (иногда произносится butter fs) — свободная файловая система, разрабатываемая при поддержке компании Oracle. Распространяется по лицензии GPL. Несмотря на то, что её разработка ещё далека от завершения, 9 января 2009 года файловая система была интегрирована в ядро Linux.

Находится в процессе активной разработки (17 июня 2009 года была выпущена версия 0.19, которая отличается повышенной производительностью).

Многие воспринимают систему как ответ на файловую систему ZFS, которая не может быть включена в состав ядра Linux из-за лицензионной несовместимости с ним (ZFS распространяется по лицензии CDDL, которая несовместима с лицензией GPL, по которой распространяется ядро Linux). Ряд возможностей файловой системы btrfs ранее отсутствовали в файловых системах Linux, таких как, например, ext3 или XFS, но в то же время, они есть в ZFS: Например, файловая система btrfs, так же как и ZFS, интегрирует в свой состав программный RAID, она позволяет делать снимки данных (snapshots) и проверку целостности без размонтирования. В то же время, основатель btrfs и ключевой её разработчик, Крис Масон, говорит, что файловая система возникла не как ответ на ZFS, а сама по себе — в связи с необходимостью решения проблем, которые неизбежно встанут перед Linux-сообществом в ближайшие 10 лет [1].

Возможности, которые поддерживаются в настоящий момент (или будут поддерживаться в ближайшем будущем):

  • Проверка целостности без размонтирования;
  • Записываемые снимки (writeable snapshots);
  • Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes);
  • Контрольные суммы данных и метаданных;
  • Интеграция с device-mapper;
  • Поддержка RAID-массивов (одна файловая система на нескольких томах);
  • Сжатие;
  • Подтома (subvolumes);
  • Эффективное клонирование файловой системы и создание инкрементальных архивов;
  • Дефрагментация смонтированной файловой системы.

Содержание

[править] История

В 2006 году, после саммита разработчиков файловых систем, состоявшегося в июне в Сан-Хосе [2], Крис Мэсон (Chris Mason) начал работу над созданием новой файловой системы, btrfs.

В начале 2007 года он сообщает в списке рассылки разработчиков ядра Linux, что первые результаты работы уже готовы (на тот момент это «10 547 строк слабо комментированного кода»), и что желающие приглашаются к тестированию [3].

В ноябре 2007 года (12-23 ноября 2007, или всё же в феврале [4]?) происходит двухдневная встреча разработчиков файловых систем, посвящённая вопросу создания файловой системы нового поколения для Linux (next generation filesystem, NGFS). На встрече присутствуют инженеры компаний Oracle, IBM, Intel, HP и Red Hat, принимающие участие в разработке файловых систем ext2, ext4, OCFS2, lustre, btrfs, AdvFS, Reiser4 и XFS.

В результате было решено [5], что:

  1. Linux файловая система нового поколения необходима;
  2. Файловая система Криса Масона, называемая btrfs, наиболее хорошо подходит на роль такой файловой системы;
  3. Разработка файловой системы нового поколения и переход на неё будут осуществляться продолжительное время, и на этом этапе в качестве основной файловой системы стоит использовать ext4.

В начале 2009 года файловая система btrfs включается в ядро Linux. Разработка файловой системы далека от завершения. Промышленная эксплуатация файловой системы выполняется с 2010.

[править] Работа с файловой системой btrfs

[править] Подготовка файловой системы

Для эксперимента создадим файловую систему в файле. Файл будет привязан к loop-устройству /dev/loop0.

[править] Работа с подтомами и снэпшотами

[править] Работа с квотами и определение размеров снэпшотов

Содаём новый файл на одном из снэпшотов:

Пока не видно, что что-то поменялось:

[править] Примеры команд по работе с btrfs (неотсортировано)

Создание файловой системы:

Управление томами, подтомами, снимками; проверка целостности файловой системы:

Сканирование в поисках файловых систем btrfs:

Создание снимков и подтомов:

Проверка extent-деревьев файловой системы:

Вывести метаданные в текстовой форме:

[править] Создание файловой системы на нескольких устройствах

Сейчас поддерживается RAID-0, RAID-1 и RAID-10. Планируется поддержка RAID-5 и RAID-6 в будущем.

При перестроении RAID-массива и синхронизации блоков на разных дисках, можно копировать только блоки, занятые файловой системой, а не все.

Кроме того, уровень RAID в этом случае не привязан к количеству устройств в нём. Можно добавлять и удалять устройства в RAID-массив произвольно.

Читайте также:  Установить кряк для windows

Причём можно делать один уровень RAID для данных, а другой — для метаданных. Например:

Метаданные хранятся на массиве RAID1, а данные — на массиве RAID10.

Создание файловой системы на нескольких устройствах:

(копии на всех устройствах)

Можно монтировать любое из них:

Посмотреть все известные файловые системы btrfs:

Горячее добавление устройств к файловой системе:

Метаданные теперь должны быть на всех устройствах:

[править] Превращение файловой системы ext3 в btrfs

Файловую систему ext3 можно превратить в btrfs, и работать с ней дальше уже как с новой файловой системой. Причём состояние исходной файловой системы ext3, будет доступно и потом.

Теперь в каталоге /ext3 видно состояние исходной файловой системы.

Размонтирование происходит в обратном порядке:

Можно вернуться на файловую систему ext3 и потерять сделанные изменения:

Или можно остаться на btrfs и удалить сохранённый образ файловой системы ext3:

[править] Использование btrfs поверх SSD-накопителей

При использовании btrfs поверх SSD-накопителей рекомендуется использовать опцию -o ssd при монтировании. Это ускоряет запись, особенно для накопителей, у которых медленная произвольная запись [6].

При использовании опции -o ssd в сочетании с обычным накопителями со шпинделями, прироста производительности не наблюдается.

[править] Планы по развитию

(список устарел, часть уже реализована, а часть уже и не будет реализовываться)

Предполагается, что в версии 1.0 файловой системы будут такие возможности:

  • Offline fsck and metadata imaging tool
  • Compat flags in the super block, tree roots and inodes
  • Правильная обработка ENOSPC.
  • Поддержка O_DIRECT (без контрольных сумм)
  • Поддержка AIO
  • Настраиваемые алгоритмы хэширования для каталогов и контрольных сумм (Configurable hash algorithms for directories and checksumming)
  • Резервирование количества индексных дескрипторов для каталогов (Inode number reservations for directories)
  • Увеличенная производительность fsync (Improved fsync performance)
  • Поддержка Fallocate (at least disk format level)
  • New directory format to avoid collisions in the inode number index
  • Поддержка ACL
  • Дерево каталогов подтомов (Directory tree of subvolumes)
  • Subvolume quotas and inherited space usage information
  • Поддержка NFS
  • Additional tunables in the multi-device code, including device latency characteristics and starting offsets for stripe alignment
  • Superblock duplication, stripe alignment and rotation
  • Удаление снимков
  • Автоматизация регресионного тестирования.
  • Reserved space for online fsck and the ability to add storage so that a background extent allocation check can proceed
  • Дополнительные вызовы ioctl, предназначенные для установки атрибутов индексных дескрипторов (nodatacow, nodatasum и т.д.)
  • Disk format requirements for hybrid storage
  • Disk format requirements for added raid personalities
  • Disk format requirements for coarse grained file data checksumming
  • Lost file prevention
  • Поддержка преобразования файловых систем ext4 в btrfs (Ext4 conversion program)

[править] Возможности

Возможности, появившиеся в файловой системе, начиная с версии 0.16 [7]:

  • Полностью распределенное блокирование B-дерева. При поиске в B-дереве блокировка узлов теперь спускается вместе с курсором; узлы на верхних уровнях освобождаются по мере необходимости. С блокированием при выделении экстентов все еще есть проблемы, которые должны быть решены в будущем;
  • Усовершенствование журналирования данных (режим data=ordered). В режиме data=ordered btrfs будет записывать грязные блоки пользовательских данных до фиксации транзакции. Теперь журналирование данных затрагивает только сами блоки данных и относящиеся к ним экстент-итемы B-дерева. Остальные метаданные транзакции могут сбрасываться на диск параллельно с записью блоков данных (раньше приходилось ожидать сброса пользовательских блоков).
  • Поддержка ACL. ACL реализованы и включены по умолчанию.
  • Предотвращение потери файлов. Слой Linux VFS и POSIX API заставляют файловую систему разрывать связь между файлом и каталогом до его удаления из ФС (т.е. освобождения его блоков и inode). В случае краха ФС между разрывом связи и удалением этот файл остается на диске, но не имеет имени. Теперь btrfs отслеживает такие случаи и гарантирует полное освобождение всех занимаемых файлом ресурсов в случае краха ФС.
  • Новый формат индекса каталога. Btrfs индексирует каталоги двумя способами: первый оптимизирован для быстрого поиска имен, второй возвращает inodes в порядке, близком к их расположению в B-дереве, что важно для высокой производительности при создании полных бэкапов ФС. Теперь в btrfs для элементов каждого каталога введён sequence-номер, с помощью которого устраняются некоторые наихудшие случаи второго способа индексирования для файлов, имеющих множество имен (жестких ссылок) в одном каталоге.
  • Уменьшенное время размонтирования. Раньше btrfs ожидала удаления всех старых транзакций перед размонтированием ФС. В новой версии введен кэш учёта ссылок, существенно снижающий нагрузку на диск и улучшающий производительность ФС на всех режимах.
  • Улучшения в потоковых записи и чтении. Новый код журналирования данных улучшил производительность потоковой записи. Потоковое чтение усовершенствовано за счет оптимизации пула потоков (threads), занимающихся проверкой контрольный сумм после прочтения данных. Теперь, на машинах с достаточно мощным CPU, производительность режимов datasum и nondatasum практически сравнялась.

[править] Критика

Эдуард Шишкин (Edward Shishkin), один из разработчиков Reiser4, выступил с резкой критикой устройства файловой системы. См. например [8].

Читайте также:  File systems used by windows operating systems

[править] История

[править] v0.19, июнь 2009

  • Формат ФС изменен. Изменения добавлены в 2.6.31-rc1, однако драйвер ФС обратно совместим с v0.18.
  • Заметный прирост производительности на любой нагрузке.

[править] v0.18, 17 января 2009

То же, что и v 0.17, но исправлена небольшая ошибка.

[править] v0.17, 12 января 2009

  • Поддержка сжатия файлов (-o compress);
  • Управление общими блоками для снимков;
  • Создание исходной ФС для снимков (seed filesystem);
  • Усовершенствованы алгоритмы выделения блоков.

[править] v0.16, 6 августа 2008

Многочисленные усовершенствования, в том числе:

  • Полностью распределенное блокирование B-дерева.
  • Усовершенствование журналирования данных (режим data=ordered);
  • Поддержка ACL;
  • Предотвращение потери файлов;
  • Новый формат индекса каталога;
  • Уменьшенное время размонтирования;
  • Улучшения в потоковых записи и чтении.

[править] 29 мая 2008, v0.15

  • Обратные ссылки,
  • online-расширение и уменьшение (online growing and shrinking),
  • поддержка преобразования файловой системы ext3,
  • поддержка режиме data=ordered,
  • поддержка записи COW-free.

[править] 30 апреля 2008, v0.14

[править] Дополнительная информация

  • btrfs project wiki (англ.) — wiki-сайт проекта btrfs
  • «Архитектура и реализация btrfs» (рус.), Андрей Пешеходов (fresco)
  • Linux Don’t Need No Stinkin’ ZFS: BTRFS Intro & Benchmarks (англ.) — подробное сравнение возможностей BTRFS и ZFS
  • zfs vs btrfs comparison (англ.) — ещё одно сравнение
  • BTRFS Fun (англ.)

[править] См. также

Сетевые файловые системы с похожими функциями:

Источник

Файловая система Btrfs

Переход на новую файловую систему, это всегда сложная задача. Мы уже доверяем старой, проверенной файловой системе. Она может даже имеет некоторые ограничения функциональности и производительности, но зато никогда нас не подводила. Новые файловые системы предлагают очень большое количество функций, но возникает вопрос, можно ли им доверять?

Одной из таких файловых систем является Btrfs. Это относительно новая файловая система, которая появилась в 2007 году и была разработана компанией Oracle. Она предлагает очень широкий набор новых возможностей и поэтому сильно интересует пользователей, но до сих пор в сети ходят слухи, что эта файловая система еще не пригодна для постоянного использования. В этой статье мы попытаемся разобраться какие возможности нам дает Btrfs, а также действительно ли ее уже можно использовать.

Что такое Btrfs?

Как я уже сказал, Btrfs была разработана компанией Oracle в 2007 году. Одной расшифровки названия нет, одни говорят, что это значит B-tree FS, другие Better Fs. Также как и в других файловых системах, все данные хранятся на диске по определенным адресам. Эти адреса сохранены в метаданных. И тут уже начинаются различия. Все метаданные организованны в виде b-деревьев. Это дает большую производительность при работе с файловой системой, а также позволяет добавлять неограниченное количество файлов.

Но даже это еще не все. Когда вы перезаписываете файл, данные не перезаписываются, а лишь модифицированная часть копируется в новое место, Затем просто обновляются метаданные. Это позволяет создавать мгновенные снимки файловой системы, которые не занимают места на диске, пока не было внесено много изменений. Если же старый блок больше не нужен, потому что он не является частью какого-либо снимка, то он автоматически удаляется.

Из-за своей структуры Btrfs имеет огромные возможности, например, она может работать с современными очень большими носителями данных. Максимальный размер файловой системы составляет 16 Экзабайт. Это все возможно благодаря правильному использованию пространства на диске. Другие файловые системы используют жесткий диск целиком, от начала до конца для записи своей структуры.

Btrfs поступает по-другому. Каждый диск, независимо от его размера делится на блоки по 1 Гб для данных и 256 Мб для метаданных. Затем эти блоки собираются в группы, каждая из которых может храниться на разных устройствах, количество таких блоков в группе может зависеть от уровня RAID для группы. Менеджер томов уже интегрирован в файловую систему, поэтому больше никакое дополнительное ПО использовать не нужно.

Защита и сжатие данных тоже поддерживается на уровне файловой системы так что здесь вам тоже не нужны дополнительные программы. Также файловая система btrfs поддерживает зеркалирование данных на нескольких носителях. Вот другие особенности btrfs, которые можно упомянуть:

  • Поддержка снимков файловой системы, только для чтения или для записи;
  • Контрольные суммы для данных и метаданных с помощью алгоритма crc32. Таким образом, можно очень быстро определить любые повреждения блока;
  • Сжатие с помощью Zlib и LZO;
  • Оптимизация для работы с SSD, файловая система автоматически определяет ssd и начинает вести себя по-другому;
  • Фоновый процесс для обнаружения и исправления ошибок, а также дефрагментации и дедупликации в реальном времени;
  • Поддерживается преобразование из ext4 и ext3.

Все это очень хорошо, но можно ли уже использовать эту файловую систему? Попробуем разобраться и с этим.

Готова ли Btrfs к использованию?

Вокруг Btrfs до сих пор сохранилось много неправильных представлений. Многие из них происходят от реальных проблем, которые были в начале разработки файловой системы. Но люди, просматривая эту информацию не смотрят на ее дату. Да Btrfs действительно была нестабильной и неустойчивой. Было очень много проблем с потерей данных и много пользователей писали об этом, но это было еще в 2010 году.

Читайте также:  Aimp для windows 10 для чего

Самая важная часть файловой системы — это ее формат хранения на диске. Но формат файловой системы Btrfs уже зафиксирован, это случилось еще в 2012 году и он больше не изменяется без крайней необходимости. Это само по себе достаточно, чтобы признать стабильность btrfs.

Но почему же Btrfs считается многими нестабильной? Этому есть несколько причин. Во-первых, это боязнь пользователей к новым технологиям. Это было не только в Linux, но и в Microsoft, при их переходе на NTFS, и в Apple. Но здесь есть некоторый парадокс, файловая система XFS прошла 20 лет стабильного развития, но самой стабильной файловой системой считается ext4, которая была разработана из форка ext3 в 2006 году. Фактически она на год старше Btrfs.

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

Но уже есть много подтверждений, что файловая система готова. Эта файловая система используется на серверах Facebook, где компания хранит свои важные данные. А это уже само по себе важный фактор. Над улучшением файловой системы работают такие компании как Facebook, SuSE, RedHat, Oracle, Intel и другие. Эта файловая система используется в SUSE Linux Enterprise по умолчанию, начиная с выпуска 12. Все эти факторы вместе доказывают, что файловая система вполне готова к использованию. А учитывая функциональность и особенности btrfs ее уже можно использовать.

Использования Btrfs

Почему стоит использовать Btrfs и стоит ли вообще, разобрались. Теперь хотелось бы показать немного практики, чтобы вы могли оценить эту файловую систему в действии. Я буду приводить примеры на основе Ubuntu. Сначала установим инструменты для управления файловой системой:

sudo apt install btrfs-tools

Создание файловой системы btrfs

Сначала нужно создать файловую систему. Допустим, у нас есть два жестких диска /dev/sdb и /dev/sdc, мы хотим создать на них единую файловую систему с зеркалированием данных. Для этого достаточно выполнить:

sudo mkfs.btrfs /dev/sdb /dev/sdc

По умолчанию будет использоваться RAID0 для данных (без дублирования, и RAID1 для метаданных (дублирование на один диск). При использовании одного диска метаданные тоже дублируются, если вы хотите отключить это поведение можно использовать опцию -m single:

sudo mkfs.btrfs -m single /dev/sdb

Но делая это, вы повышаете опасность потери данных, поскольку если метаданные будут утеряны, то данные тоже.

Посмотреть информацию о только что созданной файловой системе вы можете командой:

sudo btrfs filesystem show /dev/sdb

Или обо всех подключенных файловых систем:

sudo btrfs filesystem show

Монтирование btrfs

Для монтирования используйте обычную команду:

sudo mount /dev/sdb /mnt

Вы можете монтировать любой из дисков, это приведет к одинаковому эффекту. Строчка в /etc/fstab будет выглядеть так:

/dev/sdb /mnt btrfs defaults 0 1

Теперь смотрим информацию о занимаемом месте на дисках:

sudo btrfs filesystem df /mnt

Сжатие в btrfs

Для включения сжатия достаточно добавить опцию compress при монтировании. Ей можно передать алгоритм lzo или zlib:

sudo mount -o compress=lzo /dev/sdb /mnt
sudo mount -o compress=zlib /dev/sdb /mnt

Восстановление Btrfs

Для восстановления поврежденной Btrfs используйте опцию монтирования recovery:

sudo mount -o recovery /dev/sdb /mnt

Изменение размера

Вы можете изменить размер тома в реальном времени, для этого используйте команду resize:

sudo btrfs filesystem resize -2g /mnt

Уменьшит размер на 2 гигабайта. Затем увеличим на 1 Гигабайт:

sudo btrfs filesystem resize +1g /mnt

Создание подтомов

Вы можете создавать логические разделы, подтома внутри основного раздела с помощью Btrfs. Они могут быть примонтированы внутри основного раздела:

sudo btrfs subvolume create /mnt/sv1
sudo btrfs subvolume create /mnt/sv2
sudo btrfs subvolume list /mnt

Монтирование подтомов

Вы можете примонтировать подтом по id, полученному с помощью последней команды:

sudo umount /dev/sdb

sudo mount -o subvolid=258 /dev/sdb /mnt

Или вы можете использовать имя:

sudo mount -o subvol=sv1 /dev/sdb /mnt

Удаление подтомов

Сначала подключите корень btrfs вместо подтома:

sudo umount /mnt

sudo mount /dev/sdb /mnt/

Чтобы удалить подтом можно использовать путь монтирования, например:

sudo btrfs subvolume delete /mnt/sv1/

Создание мгновенных снимков

Файловая система Btrfs позволяет создавать мгновенные снимки изменений. Для этого используется команда snapshot. Например, создадим файл, затем сделаем снимок:

touch /mnt/sv1/test1 /mnt/sv1/test2

sudo btrfs subvolume snapshot /mnt/sv1 /mnt/sv1_snapshot

Дефрагментация btrfs

Из-за использования копирования при записи может возникать фрагментация. Чтобы запустить дефрагментацию файловой системы используйте команду:

sudo btrfs filesystem defrag /mnt

Выводы

Как видите, файловая система btrfs очень интересная и перспективная. К тому же она уже полностью готова к использованию и достаточно стабильна. А вы уже пользуетесь Btrfs? Собираетесь пользоваться после прочтения статьи? Напишите в комментариях внизу!

Источник

Оцените статью