Pull to refresh

Как конвертировать файловую систему из ext3 в ext4

Reading time 2 min
Views 10K
Original author: wiki.kernel.org
Теперь у всех есть новая Убунту с поддержкой ext4, и в моём прошлом посте о его релизе было несколько комментариев с вопросами о том, как переделать файловую систему в этот самый ext4. По этому отличному поводу я решил перевести топик с wiki.kernel.org, где как раз про это написано. Перевод совсем вольный, разбавленный моими собственными мыслями. Кстати, про все новые плюшки ext4 можно почитать по-английски теперь по-русски здесь, а еще в новой статье yktoo вот здесь!

Монтрование ext3 как ext4 без конвертации


Во-первых, начиная с ядра 2.6.28 можно монтировать ext2, ext3 и ext4 файловые системы как ext4. Это даст возможность использовать новые оптимизированные штуковины нового драйвера (например, delayed allocation, multi-block allocation и большие inode, если вы свою ext3 форматировали с этой опцией), и при этом физически на диске ничего не изменится, давая возможность вернутся обратно на драйвер ext3, например. Это делается очень просто — в вашем /etc/fstab меняете ext3 на ext4 и всё. Правда.

Конвертация в ext4


Совсем другое дело, если вы хотите использовать новые возможности ext4, такие как extents, которые меняют физический формат хранения данных, но и дают большой выигрыш в производительности. Если вы конвертируете из ext2, то сначала нужно включить журналирование (другими словами, конвертировать в ext3):

sudo tune2fs -j /dev/{нужный раздел}

Затем, чтобы включить новые возможности на вашей ext3 файловой системе, нужно сделать так:

sudo tune2fs -O extents,uninit_bg,dir_index /dev/{нужный раздел}

Внимание! После этой команды, вы уже никогда не сможете смонтировать файловую систему как ext3.
После этого нужно обязательно (Mastyf говорит, что необязательно, потому что при первой перезагрузке всё само проверится, но я бы всё-таки перестраховался) проверить файловую систему с помощью fsck, чтобы привести в порядок то, что tune2fs не доделала. Делаем это так:

sudo e2fsck -pDf /dev/{нужный раздел}

После этого правим /etc/fstab и перезагружаемся.

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

Еще одно примечание: не рекомендуется менять размер inode с помощью e2fsprogs версии 1.41.0 или старше, потому что это приводит к испорченным данным и грустным людям.

Последнее примечание: после включения экстентов, новые файлы будут создаваться с их использованием, но со старыми ничего не случится и они продолжат лежать на диске в старом формате. Я где-то читал о волшебной утилитке defrag2fs, которая все старые файлы тоже переводит в новый формат, но, как я понял, она еще очень сырая, плохо работает, опасна для жизни и лучше подождать.

Как загружаться, если /boot тоже ext4


Вообще, конвертировать /boot в ext4 бессмысленно. Но если очень хочется, тогда нужно сначала сделать всё, как написано выше. Затем, нужно немного подправить /boot/grub/menu.lst. Находим вот такую строчку:

title Ubuntu 9.04 <...>
root (hdX,Y)
kernel /boot/vmlinuz-2.6.28-... root=... ro quiet splash

И добавляем к последней в конец rootfstype=ext4
Tags:
Hubs:
+45
Comments 55
Comments Comments 55

Articles