воскресенье, 10 февраля 2013 г.

Переход на 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

2 комментария:

Anton Yakutovich комментирует...

А какие-нибудь характеристики на чтение/запись проверялись до и после дефрагментации?

morbo комментирует...

Никаких тестов не делал, так что можете считать это обновлением ради обновления.