Миграция С Ext3 На Ext4

Эта статья предназначена для тех, кто хочет перейти с файловой системы Ext3 на Ext4, сохранив при этом все свои файлы и каталоги.

Попробую описать наиболее распространенные ошибки, возникающие в процессе миграции с Ext3 на Ext4, без повторной установки системы.



Причины перехода.

Объяснение преимуществ и недостатков Ext4 выходит за рамки этой статьи (используйте поищи в хабре это здесь ).

Если вы не страдаете от ограничений, налагаемых Ext3, и не готовы рисковать и просто переходить на Ext4, то очень хорошо подумайте, нужно ли вам это? ;) С другой стороны, перейдя на Ext4, вы сможете ощутить прирост производительности вашей файловой системы и повысить ее надежность, не неся при этом никаких накладных расходов ;)

Пытаюсь смонтировать Ext4 без конвертации.

Интересным моментом является тот факт, что вы можете попробовать смонтировать файловую систему Ext3 как Ext4, не конвертируя ее.

Все, что вам нужно сделать, это внести соответствующие изменения в тип файловой системы в /etc/fstab и перезагрузить систему.

В этом случае вы сможете вернуться к Ext3 в любой момент. Это может быть хорошей проверкой того, готова ли ваша ОС поддерживать Ext4. Но следует помнить, что в этом случае никакие расширения Ext4 не будут включены — это будет просто режим совместимости с Ext3.

Переход на Ext4.



Последние предупреждения.

Прежде чем продолжить, сделайте резервную копию вашей системы.

Может случиться так, что в процессе конвертации компьютер перезагрузится и все данные будут потеряны.

Файловые системы больше не будут совместимы с Ext3, поэтому вам необходимо убедиться, что в вашем распоряжении есть инструменты с поддержкой Ext4 для нормальной загрузки и восстановления файловой системы в случае сбоя.

Последние версии загрузчика, e2fsprogs, монтирования и ядра Linux включают поддержку Ext4.

Инструменты.

  • e2fsprogs 1.41.6
  • крепление 2.16
  • Linux-образ 2.6.30
  • личинка 1.96+20090808
Все эти пакеты доступны в нестабильной или экспериментальной ветках репозитория Debian GNU/Linux. Старые версии могут и будут работать, за исключением e2fsprogs — это действительно минимальная версия для поддержки Ext4.

Преобразование некорневой файловой системы в Ext4.
Если мы преобразуем смонтированный Ext3 в Ext4, это будет очень простая процедура.

В примере мы конвертируем /dev/sdc1 смонтирован как /home.

 umount /dev/sdc1
Следующий шаг — проверка раздела на наличие ошибок, чтобы убедиться в их отсутствии.

Мы все еще в Ext3:

 fsck.ext3 -pf /dev/sdc1
Включаем новые возможности Ext4 для раздела:
 tune2fs -O extents,uninit_bg,dir_index /dev/sdc1
После этого запустим проверку файловой системы Ext4:
 fsck.ext4 -yfD /dev/sdc1
Будут обнаружены ошибки – это нормально.

Вы можете запустить проверку второй раз, чтобы убедиться, что ошибки исчезли.

Опция -D при запуске fsck.ext4 фактически включает поддержку dir_index, восстанавливая индекс каталога.

Вы можете запустить эту опцию в любое время и позже.

Теперь изменим файл /etc/fstab, чтобы включить Ext4 для конвертируемого раздела, заменив ext3 на ext4, остальные параметры могут отличаться в вашей системе:

 /dev/sdc1 /home ext4 defaults 0 2
Смонтируйте раздел:
 mount /home
Поздравляем, если все прошло хорошо ;) Если нет, не паникуйте.

Ведь вы последовали совету выше и сделали резервную копию, верно? ;) Проверьте, действительно ли у вас установлены вышеуказанные инструменты (или версии выше) из нестабильной или экспериментальной ветки Debian (хотя, может быть, вы используете другой дистрибутив?), при необходимости обновите эти пакеты.

Попробуйте выполнить действия, описанные выше, еще раз.



/загрузочный раздел.

Если /boot — это отдельный раздел в Ext3, то оставим пока все как есть.

Хотя последние версии grub поддерживают Ext4, они могут не быть включены в дистрибутив.

Вы можете просто смонтировать раздел в Ext4 без его фактического преобразования, указав новый тип файловой системы раздела в /etc/fstab:

 /dev/sdb1 /boot ext4 defaults 0 1
Большинство новых функций Ext4 использоваться не будут, но в процессе загрузки ОС это не будет иметь большого значения, не так ли? ;) По сути, это все еще раздел Ext3, поэтому даже у более старой версии grub не должно возникнуть проблем с загрузкой.

Если ваш раздел /boot не создан отдельно, то пришло время подумать о выделении его в отдельную область.

В противном случае будьте очень осторожны, чтобы не включать функции, которые не поддерживаются вашей версией grub, и не обновляйте grub до версии, которая их поддерживает.

Преобразование корневой файловой системы в Ext4.
Преобразование корневой файловой системы немного сложнее, так как мы не можем просто размонтировать ее.

Однако это можно сделать и без использования внешнего загрузочного носителя.

Но всю процедуру конвертации корневой файловой системы нужно будет проделать в однопользовательском режиме.

Первый шаг — изменить /etc/fstab и указать, что для корневого раздела используется ext4 вместо ext3. Это важно, поскольку файловая система продолжит работать в режиме только для чтения и внести какие-либо изменения будет невозможно, как следствие, будет невозможно смонтировать корневую файловую систему при следующей загрузке.

Предположим, что корневой раздел / — /dev/sda1, поэтому после внесения изменений в файл /etc/fstab строка для этого раздела должна выглядеть следующим образом:

 /dev/sda1 / ext4 defaults 0 1
Теперь перемонтируем файловую систему в режим только для чтения:
 mount -o remount,ro /
Запустим проверку файловой системы:
 fsck.ext3 -pf /dev/sda1
Здесь нам скажут, что необходимо перезагрузить систему.

Что ж, это хорошая идея.

Перезагрузимся в однопользовательский режим и снова перемонтируем корневую файловую систему в режиме только для чтения:

 mount -o remount,ro /
Хорошо, что мы уже отредактировали /etc/fstab и раздел ext3 можно смонтировать как ext4 без предварительного преобразования.

Затем, чтобы включить ext4 в корневой файловой системе, выполните:

 tune2fs -O extents,uninit_bg,dir_index /dev/sda1
И снова запускаем проверку корневой файловой системы.

Он найдет и исправит ошибки, ну мы уже знаем (читайте выше):

 fsck.ext4 -yfD /dev/sda1
Если вы используете ядро 2.6.30 из репозитория Debian, будьте осторожны.

Возможно, вам придется обновить initrd, чтобы добавить модуль ext4:

 update_initramfs -u
Если модуль ext4 отсутствует в initrd, вы не сможете загрузиться после преобразования Ext3 в Ext4. Сейчас перезагружаемся.

Теперь у нас есть быстрая файловая система Ext4, мы чувствуем некоторый прирост производительности, нам доступны все улучшения Ext4. Ну почти всё, читайте дальше.



Преобразование файлов в экстенты.

Может показаться, что преобразование завершено.

И это почти так, за исключением того, что все ранее созданные файлы будут использовать растровое отображение ext3 вместо экстентов ext4. Нет, конечно, рано или поздно, при последующей модификации файлов, их отображение тоже будет обновляться в экстентах.

Но, к сожалению, файлов читается гораздо больше, чем записывается (часто ли обновляются скомпилированные приложения ОС?).

В результате файлы могут долгое время отображаться в растровом формате, при этом вы не ощутите мощь и не раскроете весь потенциал ext4. Утилита под названием e4defrag, которая может перестраивать файлы в новое сопоставление, в настоящее время находится в стадии разработки.

К сожалению, он не завершен и не готов к использованию на реальных данных (по крайней мере, как говорится, пока).

К счастью, не все потеряно.

Вы можете выполнить необходимую работу с помощью чаттр, который входит в пакет e2fsprogs. Он позволяет вам установить атрибут, который заставит ядро перезаписать файл в новую карту экстентов.

Это можно сделать на смонтированной и работающей файловой системе.

На самом деле, это, пожалуй, единственный способ сделать это ;) Но учтите, что эта функция все еще экспериментальная и не полностью протестирована.

Эта операция может быть опасной.

системный журнал может просто заполниться сообщениями о возникших ошибках.

Желательно сначала все это проверить на небольшом объеме данных.

Чтобы проверить расширенные атрибуты файла (и каталога), вы можете использовать lsattr:

 lsattr /home/user/foo/bar
Если экстенты не используются, то мы увидим что-то вроде этого:
 ------------------- /home/user/foo/bar
Пунктирная линия — это просто представление атрибутов файла.

В этом случае файл не имеет атрибутов.

Теперь установим атрибут для экстентов:

 chattr +e /home/user/foo/bar
Давайте снова отобразим атрибуты файла:
 -----------------e- /home/user/foo/bar
Обратите внимание на букву «e», указывающую, что файл использует атрибут экстентов.

Проверяем логи на наличие пугающих сообщений об ошибках в файловой системе.

Если мы его не находим, значит, звезды сегодня к нам благосклонны и мы можем продолжать.

Вы можете передать в chatr несколько имен файлов.

Но.

Кто в наше время делает что-то вручную и по одному файлу? Используем магию:

 find /home -xdev -type f -print0 | xargs -0 chattr +e
 find /home -xdev -type d -print0 | xargs -0 chattr +e
Таким образом, мы установим атрибут экстентов сначала для всех файлов, а затем для всех каталогов в разделе /home. Эту же операцию можно проделать, начиная с корневого раздела.

Указание опции -xdev предотвратит попытки установить атрибут экстентов там, где он не нужен.

Возможно, имеет смысл запускать эти команды в однопользовательском режиме, чтобы свести к минимуму вероятность того, что какой-либо другой процесс одновременно помешает работе.



Последнее слово.

Автор этих строк не несет ответственности, если в результате всех вышеперечисленных действий что-то сломается.

Помните, что вы действуете на свой страх и риск ;) А в остальном удачи.

;) Данная статья представляет собой достаточно вольный перевод " Миграция работающей системы с файловой системы ext3 на ext4 "(как оригинал в начале боевых действий) с некоторыми дополнениями.

;) Критика, обсуждение, описание собственного опыта и т. д., безусловно, приветствуются.

Теги: #настройка Linux #миграция #ext3 #ext4 #extents

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.