Теперь у всех есть новая Убунту с поддержкой ext4, и в моём прошлом посте о его релизе было несколько комментариев с вопросами о том, как переделать файловую систему в этот самый ext4. По этому отличному поводу я решил перевести топик с wiki.kernel.org, где как раз про это написано. Перевод совсем вольный, разбавленный моими собственными мыслями. Кстати, про все новые плюшки ext4 можно почитать по-английски теперь по-русски здесь, а еще в новой статье yktoo вот здесь!
Во-первых, начиная с ядра 2.6.28 можно монтировать ext2, ext3 и ext4 файловые системы как ext4. Это даст возможность использовать новые оптимизированные штуковины нового драйвера (например, delayed allocation, multi-block allocation и большие inode, если вы свою ext3 форматировали с этой опцией), и при этом физически на диске ничего не изменится, давая возможность вернутся обратно на драйвер ext3, например. Это делается очень просто — в вашем /etc/fstab меняете ext3 на ext4 и всё. Правда.
Совсем другое дело, если вы хотите использовать новые возможности ext4, такие как extents, которые меняют физический формат хранения данных, но и дают большой выигрыш в производительности. Если вы конвертируете из ext2, то сначала нужно включить журналирование (другими словами, конвертировать в ext3):
Затем, чтобы включить новые возможности на вашей ext3 файловой системе, нужно сделать так:
Внимание! После этой команды, вы уже никогда не сможете смонтировать файловую систему как ext3.
После этого нужно обязательно (Mastyf говорит, что необязательно, потому что при первой перезагрузке всё само проверится, но я бы всё-таки перестраховался) проверить файловую систему с помощью fsck, чтобы привести в порядок то, что tune2fs не доделала. Делаем это так:
После этого правим /etc/fstab и перезагружаемся.
Примечание: есть некоторые новые возможности, которые можно получить, только заново отформатировав раздел, например, flex_bg и поддержка разделов размером больше 16 терабайт.
Еще одно примечание: не рекомендуется менять размер inode с помощью e2fsprogs версии 1.41.0 или старше, потому что это приводит к испорченным данным и грустным людям.
Последнее примечание: после включения экстентов, новые файлы будут создаваться с их использованием, но со старыми ничего не случится и они продолжат лежать на диске в старом формате. Я где-то читал о волшебной утилитке defrag2fs, которая все старые файлы тоже переводит в новый формат, но, как я понял, она еще очень сырая, плохо работает, опасна для жизни и лучше подождать.
Вообще, конвертировать /boot в ext4 бессмысленно. Но если очень хочется, тогда нужно сначала сделать всё, как написано выше. Затем, нужно немного подправить /boot/grub/menu.lst. Находим вот такую строчку:
И добавляем к последней в конец
Монтрование 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