17 Фев

Обзор возможностей BTRFS

Сегодня обнаружил интересный факт, что очень много людей попадают на мой блог через поисковики после запроса «btrfs». Не знаю, почему так происходит, учитывая, что у меня в блоге btrfs пока встречается только в кратком обзоре Debian Squeeze. Но факт есть факт.
Да и многие пока очень мало знают что-либо про btrfs. А знать стоило бы, файловая система, действительно, очень интересная и содержит просто огромную кучу функционала.

По этим причинам я решил написать небольшую статью, чтобы познакомить интересующихся с этой Файловой Системой.

В 2006 году летом в Сан-Хосе состоялся саммит разработчиков файловых систем. Сразу после этого саммита Крис Мэсон начал работу над созданием новой файловой системой BTRFS. И очень усердно.
Уже в начале 2007 года в списках рассылок разработчиков ядра Linux он сообщил, что первые результаты уже готовы. На тот момент он успел написать «10 547 строк слабо комментированного кода» и приглашал народ к тестированию.

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

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

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

Чем так интересна btrfs? Она включает в себя функционал различных файловых систем.
Многие называют btrfs свободным клоном ZFS — это совершенно неверно. ZFS отличная файловая система, но она не была включена я ядро linux по причине лицензионных конфликтов linux и zfs. В btrfs есть две особенности, идеи которых били позаимствованы у ZFS:

  • Как и ZFS, btrfs интегрирует в свой состав программный RAID
  • btrfs позволяет делать снимки данных ФС (snapshots)

Основные возможности btrfs:

  • Проверка целостности без размонтирования;
  • Записываемые снимки (writeable snapshots);
  • Динамическое выделение индексных дескрипторов (динамические иноды, dynamic inodes);
  • Контрольные суммы данных и метаданных;
  • Интеграция с device-mapper;
  • Поддержка RAID-массивов (одна файловая система на нескольких томах);
  • Сжатие;
  • Подтома (subvolumes);
  • Эффективное клонирование файловой системы и создание инкрементальных архивов;
  • Дефрагментация смонтированной файловой системы.
  • Поддержка сложных многодисковых конфигураций — RAID уровней 0, 1, 5, 6 и 10, а также реализация различных политик избыточности на уровне объектов ФС — то есть возможно назначить, к примеру, зеркалирование для какого-либо каталога или файла.
  • Copy-on-write (CoW) журналирование.
  • Контроль целостности блоков данных и метаданных с помощью контрольных сумм.
  • Зеркалирование метаданных даже в однодисковой конфигурации.
  • Полностью распределенное блокирование.
  • Поддержка ACL.
  • Защита от потери данных.
  • Выбор хэш-алгоритма.
  • Поддержка NFS.
  • Флаги совместимости, необходимые для изменения дискового формата в новых версиях btrfs с сохранением совместимости со старыми.
  • Резервные копии суперблока, по крайней мере — по одной на устройство.
  • Скоростные приоритеты для дисков.
  • Гибридные пулы. btrfs старается перемещать наиболее используемые данные на самое быстрое устройство, вытесняя с него «залежавшиеся» блоки. Эта политика хорошо согласуется с появившейся недавно моделью использования SSD (Solid State Drive).
  • Балансировка данных между устройствами в btrfs возможна сразу после добавления диска к пулу, отдельной командой — а не только постепенно, в процессе использования (как это реализовано в ZFS).
  • Диски для горячей замены, поддержка которых появилась и в ZFS.

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

Разработчики Ubuntu не так давно обещали сделать btrfs файловой системой по умолчанию в ubuntu-10.10, но недавно перенесли свои планы на версию 11.04. Посмотрим, как будет в этот раз. Хотя выбирать btrfs при установке отдельно уже можно. Как, кстати, и в Debian Squeeze.

На сегодняшний день GRUB не умеет загружать ядро и скрипты из btrfs-разделов. Поэтому, в любом случае, /boot/-раздел необходимо держать на какой-либо другой ФС.

При помощи btrfs-convert можно сконвертировать, например, ext3 в btrfs, получив функционал btrfs без потери данных. Причем потом можно обращаться к этому разделу и как к ext3 и как к btrfs. Можно без проблем удалить образ btrfs, лишившись его же функционала или наоборот, удалить образ ext3, оставшись навсегда в btrfs.

8 thoughts on “Обзор возможностей BTRFS

  1. Про конвертирование подробнее можно? как на счет конвертирования ext4 в дебиане? и по производительности в сравнении с ext4?

    • Смотря что именно в данном случае ты подразумеваешь под производительностью. Чтение/запись/поиск/фрагментация/пведение при нагрузке и проч.
      Про конвертирование я напишу в следующем посте. Думаю, что сегодня и напишу :)

      • Чтение/запись/поиск/фрагментация/пведение при нагрузке
        Да. + насколько сильно потребление памяти, процессорного времени. Всё же это программный рейд на основе FS, а не hw

        • Странные у тебя критерии. Или ты просто некорректно вопрос ставишь. Потребление памяти при каких условиях? При какой нагрузке?
          А насчет рейда — могу поспорить, что хард-рейдом ты и не пользовался. Практически везде используют программный. А вот сравнение производительноститого же mdadm и btrfs я пока не проводил — это не так просто :)

  2. Уведомление: Tweets that mention Обзор файловой системы btrfs -- Topsy.com

  3. Экспериментальная поддержка RAID 5/6 в файловой системе Btrfs

    Крис Мейсон [Chris Mason], ведущий разработчик Btrfs, выпустил экспериментальные расширения, добавляющие нативную поддержку RAID 5 и 6 в эту файловую систему нового поколения для Linux (дополнительно к существующей уже поддержке RAID 0 и 1). Новые расширения базируются на прототипах, представленных Дэвидом Вудхаусом [David Woodhouse] летом 2009 года.

    Тем не менее, ещё требуется исправление несколько ошибок, а также реализация поддержки команды scrub для восстановления bad-блоков, поддержки discard, поддержки progs для parity rebuild, и запланированной поддержки множественного зеркалирования.

    Подробности http://article.gmane.org/gmane.comp.file-systems.btrfs/23006

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *