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.

3 thoughts on “Конвертация BTRFS

  1. Уведомление: Tweets that mention Конвертация ext2/3 в btrfs -- Topsy.com

  2. Спасибо Статья познавательная, осталось еще бенчмарки сравнения производительности и потребляемых ресурсов сделать :)

    • Да не вопрос, держи тесты — http://www.phoronix.com/scan.php?page=article&item=ext4_btrfs_2633&num=1

      Если в общих чертах, то:

      сравнение производительности файловых систем Btrfs и EXT4, при использовании последней предварительной версии Linux ядра 2.6.33. Btrfs незначительно опередила EXT4 в 2 тестах (Dbench и FS-Mark) и значительно (в 11 раз) обогнала EXT4 в тесте Threaded I/O Tester. Использование сжатия данных на лету в Btrfs привело к повышению нагрузки на CPU примерно на 13%.

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

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