20 Фев

Создание RAID в BTRFS

Конечно, речь идет о программной реализации дисковых RAID-массивов.
Для создания RAID-массивов обычно все используют mdadm. Это старая и давно отлично зарекомендовавшая себя утилита работает практически на отлично. Но в btrfs есть свои нативные средства для создания и работы с дисковыми массивами.
Скажу без преувеличения, что работать с RAID в btrfs просто сказка! Пока что я еще нигде не встречал ничего подобного, ничего более удобного и интуитивно понятного.
Читать далее

17 Фев

Конвертация BTRFS

Сегодня расскажу, как можно «пощупать» btrfs без установки ОС заново и без переносов данных.
Конечно, на 100% я не могу вам гарантировать, что все ваши данные сохранятся, посколькуконвертация — это всегда риск. Но все эти действия я провел на домашнем стационарном компьютере и на своем старом ноутбуке — все данные остались на месте и ни с какими проблемами я не столкнулся.
И, в любом случае, конечно, в идеале лучше «щупать» новую файловую систему на отдельном разделе, где btrfs установлена с самого нуля.

Скажу честно, что конвертировать в btrfs я пробовал только ext3. Поскольку с остальными ФС я такие эксперименты не проводил, соответственно, ничго по этому поводу сказать не могу.

Для общего развития коротко объясню сам принцип конвертации и почему данные не теряются.
На схеме ниже нарисован принцип, который я опишу далее:

btrfs convert ext2/3


Утилита btrfs-convert создаёт полную копию метаданных исходной файловой системы ext3, а блоки данных получают адресацию в нововообразованной файловой системе btrfs. Новые же данные, записанные уже в btrfs, используют «пустые» блоки внутри бывшей ext3. Для чего, разумеется, эти блоки должны иметь место быть — то есть для целиком заполненной файловой системы конвертация, теоретически может повлечь ошибки, но это лишь теория, я такого не проверял.

Благодаря этому возможен «откат» к предыдущему состоянию — то есть восстановление ext3 в её первозданном виде, с потерей всего, что было записано после конвертации. А можно, напротив, удалив файл образа ext3, сделать конверсию перманентной — без возможности «отката», но зато с высвобождением дискового пространства, занятого реликтами прежней файловой системы.

И так. Файловую систему ext3 можно превратить в btrfs, и работать с ней дальше уже как с новой файловой системой. Причём состояние исходной файловой системы ext3, будет доступно и потом. Важно — запускайте перед конвертацией FSCK! Перед конвертацией ext3-раздел крайне желательно размонтировать :). Но fsck, в любом случае, не будет нормально проверять смонтированную ФС.
Теперь от теории к практике. Допустим, есть у нас раздел sda4, смонтированный из /etc/fstab в /mnt/media. В большенстве дистрибутивов btrfs-convert не входит в стандартный пакет btrfs-progs, а это значит, что нам необходимо будет ставить ее отдельно средствами ваших пакетных менеджеров. Но и эта возможность мало где есть. Поэтому делаем универсальным способом, о котором пишут разработчики.
Скачиваем исходники btrfs-progs, идем в директорию с исходниками и

make convert && sudo make install convert

Теперь можно размонтировать наш подопытный раздел:

umount /mnt/media

И, как велит документация:

fsck.ext3 -f /dev/sda4

И конвертируем:

btrfs-convert /dev/sda4

Теперь можно смонтировать раздел как btrfs на старое место:

mount -t btrfs /dev/sda4 /mnt/media

После монтирования можно посмотреть сожержимое нового раздела и убедиться, что все наши файлы лежат на своем месте.
Но сразу вы заметите, что помимо старых файлов, там же появилась новая директория ext2_saved/ с единственным файлом — image. Это тот самый образ исходной файловой системы, который и позволит выполнить обратное преобразование в неё в случае необходимости.

Конвертировать обратно мы будем исключительно интереса ради и опыта для. Но сперва создадим в нашей новой файловой системе что-нибудь новое. Кстати, все атрибуты файлов, такие как владелец и права доступа — сохранятся и в новой файловой системе. И так, копируем директорию с чем-либо в нашу новую файловую систему:

cp -R /home/vit/img /mnt/media

B через ls убедимся, что все скопировалось успешно. Затем:

 # umount /mnt/media
# btrfs-convert -r /dev/sda4
rollback complete
# mount /dev/sda4 /mnt/media

И теперь просмотр каталога /mnt/media/ показывает полную идентичность его содержимого исходному: каталог ext2_saved/ и img исчезли без следа.
Не могу сказать точно почему, но после этого я вам не советую снова воссоздавать на этом разделе btrfs, поскольку спятся ошибки. При этом раздел можно даже смонтировать, но доступа к нему вы не получите и отхватите такое количество процессов-зомби, что….. вобщем, я так и не смог нормально ихубить стандартным kill -9.
Так что поверьте на слово — лучше этого не делать: либо оставайтесь на btrfs, либо откатывайтесь на ext3 и обратно больше на этом разделе c btrfs не экспериментируйте…

В /etc/fstab для монтирования btrfs-раздела достаточно в поле с указанием файловой системы написать btrfs вместо ext2/3.

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.