Обзор возможностей 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.
Про конвертирование подробнее можно? как на счет конвертирования ext4 в дебиане? и по производительности в сравнении с ext4?
Смотря что именно в данном случае ты подразумеваешь под производительностью. Чтение/запись/поиск/фрагментация/пведение при нагрузке и проч.
Про конвертирование я напишу в следующем посте. Думаю, что сегодня и напишу :)
Чтение/запись/поиск/фрагментация/пведение при нагрузке
Да. + насколько сильно потребление памяти, процессорного времени. Всё же это программный рейд на основе FS, а не hw
Странные у тебя критерии. Или ты просто некорректно вопрос ставишь. Потребление памяти при каких условиях? При какой нагрузке?
А насчет рейда — могу поспорить, что хард-рейдом ты и не пользовался. Практически везде используют программный. А вот сравнение производительноститого же mdadm и btrfs я пока не проводил — это не так просто :)
Уведомление: Tweets that mention Обзор файловой системы btrfs -- Topsy.com
btrfs скоро обгонит zfs)
Давно обогнал. Осталось до стабильного состояния довести.
Экспериментальная поддержка 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