admin / 31.10.2018

13) Файловая система ext. Особенности ее реализации.

4 утилиты для устранения проблем файловых систем EXT2, EXT3 и EXT4 в Linux

Оригинал: 4 Tools to Manage EXT2, EXT3 and EXT4 Health in Linux
Автор: Aaron Kili
Дата публикации: 6 ноября 2017 года
Перевод: А. Кривошей
Дата перевода: январь 2018 г.

Файловая система — это структура данных, которая контролиролирует процесс хранения, чтения и записи данных в компьютерной системе. Файловая система также может рассматриваться как физический (или расширенный) раздел на диске. Если он не обслуживается должным образом, это может привести к повреждению или полной потере данных.

Определенные факторы могут привести к ошибкам работы файловой системы: сбои в работе операционной системы, сбои в работе оборудования или программного обеспечения, неисправные драйверы и программы, неправильная настройка, «жесткая» перегрузка и другие экзотические причины. Любая из этих проблем может привести к тому, что Linux не будет правильно монтировать (или отмонтировать) файловую систему, что приведет к сбою в работе системы.

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

В этой статье мы рассмотрим инструменты для мониторинга и поддержания работоспособности файловых систем ext2, ext3 и ext4. Все описанные здесь утилиты требуют привилегий пользователя root, поэтому для их запуска используйте команду sudo.

Как просмотреть информацию о файловой системе EXT2/EXT3/EXT4

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

Перед запуском dumpe2fs обязательно запустите команду df -hT, чтобы узнать имена устройств файловой системы.

$ sudo dumpe2fs /dev/sda10

Пример вывода

Для просмотра блоков, помеченных в файловой системе как плохие, используйте флаг -b:

$ dumpe2fs -b

Проверка файловых систем EXT2/EXT3/EXT4 на наличие ошибок

e2fsck используется для проверки файловых систем ext2/ext3/ext4 на наличие ошибок, а fsck проверяет и может при необходимости исправлять ошибки файловой системы Linux. Она, в основном, представляет собой интерфейс для утилит, проверяющих различные файловой системы, используемые в Linux (fsck.fstype, например fsck.ext3, fsck.sfx и т. д.).

Помните, что при загрузке системы Linux автоматически запускает e2fack/fsck на разделах, помеченных для проверки в конфигурационном файле /etc/fstab. Обычно это делается после того, как файловая система не была правильно отмонтирована.

Внимание: не запускайте e2fsck или fsck на смонтированных файловых системах, сначала отмонтируйте раздел, как показано ниже.

$ sudo unmount /dev/sda10 $ sudo fsck /dev/sda10

В качестве альтернативы вы можете включить подробный вывод с помощью ключа -V и указать тип файловой системы с помощью ключа -t:

$ sudo fsck -Vt ext4 /dev/sda10

Настройка файловых систем EXT2/EXT3/EXT4

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

Чтобы просмотреть содержимое суперблока файловой системы, включая текущие значения параметров, используется параметр -l.

$ sudo tune2fs -l /dev/sda10

Пример вывода:

Далее, с помощью флага -c, вы можете установить количество монтирований, после которого файловая система будет проверена утилитой e2fsck. Приведенная ниже команда указывает системе запустить e2fsck на /dev/sda10 после каждых 4 монтирований.

$ sudo tune2fs -c 4 /dev/sda10 tune2fs 1.42.13 (17-May-2015) Setting maximal mount count to 4

Вы также можете задать время между двумя проверками файловой системы с помощью опции -i. Приведенная ниже команда устанавливает интервал между проверками файловой системы 2 дня.

$ sudo tune2fs -i 2d /dev/sda10 tune2fs 1.42.13 (17-May-2015) Setting interval between checks to 172800 seconds

Теперь, если вы запустите приведенную ниже команду, будет установлен интервал проверки файловой системы для /dev /sda10.

$ sudo tune2fs -l /dev/sda10

