Как сделать так, чтобы ext3 конвертировали в ext4 поддержку e4defrag?

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

Я недавно преобразовал файловые системы в ext4, используя инструкции здесь , в частности, запустив:

# tune2fs -O extents,uninit_bg,dir_index /dev/DEV
# e2fsck -fDC0 /dev/DEV

Однако файловые системы все еще не поддерживают e4defrag:

Failed to defrag with EXT4_IOC_MOVE_EXT ioctl:Operation not supported   [ NG ]

Полагаю, в команде tune2fs отсутствует какая-либо опция, но поиск в Google не помог мне понять, что это может быть.

4
задан 2 December 2012 в 17:49

1 ответ

1110 У меня была такая же проблема. Я нашел это с ответом:

https://wiki.archlinux.org/index.php/Ext4#Migrating_files_to_extents

Перенос файлов в экстенты

Предупреждение: НЕ используйте следующий метод с хранилищем Mercurial, которое было клонировано локально, так как это повредит хранилище. Это может также повредить другие жесткие ссылки в файловой системе.

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

К счастью, можно использовать программу chattr, которая заставит ядро ​​переписать файл, используя экстенты. Можно выполнить эту команду для всех файлов и каталогов одного раздела (например, если /home находится на выделенном разделе): (Должен выполняться от имени root)

find /home -xdev -type f -print0 | xargs -0 chattr +e
find /home -xdev -type d -print0 | xargs -0 chattr +e

Рекомендуется проверить это сначала запустите небольшое количество файлов и проверьте, все ли в порядке. Также может быть полезно проверить файловую систему после преобразования.

Используя команду lsattr, можно проверить, что файлы теперь используют экстенты. Буква 'e' должна появиться в списке атрибутов перечисленных файлов.

-

Примечание. Я предполагал, что e4defrag может конвертировать файлы для использования экстентов. Неудачный ioctl - это тот, который делает это на самом деле, поэтому я немного смущен тем, почему он не работает, но chattr +e сработал для меня. Получив chattr +e файлов, вы можете использовать e4defrag для них. Очевидно, на всякий случай убедитесь, что у вас есть резервная копия и т. Д. (Я бы подумал, что это безопасно, но вы никогда не знаете - здесь есть предупреждение о жестких ссылках, но я не вижу другой ссылки на известные проблемы с жесткими ссылками).

0
ответ дан 2 December 2012 в 17:49

Другие вопросы по тегам:

Похожие вопросы: