Как я могу конвертировать мой корневой раздел из BTRFS в EXT4?

Можно ли конвертировать btrfs в ext4 без потери данных? У меня очень низкая скорость операций чтения / записи на btrfs.

15
задан 21 April 2011 в 15:42

4 ответа

Я просто перехожу к имеющимся инструментам, а не к опыту или документации. Возможно, вы захотите протестировать это с помощью раздела (даже просто образа), который вы не против потерять, если всё пойдёт не так. Не пытайтесь это сделать, не делая резервную копию.

btrfs-convert имеет функцию отката для отмены преобразования. Я не уверен, работает ли это для разделов, которые не были преобразованы в btrfs с помощью btrfs-convert.

  1. Начните с размонтирования файловой системы. Если это необходимо для системы, загрузитесь на LiveCD.

  2. Установите btrfs-tools

    sudo apt-get install btrfs-tools.

    .
    
  3. Сбросить преобразование

    sudo btrfs-convert -r /dev/sdXn
    
7
ответ дан 21 April 2011 в 15:42

Я сделал это, используя систему с мультизагрузочными дистрибутивами (Ubuntu на ext4, Xubuntu на btrfs) ). Запуская Ubuntu, я взял домашний раздел Xubuntu btrfs и заархивировал его с помощью fsarchiver. Затем я смог восстановить его, снова используя fsarchiver, в другой раздел и указать тип файловой системы ext4. Похоже, это сработало.

Еще в Ubuntu я смонтировал корневой раздел Xubuntu в / mnt и отредактировал / mnt / @ / etc / fstab, чтобы изменить монтирование для / home так, чтобы он указывал на новый раздел ext4, изменив как UUID, так и тип fs. и удаление данных подтома. Я сохранил файл и перезагрузился в Xubuntu.

Произошла ошибка при загрузке, и загрузка была остановлена. Ошибка заключалась в том, что у меня был другой раздел, который я хотел смонтировать в каталог ~ / Documents, который не удался. Я решил исправить проблему вручную. Оказалось, что мой корневой раздел смонтирован как ext4, но когда я выполнил команду list, я получил

#ls /home
@home

Таким образом, исходная структура подтома btrfs все еще присутствовала в файловой системе ext4. Я ввел команду

mount --bind /home/@home /home

, затем нажал ctrl-D, чтобы продолжить загрузку, и Xubuntu продолжил загрузку, и все прошло нормально. Я еще этого не сделал, так как все еще нахожусь в начальной загрузке, но уверен, что могу поместить эту команду bind в свой файл fstab. Или, возможно, я мог бы оставить информацию о подтоме в записи fstab, я не знаю.

Но вместо этого (это не по теме) я сделаю более зрелый экземпляр / home (ext4 ) для Xubuntu с другого компьютера и используйте его. Я уже доказал, что это сработает.

1
ответ дан 21 April 2011 в 15:42

Насколько я знаю, вы не можете конвертировать btrfs ни в какую другую файловую систему.

3
ответ дан 21 April 2011 в 15:42

Решение, которое работает во всех случаях, - это, конечно, скопировать все из корневого раздела в каталог на другом разделе (при условии, что у вас достаточно свободного места), переформатировать / как ext4 , скопируйте обратно. Я только что сделал это и обнаружил несколько проблем, поэтому я подумал, что напишу небольшое руководство:

  • Загрузитесь с аварийного USB-ключа, смонтируйте оба раздела (скажем, / mnt для реального корневого раздела , и / dest для раздела, служащего временным местом назначения)
  • Помните, что вам следует смонтировать и подтомы BTRFS (я этого не делал, и я потерял все / var , / opt , / root ...). Лучше всего, вероятно, выполнить обычный chroot танец ( mount --bind / dev / mnt / dev; mount --bind / sys / mnt / sys; mount --bind / proc / mnt / proc; chroot / mnt ), а затем mount -a -t btrfs , чтобы все подтомы, описанные в / etc / fstab , были смонтированы.
  • Выйдите из chroot или используйте другой TTY (Ctrl + Alt + F2) и запустите копию, например cp -a / mnt / dest
  • Переформатируйте раздел:
  • umount /mnt[1239 visiblemkfs.ext4 / dev / * the_root_device *
  • mount / dev / * the_root_device * / mnt
  • Скопируйте данные с помощью cp -a / dest / mnt / * / mnt

А теперь (в chroot) don ' Не забудьте

  • отредактировать / etc / fstab , чтобы удалить все подтомы, изменить тип файловой системы с btrfs на ext4 и обновить UUID (см. Вывод blkid , или переключитесь на метку вроде LABEL = rootfs после выполнения tune2fs -L rootfs / dev / * the_root_device * )
  • mkinitrd и воссоздайте загрузчик (я использую другой дистрибутив, поэтому у меня нет точной команды для этого шага в ubuntu). Скрестите пальцы и перезагрузитесь. Наконец, не забудьте очистить копию / mnt во временном месте назначения.
0
ответ дан 5 January 2021 в 23:54

Другие вопросы по тегам:

Похожие вопросы: