Переход на ext4

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

Конвертировать можно только не смонтированные файловые системы, поэтому понадобится LiveCD или загрузочная флешка с каким-нибудь подходящим Linux'ом. Мне приглянулся Clonezilla, т.к. он основывается на Debian и в целом предназначен для работ подобного рода - разметки дисков, клонирования файловых систем и т.п.

Скачиваем дистрибутив Clonezilla со страницы http://clonezilla.org/downloads.php. Есть два варианта - скачать образ компакт-диска, или скачать архив для записи на флешку. С образом компакт-диска всё ясно - нужно просто скачать его и записать на диск. С архивом для записи на флешку всё немного сложнее - нужно разметить флешку, смонтировать её, распаковать на неё содержимое архива и запустить скрипт инсталляции.

Отформатируем раздел флешки:

# mkfs.vfat -F 32 /dev/sdb1

Смонтируем раздел, перейдём в него и распакуем в него архив:

# mount /dev/sdb1 /mnt/usb1
# cd /mnt/usb1
# unzip /home/stupin/Downloads/clonezilla-live-2.0.1-15-amd64.zip

Теперь осталось сделать флешку загрузочной. Для этого перейдём в каталог со скриптом установки и запустим скрипт:

# cd /mnt/usb1/utils/linux
# bash makeboot.sh /dev/sdb1

Осталось отмонтировать флешку:

# umount /dev/sdb1

Теперь нужно загрузить компьютер с флешки (или с компакт-диска) и перейти в режим командной строки.

Для конвертирования файловых систем из ext3 в ext4 нам нужны привилегии суперпользователя. Повысим привилегии пользователя, под которыми нас пустили в систему:

$ sudo su -

Теперь вводим пару команд для каждой файловой системы, которую нужно конвертировать (у меня это разделы sda2 и sda6):

# tune2fs -O extents,uninit_bg,dir_index /dev/sda2
# fsck -pf /dev/sda2

Первая команда отрабатывает довольно быстро, вторая же выполняется долго. На разделе размером 852 гигабайта вторая команда у меня работала полчаса.

Теперь можно, хотя и совершенно не обязательно, дефрагментировать файловые системы с помощью команд:

# mount /dev/sda2 /mnt
# e4defrag /dev/sda2

Команда дефрагментации требует, чтобы дефрагментируемая файловая система была смонтирована. У меня дефрагментация выполнялась в несколько раз дольше, чем конвертирование.

Настало время поправить настройки системы, чтобы она правильно загрузилась.Во-первых, нужно поправить тип файловой системы в файле /etc/fstab. Для этого смонтируем корневой раздел системы и заменим ext3 на ext4 для каждого сконвертированного раздела:

# mount /dev/sda2 /mnt
# vi /mnt/etc/fstab

Если был сконвертирован раздел с корневой файловой системой, то нужно ещё внести изменения в файл настройки загрузчика GRUB, добавив к опциям загрузки ядра текст rootfstype=ext4:

# vi /mnt/boot/grub/grub.cfg

Теперь можно отмонтировать файловые системы и выполнить перезагрузку с жёсткого диска:

# reboot

Загрузившись с жёсткого диска, первым делом нужно сделать настройки GRUB'а постоянными. Для этого откроем файл с настройками GRUB, добавим в опцию GRUB_CMDLINE_LINUX текст rootfstype=ext4 и перегенерируем, на всякий случай, файл конфигурации загрузчика:

# vi /etc/defaults/grub
# update-grub

Ссылки:

  1. How-to`s — Ускоряем debian
  2. Clonezilla Live on USB flash drive or USB hard drive

Написать автору