DataLife Engine / Ext4: Секрет стабильности вашего Linux

Ext4: Секрет стабильности вашего Linux

В большинстве современных дистрибутивов Linux по умолчанию используется файловая система Ext4. В предыдущих версиях использовалась Ext3, ещё раньше Ext2 и если вернуться достаточно далеко, то и Ext. Без сомнения, на момент написания статьи, это самая популярная файловая система для Linux.

В этой статье мы поговорим об истории развития Ext4, разберемся чем она отличается от Ext, Ext2 и Ext3, с чего всё началось, а также рассмотрим основные возможности этой файловой системы в наше время.


Содержание статьи

Краткая история Ext4

Прежде чем появилась файловая система Ext существовала файловая система MINIX. Если вы не знакомы с историей развития Unix, раньше существовала небольшая операционная система MINIX, которая работала на IBM PC. Эндрю Танненбаум разработал её для обучения и выпустил исходный код в 1987 году.

Эта операционная система не была бесплатной. Она прилагалась к книге, которая стояла 69 долларов. Однако, это было не очень дорого, поэтому девяностых годах MINIX начали внедрять повсеместно. Благодаря чему молодой Линус Торвальдс разработал своё ядро Linux на основе MINIX и выпустил его в 1992 году.

Так вот. У MINIX была своя файловая система, которую и использовали первые версии Linux. Она могла работать с хранилищами до 64 мегабайт, а размер имён файлов не мог превышать 14 символов. В 1991 году средний размер жестких дисков был 40-140 мегабайт, поэтому для Linux было нужно что-нибудь другое.

Именно по этой причине Реми Кард в 1992 году разработал первую файловую систему семейства Ext. Она решала большинство проблем MINIX. Новая файловая система использовала новую прослойку VFS в ядре Linux и теперь могла работать с дисками до 2 гигабайт, а имена файлов могли состоять из 255 символов. Но у Ext был один недостаток. Она имела только одну временную метку для файла, вместо теперешних трёх: даты создания, даты доступа и даты модификации.

Реми Кард очень быстро создал Ext, и за следующий год он разработал Ext2 для её замены. Это уже была серьёзная файловая система коммерческого уровня. Она была быстро реализована в ядре Linux и MINIX, а затем и внешних модулях, которые сделали её доступной для Windows и MacOS. Здесь были снова увеличены лимиты файловой системы, однако у неё оставалась ещё одна проблема. Как и все файловые системы того времени, при выключении питания в момент записи файловая система становилась неработоспособной.

Чтобы это исправить в была разработана Ext3. Она уже использовала журналирование, как и файловая система от Microsoft - NTFS. Журнал, это специальное место на диске, куда записываются все операции с файловой системой. При чём для самой файловой системы они применяются только после того, как будут полностью записаны на диск. Если возникает ошибка, то файловая система просто откатывается до предыдущей версии из журнала. Для Ext4 существует три уровня работы с журналированием:

Как и в Ext2, в Ext3 используется 16-ти битная адресация, это значит, что при размере блока 4 килобайта самый большой файл может иметь размер 2 терабайта, а максимальный размер файловой системы - 16 терабайт.

Файловая система Ext4 была анонсирована в 2006 году и ею занимался уже другой разработчик. Его имя Теодор Цо. Журналирование Ext4 тоже поддерживается. В ядро Linux эта файловая система попала спустя два года после анонса. Файловая система значительно расширила возможности Ext4, но по прежнему опиралась на старую технологию.

Ext4 была совместима с Ext3 и старую файловую систему можно было с легкостью конвертировать в новую. Кроме того, драйвер Ext4 может монтировать файловую систему в режиме Ext3, поэтому теперь нет необходимости поддерживать две отдельных кодовых базы.

Новая версия уже использует 48-битную адресацию, поэтому максимальный размер файла может быть 16 терабайта, а файловой системы один экзабайт. Первые версии Ext4 все ещё были ограничены размером раздела в 16 терабайт, но в 2011 году в утилитах из пакета e2fsprogs появилась поддержка файловых систем размером больше 16 терабайт.

Ещё одно улучшение по сравнению с Ext3 - это то, что блоки данных выделяются до записи их на диск, что тоже значительно увеличивает как производительность чтения так и записи. Кроме того, в файловую систему были добавлены екстенты. Это блоки до 128 мегабайт, которые можно резервировать и обращаться к ним по одному адресу. Это уменьшает количество Inode необходимых для записи одного файла, а также увеличивает производительность.

Одним из ограничений Ext3 была максимальная вложенность подкаталогов - 32 000. Начиная с ядра 2.6.23 в Ext4 улучшена работа с большим количеством подкаталогов и теперь их может быть неограниченное количество.

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

Разработка Ext4

Несмотря на то, что файловая система очень старая по меркам компьютерной индустрии, она всё ещё активно разрабатывается, хотя её разработчики и рассматривают эту файловую систему как временную, пока её не заменит файловая система следующего поколения. Есть ещё несколько вещей, которые активно разрабатываются.

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

Плюсы и минусы Ext4

К плюсам этой файловой системы можно отнести такие её особенности:

Минусов у файловой системы тоже хватает:

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

Я уже подробно рассказывал как создавать разделы Ext3 и Ext4 в отдельной статье. Сегодня я упомяну об этом только кратко. Чтобы создать раздел Ext4 выполните:

sudo mkfs -t ext4 /dev/sdb1

Ext4: Секрет стабильности вашего Linux

Здесь /dev/sdb1 - имя вашего раздела, на котором надо создать файловую систему. Куда интереснее разобраться с опциями монтирования Ext4:

Здесь перечислены далеко не все опции, а только самые интересные. Более подробное описание опций монтирования смотрите выполнив команду:

man ext4

Монтирование Ext4 выполняется с помощью команды mount:

sudo mount /dev/sdb1 /mnt

Ext4: Секрет стабильности вашего Linux

Во время монтирования можно указать желаемые опции, например:

sudo mount -o data=journal,commit=60,noatime /dev/sdb1 /mnt

Ext4: Секрет стабильности вашего Linux

Например, здесь мы включили максимальный уровень журналирования, увеличили время между записями данных в файловую систему из журнала до 60 секунд, а также отключили обновление метки atime. Аналогично, опции можно задать в /etc/fstab. Для этого добавьте их в четвертую колонку строки монтирования диска:

/dev/sdb1 / ext4 defaults,data=journal,commit=60,noatime 1 0

Ext4: Секрет стабильности вашего Linux

Параметр defaults удалять не следует, просто добавляйте нужные вам опции после него.

Выводы

В этой статье мы рассмотрели историю файловой системы Ext4, а также её основные опции, монтирования, а также как и где их указывать. Про настройку Ext4 уже подробно рассказано в другой статье, поэтому здесь я решил не повторяться. А какие опции монтирования используете вы? Напишите в комментариях!

18-10-2025, 15:00
Вернуться назад