Переход на ext4

Уровень сложности: средний

Родерик Смит (Roderick Smith), автор и консультант, IBM

20.11.2008

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

 

Функции ext4

ОС Linux поддерживает несколько различных файловых систем. Некоторые из них являются специализированными сетевыми файловыми системами или файловыми системами, разработанными для других ОС, но лишь ограниченное количество из них может быть использовано в качестве основной файловой системы Linux – той системы, в которой хранится корневой каталог Linux (/) и системные каталоги. В настоящий момент такими системами являются ext3, ReiserFS, XFS и JFS (Journaled File System). Однако разработка и развитие файловых систем происходят постоянно, и на горизонте появляются новые файловые системы.

Возможно, наиболее значительной из файловых систем, разрабатываемых в настоящее время для Linux, является ext4 – четвертое воплощение оригинальной расширенной файловой системы (extended file system, ext или extfs), разработанной специально для Linux. Благодаря своему наследию ext4 скорее всего станет одной из стандартных файловых систем (а возможно и основной файловой системой) для Linux уже в обозримом будущем.

Сравнение ext4 и ext3

Четвертая версия расширенной файловой системы (ext4 или ext4fs) появилась на свет в связи с тем, что разработчики требовали добавления новых и расширения старых функций ext3. С этим шагом был связан ряд проблем:

  • Некоторые из новых функций нарушали обратную совместимость.
  • Код ext3 мог стать слишком сложным и трудным для поддержки.
  • Эти изменения могли сделать весьма надежную систему ext3 нестабильной.

Исходя из этих соображений, в июне 2006 года разработчики приняли решение выделить работу над ext4 в отдельную ветку. С этого времени началась разработка ext4, которая оставалась незаметной для большинства обычных пользователей и администраторов Linux. С выходом ядра 2.6.19 в ноябре 2006 года ext4 впервые появилась в стабильном ядре, хотя она и была помечена как экспериментальная (и остается таковой до сих пор), поэтому большинство пользователей проигнорировали ее.

Поскольку ext4 оставалась в разработке, по состоянию на момент выхода ядра 2.6.24.4 список ее функций постоянно меняется. Существующие и новые функции, включающие преимущества по сравнению с ext3, перечислены в таблице 1.

Таблица 1. Существующие и новые функции ext4, обеспечивающие преимущества перед ext3

Функция Преимущество
Больший размер файловой системы В ext3 максимальный размер тома ограничивался 32 тебибайтами (TiB), а одного файла – 2 TiB, но практически ограничения на размер были намного выше, в зависимости от вашей архитектуры и системных настроек – до 2 TiB для тома и 16 гибибайт (GiB) для файла. В ext4 поддерживаются тома размером до 1024 пебибайтов (PiB) или 1 эксбибайта (EiB) и файлы размером до 16 TiB. Это может быть некритичным (пока!) для обычных рабочих станций или серверов, но может оказаться весьма важным для пользователей, работающих с большими дисковыми массивами.
Экстенты Применение экстентов способствует увеличению эффективности файловых дескрипторов, сокращает время удаления больших файлов и улучшает многие другие аспекты.
Постоянное выделение пространства В случае если приложению необходимо зарезервировать дисковое пространство до того, как оно будет использовано, большинство файловых систем выполняют это, заполняя еще не использованное место на диске нулями. Ext4 выполняет резервирование без этого, что позволяет увеличить производительность некоторых баз данных и мультимедийных приложений.
Отложенное выделение пространства Ext4 может отложить выделение дискового пространства до последнего момента, тем самым увеличивая производительность.
Большее количество каталогов Если вас смущал тот факт, что в ext3 может храниться только 32000 каталогов, вам будет приятно узнать, что это ограничение устранено в ext4.
Контрольные суммы журналов Ext4 добавляет в данные журналов контрольные суммы, тем самым повышая надежность и производительность.
Дефрагментация «на лету» Хотя ext3 не склонна к излишней фрагментации, файлы, хранящиеся в этой файловой системе, как правило, оказываются по крайней мере немного фрагментированными. В ext4 добавлена поддержка дефрагментации «на лету», увеличивающая общую производительность.
Восстановление Хотя эта функция пока не реализована, ext4 может поддерживать восстановление, которое, разумеется, удобно при случайном удалении файлов.
Быстрая проверка файловой системы В ext4 добавлены структуры данных, которые позволяют fsck пропускать при проверке неиспользуемые части диска, что ускоряет проверку файловой системы.
Наносекундные временные метки Большинство файловых систем, в том числе ext3, используют временные метки с точностью до секунды. В ext4 точность этих данных увеличена до наносекунды. Также в некоторых источниках указано, что ext4 поддерживает временные метки до 25 апреля 2514 года, в отличие от ext3 (18 января 2038 г.).

 

 

Поскольку работа над ext4 продолжается, данный список функций может меняться. Некоторые из них при использовании создают обратную несовместимость с ext3 — поэтому, возможно, вы не сможете работать с файловой системой ext4, используя код ext3. Ext4 поддерживает прямую совместимость — файловую систему ext3 можно будет смонтировать как ext4.

Кому будет полезна ext4

Важнейшим усовершенствованием ext4 является увеличение размеров тома и файла. Таким образом, ext4 будет в первую очередь востребована пользователями, которые используют более нескольких терабайт дискового пространства. Однако список функций в таблице 1 предоставляет и другие весьма привлекательные преимущества. Например, вы можете захотеть испробовать ext4, если вы используете каталоги с большим количеством подкаталогов или вам необходимо использовать временные метки с более высокой точностью, чем секунда.

Поскольку ext4 в настоящий момент является экспериментальной системой, для ее использования вам почти наверняка придется пересобрать ядро. Если для вас это сложная задача, вероятно, вы столкнетесь с трудностями при использовании ext4. В действительности экспериментальный характер ext4 означает, что вам следует использовать ее либо если вы хотите внести вклад в ее разработку, либо если вы остро нуждаетесь в каких-либо ее функциях. Если вам необходима проверенная поддержка больших дисков, вместо нее вы можете использовать файловые системы XFS или JFS, не дожидаясь выхода стабильного релиза ext4.

Естественно, ext4 не всегда будет экспериментальной. Со временем ext4 станет стабильной файловой системой. Когда это произойдет, ext4 будет практически для всех столь же хороша, как и ext3, с небольшими оговорками. Во-первых, по всей видимости, будут существовать ошибки, присущие только ext4, поэтому будьте внимательны первое время после выхода стабильного релиза. Во-вторых, использование ext4 может сделать невозможным использование старых утилит для доступа к вашему диску. Это может затронуть средства аварийного восстановления, поэтому возможно, перед обновлением стоит дождаться появления новых версий необходимых программ, поддерживающих ext4. Положительная сторона состоит в том, что миграция с ext3 на ext4 должна быть неразрушающей, что позволит выполнить переход легко и с сохранением имеющейся информации.

Компиляция и включение поддержки ext4

Если вы дочитали до этого места, вероятно, вы готовы поэкспериментировать с ext4. Для этого вам необходимо пересобрать ядро, чтобы добавить нужную функциональность. Рекомендую начать с последней версии ядра (на момент написания статьи это было ядро версии 2.6.24.4). После распаковки исходных кодов ядра либо настройте все параметры вручную, либо скопируйте файл .config старого ядра, выполните команду make oldconfig , чтобы скопировать ваши прежние настройки, и просмотрите параметры ядра с помощью привычной вам команды настройки, например make xconfig. Параметры ext4 расположены в основном разделе File Systems под названием Ext4dev/ext4 extended fs support development (EXPERIMENTAL). В будущем, по всей вероятности, это название изменится, когда ext4 станет стабильной. Обратите внимание: чтобы получить доступ к параметрам ext4, вам необходимо включить параметр Prompt for development and/or incomplete code/drivers.

Выбрав поддержку ext4, сохраните изменения ядра, скомпилировав его при помощи команды makeи установив модули при помощи команды make modules_install от имени суперпользователя root Затем необходимо скопировать скомпилированное ядро (из каталога arch/i386/boot или какого-либо другого) в соответствующее место (например, /boot), отредактировать параметры загрузчика GRand Unified Bootloader (GRUB) или Linux Loader (LILO) и перезагрузить компьютер. Если вы используете загрузочный RAM-диск, вам также необходимо подготовить его при помощи утилиты mkinitrd.

Кроме модулей ядра, вероятно, вы захотите познакомиться с версией программы e2fsprogs, поддерживающей системные функции ext4. Вы можете загрузить либо архив в формате tar (соответствующая ссылка есть в разделе Ресурсы), либо использовать git, как показано в листинге 1.

Листинг 1. Команда для получения последней версии e2fsprogs при помощи git

                
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ git checkout -b pu
Switched to a new branch "pu"
$ git branch
master
* pu
$ git pull git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pu

Обратите внимание, что вам может понадобиться установить git при помощи вашего менеджера пакетов. Данный продукт пока не был достаточно протестирован, поэтому не рекомендуется использовать его в корпоративных системах. Кроме того, в настоящий момент в нем не так уж много функций, действительно необходимых для поддержки ext4. Исходя из этого, возможно, лучше будет использовать пакет e2fsprogs, поставляемый с вашим дистрибутивом.

