25.04.2009

Конвертирование Reiserfs в Ext4

В сети множество информации, как конвертировать без форматирования ext3 до ext4, к примеру здесь. Но у меня сложилась иная ситуация, использую на винте размером в 500 гигов reiserfs - меня вполне удовлетворяла, однако новшества ext4 очень и очень стали для меня соблазнительны. Проблема осложнялась тем, что винт забит на две трети, забекапить всё и тупо форматнуть винт не было возможности.
Поэтому пришлось достичь желанного в два подхода, первое конвертировать reiserfs в ext3, второе, как выше указано, из ext3 в ext4.
Для начала необходимо установить пакеты anyfs и anyfs-tools. Далее отмонтируем необходимый для конвертирования раздел, для примера будет использоваться /dev/sdb1. Далее запускаем первый пункт конвертирования, т.е. из reiserfs в ext3:
sudo anyconvertfs --dontstop /dev/sdb1 ext3
ключ --dontstop не даёт программе делать паузы между этапами конвертирования, которые предусмотрены для контроля со стороны пользователя и для возможности отмены конвертирования, но следует учитывать, что процесс будет долгим в зависимости от размера конвертируемого диска и мощности системы, у меня на указанном винте заняло около 9 часов. До указанной команды могу предложить запустить программу с ключом --dry, чтобы узнать о возможности конвертирования, и на каком этапе произойдут необратимые изменения в исходной файловой системе, т.е. после чего процесс ни в коем случае прерывать нельзя. Подобной командой можно сконвертировать не только из reiserfs, ext2/3/4 и др., а также из ntfs, только нужно аналогично примеру указать исходную ntfs-3g перед конечной ext3 или той, что вам нужно.
Далее, когда процесс конвертирования будет закончен, делаем следующее, чтобы полученную ext3 сделать ext4:
sudo tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
необходимо проверить фс на ошибки, следующая команда автоматически исправит те ошибки, что возможно сделать без вмешательства пользователя:
sudo e2fsck -fpD /dev/sdb1
и по необходимости, в случае, если последняя проверка сообщила о неисправимой автоматически ошибке, проверим и исправим самостоятельно:
sudo e2fsck -fD /dev/sdb1
Все, далее монтируете фс как ext4 и пользуетесь, не забудьте подправить строку в /etc/fstab.
UPD: некоторые дополнительные замечания:
для тех, кто пользуется не Arch Linux и не может найти (собрать) пакет под свой дистрибутив, предлагаю следующее решение:
отсюда скачать образ ArchIso - это богатый на инструментарий и широту применения livecd, как видно из названия, собран на основе Arch Linux. Записать образ, загрузиться. Логин/пароль: arch/arch
Замечу, что archiso монтирует все диски автоматом в /mnt, поэтому перед конвертированием, убедитесь, что конвертируемые диски отмонтированы.
Далее установить пакты anyfs и anyfs-tools командой sudo pacman -U имя_пакетов, последнюю версию пакетов anyfs и anyfs-tools можно скачать здесь.
И далее по инструкции с самого начала.
Добавлю, что если вы конвертируете и корень файловой системы, то обязательно нужно править не только /etc/fstab на диске к примеру /dev/sda1, но и /boot/grub/menu.lst, где параметр root= установить в значение соответственно /dev/sda1 или прописать новый uuid, и также установить следующий параметр rootfstype=ext4
Плюс рекомендовал бы, если конвертировался загрузочный раздел, заново перенастроить grub, т.е. запускаем grub:
далее: find /boot/grub/stage1
в ответ получим типа: (hd0,0)
далее:
parttype (hd0,0) 0x83
root (hd0,0)
setup (hd0)
quit
и всё...

5 коммент.:

  1. Спасибо, но остаётся непонятным главное: все ли новые функции ext4 включаются и для всех ли имеющихся на разделе файлов?
    А то что-то не нашел в инете ничего дельного по anyconvertfs
    ОтветитьУдалить
  2. новые фичи на конвертируемой из ext3 в ext4 проявятся на новых/изменяемых файлах. место нахождение на диске старых файлов при конвертировании не затрагивается. Главный вопрос ведь в том, чтобы не бекапить и форматировать лишний раз. А сконвертированный раздел можно подвергнуть дефрагментации с помощью программы shake, тогда все фичи ext4 проявятся и на старых (дефрагментированных) файлах. По поводу anyconvertfs гуглить нужно anyfs. Успехов)))
    ОтветитьУдалить
  3. А вы случайно не видели в природе debов anyfs/anyfs-tools?
    ОтветитьУдалить
  4. не видел, проще собрать или же установить
    ОтветитьУдалить
  5. ой, кстати да — я уже слил исходники, нашёл в них подкаталог debian, и пробовал собрать пакет. Но потерпел неудачу — оно отказалось компилироваться
    ОтветитьУдалить