Пример вывода:

Для изменения параметров ведения журнала по умолчанию используется параметр -J. Этот параметр также имеет подпараметры: size = journal-size (устанавливает размер журнала), device = external-journal (указывает устройство, на котором он хранится) и location = journal-location (определяет местоположение журнала).

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

$ sudo tune2fs -J size=4MB /dev/sda10

И последнее, но не менее важное: метку тома файловой системы можно задать с помощью опции -L, как показано ниже.

$ sudo tune2fs -L «ROOT» /dev/sda10

Отладка файловых систем EXT2/EXT3/EXT4

debugfs — простой, интерактивный консольный отладчик файловой системы ext2/ext3/ext4. Он позволяет изменять параметры файловой системы в интерактивном режиме. Чтобы просмотреть его команды или запросы, введите «?».

$ sudo debugfs /dev/sda10

По умолчанию файловая система должна быть открыта в режиме чтения-записи, для этого используется флаг -w. Чтобы открыть ее в аварийном режиме, используйте параметр -c.

Пример вывода:

debugfs 1.42.13 (17-May-2015) debugfs: ? Available debugfs requests: show_debugfs_params, params Show debugfs parameters open_filesys, open Open a filesystem close_filesys, close Close the filesystem freefrag, e2freefrag Report free space fragmentation feature, features Set/print superblock features dirty_filesys, dirty Mark the filesystem as dirty init_filesys Initialize a filesystem (DESTROYS DATA) show_super_stats, stats Show superblock statistics ncheck Do inode->name translation icheck Do block->inode translation change_root_directory, chroot ….

Для определения фрагментации свободного пространства используется запрос freefrag:

debugfs: freefrag

Пример вывода:

Device: /dev/sda10 Blocksize: 4096 bytes Total blocks: 86154752 Free blocks: 22387732 (26.0%) Min. free extent: 4 KB Max. free extent: 2064256 KB Avg. free extent: 2664 KB Num. free extent: 33625 HISTOGRAM OF FREE EXTENT SIZES: Extent Size Range : Free extents Free Blocks Percent 4K… 8K- : 4883 4883 0.02% 8K… 16K- : 4029 9357 0.04% 16K… 32K- : 3172 15824 0.07% 32K… 64K- : 2523 27916 0.12% 64K… 128K- : 2041 45142 0.20% 128K… 256K- : 2088 95442 0.43% 256K… 512K- : 2462 218526 0.98% 512K… 1024K- : 3175 571055 2.55% 1M… 2M- : 4551 1609188 7.19% 2M… 4M- : 2870 1942177 8.68% 4M… 8M- : 1065 1448374 6.47% 8M… 16M- : 364 891633 3.98% 16M… 32M- : 194 984448 4.40% 32M… 64M- : 86 873181 3.90% 64M… 128M- : 77 1733629 7.74% 128M… 256M- : 11 490445 2.19% 256M… 512M- : 10 889448 3.97% 512M… 1024M- : 2 343904 1.54% 1G… 2G- : 22 10217801 45.64% debugfs:

Вы можете использовать также множество других запросов, таких как создание или удаление файлов или каталогов, изменение текущего рабочего каталога и многое другое, просто почитайте краткое описание запросов. Для закрытия debugfs введите запрос q.

Другие статьи о мониторинге и обслуживании файловых систем в Linux:

Если вам понравилась статья, поделитесь ею с друзьями:


Изменение размера раздела ext2/ext3/ext4 без потери информации

Для чего нужен файловый формат .EXT?

Чаще всего расширение имени файла .ext встречается в качестве временного заменителя расширения (ext — сокращение от «extension», расширение). Такое временное расширение обычно присваивается файлам, создаваемым программно, если исходный тип файла неизвестен либо исходное расширение по какой-то причине утрачено. Это может быть следствием ошибок ПО, неправильной конфигурации ПО и др.

Такое явление не является необычным для файлов вложений в сообщениях электронной почты. Этим файлам вместо их исходных имени и расширения могут присваиваться стандартные имена вместе с временным заменителем расширения (напр., «ATT00001.ext«, «ATT00002.ext«).



Поскольку расширение .ext не обозначает никакой тип файлов, необходимо знать либо правильно определить исходный тип/формат файлов, отправленных в качестве вложений. Для каждого из таких файлов необходимо временное расширение .ext заменить вручную на расширение, соответствующее формату файла, после того, как файлы будут сохранены на диск. Часто внутренний формат файла можно определить по сигнатуре, находящейся в заголовке файла (для этого нужен шестнадцатеричный просмотрщик/редактор).


Применительно к Army Builder расширение .ext ассоциируется с форматом и типом файлов «Файл расширения» (Extension File, EXT). Army Builder — это коммерческое ПО от Lone Wolf Development для MS Windows/Mac OS X, предназначенное для автоматизации создания и ведения список личного состава боевых единиц в популярных онлайн-играх.

Файл расширения Army Builder (.ext) представляет собой двоичный файл данных, который позволяет расширять и/или дополнять структуры данных в исходных файлах без изменения последних. EXT-файлы используются в Army Builder как средство индивидуальной настройки («кастомайзинга»).


Помимо этого, расширение .ext применяется для обозначения формата/типа файлов «Сценарий расширенных свойств SQL» (SQL Extended Properties Script, EXT). Подобные файлы .ext являются служебными файлами SQL-разработчика и используются совместно с различным ПО из семейства Microsoft Visual Studio.

Программы для открытия или конвертации EXT файлов

Вы можете открыть файлы EXT с помощью следующих программ: 

На одном из серверов установлена свежая версия Ubuntu на недавно приобретенный жесткий диск, для которого в качестве базовой файловой системой была выбрана ext4. По графику процессорного времени системы мониторинга Zabbix видно, что у сервера высокий IOWait. С помощью утилит iostat и iotop были выявлены виновники столь высокой нагрузки. Ими оказались базы MySQL (активно используемые самим Zabbix‘ом) и процесс [jbd2/dm-0-8], который выполняет функцию журналирования файловой системы ext4. Причем нагрузка от второго была в разы больше, поэтому дальше будет описание процесса снижения воздействия новой файловой системы на нагрузку процессора.

Журналирование в новой файловой системе было включено не просто так, а для снижения рисков потери данных при всевозможных неожиданных сбоях в электропитании. Так как сервер, о котором идет речь в этой статье, подключен к бытовой электросети через источник бесперебойного питания, вероятность подобной проблемы крайне мала. Следовательно, можно практически безболезненно избавиться от процедуры «логирования всего и вся» в процессе работы системы.

Дисклеймер: последующие операции вы делаете на свой страх и риск, автор не несет никакой ответственности за убитые жесткие диски и потерянные важные данные.

По умолчанию в Ubuntu установлен режим journal_incompat_revoke, проверить текущее состояние можно, выполнив от учетной записи root следующую команду (указать свой раздел с ext4 вместо sdX):

dumpe2fs /dev/sdX |grep journal

Если сделать выборку по другому параметру, можно будет увидеть, ведется ли журнал:

dumpe2fs /dev/sdX |grep features

Вывод будет содержать строку с ««, если это так.

Переводим файловую систему в режим journal_data_writeback, который оставляет журналирование лишь для метаданных и тем самым заметно ускоряет производительность файловой системы:

  1. Загружаемся с LiveCD/LiveUSB или любым другим способом, чтобы можно было размонтировать раздел с файловой системой, требующей внесения изменений
  2. Выключаем журнал:
  3. Меняем режим журналирования
  4. Запускаем проверку
  5. Перезагружаемся
  6. Проверяем, применились ли изменения, командами dumpe2fs /dev/sdX |grep journal dumpe2fs /dev/sdX |grep features

Ниже представлены сравнительные графики процессорного времени и дисковых операций до и после отключения журнала:

До

После

До

После

До

После

Немного теории о возможных режимах работы файловой системы, для тех кто не устал:

* writeback mode
In data=writeback mode, ext4 does not journal data at all. This mode provides a similar level of journaling as that of XFS, JFS, and ReiserFS in its default mode — metadata journaling. A crash+recovery can cause incorrect data to appear in files which were written shortly before the crash. This mode will typically provide the best ext4 performance.

* ordered mode
In data=ordered mode, ext4 only officially journals metadata, but it logically groups metadata information related to data changes with the data blocks into a single unit called a transaction.

Файловые системы (FAT, NTFS, ZFS, ext3/ext4)

When it’s time to write the new metadata out to disk, the associated data blocks are written first. In general, this mode performs slightly slower than writeback but significantly faster than journal mode.

* journal mode
data=journal mode provides full data and metadata journaling. All new data is written to the journal first, and then to its final location.
In the event of a crash, the journal can be replayed, bringing both data and
metadata into a consistent state. This mode is the slowest except when data
needs to be read from and written to disk at the same time where it outperforms all others modes. Curently ext4 does not have delayed allocation support if this data journalling mode is selected.

Ссылки:

Запись опубликована автором xandros в рубрике IT, Linux с метками dumpe2fs, iowait, journal_data_writeback, tune2fs, [jbd2/dm-0-8].

Журналируемая файловая система сохраняет список изменений, которые она будет проводить с файловой системой, перед фактическим их осуществлением. Эти записи хранятся в отдельной части файловой системы, называемой журналом (англ.journal) или логом (англ.log). Как только изменения файловой системы внесены в журнал, она применяет эти изменения к файлам или метаданным, а затем удаляет эти записи из журнала. Записи журнала организованы в наборы связанных изменений файловой системы.

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

По типу внесения в журнал журналируемые ФС подразделяются на:[1]

  • в режиме обратной связи (журналируются только метаданные): XFS, ext3;
  • упорядоченные (журналируются только метаданные синхронно относительно данных): JFS2, ext3 (по умолчанию), ReiserFS (основной);
  • в режиме данных (журналируются как метаданные, так и данные): ext3;

Примеры

В Mac OS X — HFS+.

Во FreeBSD журналирование транзакций файловой системы UFS может осуществляться на уровне GEOM модулем gjournal.

В Linux существует несколько доступных журналируемых файловых систем. Наиболее известные из них:

  • XFS — журналируемая файловая система, разработанная Silicon Graphics, но сейчас выпущенная с открытым исходным кодом;
  • ReiserFS (Reiser4) — журналируемая файловая система разработанная специально для Linux;
  • JFS (JFS1 и JFS2) (Smart File System) — журналируемая файловая система, первоначально разработанная IBM, но сейчас выпущенная с открытым исходным кодом;
  • ext3 (extended file system) — журналируемое расширение (можно подключать и отключать (), а также выбирать режим журналирования) файловой системы ext2, используемой на большинстве версий GNU/Linux;
  • ext4 — логическое продолжение ext3;
  • btrfs — новая файловая система, изначально позиционирующаяся как аналог ZFS. Позволяет создавать RAID-массивы, подтома, снимки, сжимать данные на лету без использования сторонних инструментов. Считается стабильной с версии ядра Linux 4.3.1 (16.11.2015). [2]

Примечания

Литература

  • Робачевский А.

    Н., Немнюгин С. А., Стесик О. Л.Журнальные файловые системы / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд.

    Обзор EXT4 vs Btrfs vs XFS

    — СПб.: БХВ-Петербург, 2008. — С. 351 — 353. — 656 с. — ISBN 978-5-94157-538-1.

Файловая система ext4, ее сравнение, совместимость с ext3, а также переход c ext3 на ext4

Поддержка ext4 появилась в ядре Linux версии 2.6.28. Если сравнивать эту файловую систему с ext3, то производительность и надежность новой файловой системы существенно увеличена. Максимальный размер раздела доведен до 1014 петабайт (1 эксбибайт). Максимальный размер файла — более 2 Тбайт.

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

1) Увеличенный размер файла и файловой системы (Для ext3 максимальный размер файловой системы составляет 32 Тбайт, а файла — 2 Тбайт, но на практике ограничения были более жесткими. Так, в зависимости от архитектуры, максимальный размер тома составлял до 2 Тбайт, а максимальный размер файла -до 16 Гбайт.
В случае с ext4 максимальный размер тома составляет 1 эксбибайт (EiB) — это 260 байт. Максимальный размер файла составляет 16 Тбайт. Такие объемы информации пока не нужны обычным пользователям, однако весьма пригодятся на серверах, работающих с большими дисковыми массивами)

2)Экстенты (Основной недостаток ext3 — ее метод выделения места на диске.

unixforumorg

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

3) Отложенное выделение пространства (Файловая система ext4 может отложить выделение дискового пространства до последнего момента, что увеличивает производительность системы)

4) Контрольные суммы журналов (Контрольные суммы журналов повышают надежность файловой системы)

5) Большее количество каталогов (В ext3 могло быть максимум 32 000 каталогов, в ext4 количество каталогов не ограничивается)

6) Дефрагментация «налету» (Файловая система ext3 не особо склонна к фрагментации, но все же такое неприятное явление имеется.

В ext4 производится дефрагментация «на лету», что позволяет повысить производительность системы в целом)

7) Наносекундные временные метки (В большинстве файловых систем временные метки (timestamp) устанавливаются с точностью до секунды, в ext4 точность повышена до наносекунды. Также ext4 поддерживает временные метки до 25 апреля 2514 года, в отличие от ext3 (18 января 2038 г.))

Совместимость с ext3

Файловая система ext4 является прямо и обратно совместимой с ext3, однако Все же существуют некоторые ограничения. Предположим, что у нас на диске имеется файловая система ext4. Ее можно смонтировать и как ext3, и как ext4 (это и есть прямая совместимость) — и тут ограничений никаких нет. А вот с обратной совместимостью не все так безоблачно — если файловую систему ext4 смонтировать как ext3, то она будет работать без экстентов, что снизит ее производительность.

Переход на ext4

Если вы при установке системы выбрали файловую систему ext3, то перейти на ext4 можно без потери данных> и в любой удобный для вас момент. Откройте терминал и введите команду:

sudo tune2fs -О extents,uninit_bg,dir_index /dеv/имя_устройства

На момент ввода этой команды устройство должно быть размонтировано.

ВНИМАНИЕ!

Если нужно преобразовать в ext4 корневую файловую систему, то данную команду нужно вводить с LiveCD, поддерживающего ext4.

После этого проверим файловую систему:

sudo fsck -pf /dev/имя_устройства

Затем смонтируем файловую систему так:

mount -t ext4 /dev/имя_устройства /точка_монтирования
mount -t ext4 /dev/disk/by-uuid/UUID-устройства /точка_монтирования

Если раздел автоматически монтируется через /etc/fstab, не забудьте исправить файловую систему на ext4:

UUID=UUID-раздела /точка ext4 defaults,errors=remount-ro,relatime
О 1

Если вы изменили тип файловой системы корневого раздела, тогда необходимо отредактировать файл /boot/grub/menu.lst и добавить опцию rootfstype=ext4 в список параметров ядра, например:
title Linux
root (hdO,l)
kernel /boot/vmlinuz-2.6.28.1 root=UUID=879f797c-944d-4c28-a720-249730705714 ro quiet splash rootfstype=ext4
initrd /boot/initrd.img-2.6.28.1
quiet

(по материалам Книги)

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*