Процесс компиляции e2fsprogs совершенно стандартен: распакуйте пакет, перейдите в необходимый каталог при помощи команды cd, введите команду ./configure, введите команду make, введите команду (от имени суперпользователя root) make install. Данный процесс установки перезаписывает стандартный пакет e2fsprogs , поэтому запускайте его, только если вы уверены в том, что хотите использовать новейшую (и, возможно, нестабильную) версию этой программы.

Переход с ext3 на ext4

С момента загрузки ядра с поддержкой ext4 вы можете начать использовать новую файловую систему. Чтобы сделать это, вам необходимо подготовить раздел, RAID-массив или другое хранилище. Затем вы можете начать использовать его в качестве тома ext4 и настраивать параметры файловой системы.

Подготовка устройства

Если вы хотите начать с нуля, вы можете отформатировать раздел или другое устройство при помощи утилит mkfs.ext3 или mkfs.ext4, входящих в состав старого и нового пакета e2fsprogs соответственно. Например, команда mkfs.ext4 -j /dev/sda6 подготавливает для использования раздел /dev/sda6. Использование mkfs.ext4 позволяет активировать большее количество специфических функций ext4.

В настоящий момент изменения программ e2fsprogs не полностью соответствуют изменениям ядра файловой системы. К счастью, большинство функций драйвера ядра не требуют специальной подготовки при помощи mkfs.ext4 или других утилит. Функции ext4 активируются при монтировании соответствующего тома. Если вы хотите использовать ext4 с томами большого размера, вы будете одним из отважных первопроходцев, так что обязательно документируйте все проблемы, с которыми столкнетесь, и сообщайте о них!

Вы также использовать существующие тома ext2 или ext3 как ext4. Просто смонтируйте устройство, как описано ниже. Однако если вы используете новые функции, такие как экстенты, вы не сможете откатить изменения обратно к ext2 или ext3.

Использование ext4

Чтобы использовать устройство в качестве тома ext4, его необходимо смонтировать с кодом типа файловой системы ext4dev. Когда ext4 станет стабильной, код типа файловой системы изменится на ext4. Например, команда mount -t ext4dev /dev/sda6 /mnt/point монтирует раздел /dev/sda6 в качестве тома ext4 в каталог /mnt/point. Вот и все, что нужно для использования ext4. Обратите внимание, что по умолчанию при монтировании включаются экстенты, что изменяет файловую систему, делая невозможным откат к ext3. Если вы хотите испробовать ext4, но сохранить возможность возврата к ext3, отключите экстенты, указав параметр -o noextents.

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

Настройка параметров производительности ext4

Для настройки файловой системы ext4 можно использовать программу tune2fs, как и для ext2 и ext3. В настоящий момент tune2fs не поддерживает параметры, специфичные для ext4, хотя вы можете настраивать конкретные опции ext4, такие как экстенты, используя стандартный параметр -O.

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

Хотя монтирование тома ext3 в качестве тома ext4 активирует специфические функции ext4, само по себе монтирование не влечет за собой конвертацию старой структуры данных в новый формат. Например, для существующих файлов сохраняется поблочное выделение пространства вместо использования экстентов. Таким образом, старые файлы не пользуются новыми преимуществами. Разработчики ext4 учли этот факт и предложили решение: вы можете использовать (на свой страх и риск) программу e4defrag (описана ниже) для конвертирования выделений в экстенты. Другая новая утилита (пока не выпущена) будет изменять размеры inode под новый формат.

Обслуживание ext4

Для обслуживания ext4 вы можете использовать стандартные утилиты из набора e2fsprogs, например, tune2fs для настройки параметров после создания раздела, fsck.ext4 для исправления ошибок файловой системы и так далее. Эти программы мало отличаются от соответствующих версий для ext3. Хотя, как было отмечено ранее, ext4 содержит некоторые расширения, способствующие увеличению производительности fsck.

Кроме этих утилит, заслуживает отдельного упоминания еще одна программа – e4defrag. Она дефрагментирует подключенные тома ext4. Это может увеличить производительность, особенно если раздел заполнен почти полностью. Также эта программа способна конвертировать выделения, использовавшиеся в ext2/3, в выделения ext4 на основе экстентов, таким образом увеличивая производительность томов, ранее использовавших файловую систему ext3. К сожалению, e4defrag пока не входит в состав пакета e2fsprogs, поэтому вам придется искать ее отдельно (ссылка есть в разделе Ресурсы).

Добавить комментарий

Войти с помощью: