Как посмотреть журнал файловой системы ext4

Обновлено: 06.07.2024

Оригинал: 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, чтобы узнать имена устройств файловой системы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как узнать какой сейчас уровень журналирования? Те сведения, что я получаю, они противоречивы. Кому верить?

dmesg говорит, что dm-3 смонтирован в режиме ordered data:

dm-3 это мой HOME:

Если посмотреть на вывод tune2fs

то обнаружим, что дефолтные опции монтирования (Default mount options) включают journal_data, но почему в demesg ordered data? Где реальность и как узнать, какой сейчас используется режим журналирования ФС?

mount не показывает дефолтные опции монтирования:



в процессе загрузки выполняется команда mount -o remount,rw,data=ordered, возможно в /etc/fstab (там делается mount -a), если не найдёшь в fstab, то грепай по скриптам инициализации.

в tune2fs же всё верно, стоит journal_data. которая будет, при монтировании по-умолчанию простым mount без параметров.

Смотри /proc/mounts или dmesg.
tune2fs показывает то, что хранится в суперблоке, и не отражает текущие опции монтирования.


Да ничего не ясно с журналированием тоже:

dva20 ( 15.03.20 16:27:10 )
Последнее исправление: dva20 15.03.20 16:28:11 (всего исправлений: 1)


Погрепал, есть какая-то запись мне непонятная, не могу уловить о чём она (последняя строчка), что это значит? Какие новые опции монтирования не совпадают с опциями суперблока и будут проигнорированы? Т.е, что это значит, какие опции после загрузки ОС действуют, из суперблока или нет?


теперь погрепайте юниты, ls /etc/systemd/system/ | grep mount, надо найти тот юнит, который перемонтирует корневую / фс и починить его как вам надо.

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

вот, посмотрите, у человека проблема в которой он не может разобраться, при этом человек вполне шаристый, просто ему этот systemd не всрался, — ему сначала приходится разбираться с systemd, чтобы решить свою проблему. а будь там system v, всё бы на поверхности лежало.

ЗЫ. можете добавить тэг systemd, пускай эти клоуны начнут оправдываться в треде.

Spoofing ★★★★★ ( 15.03.20 16:42:45 )
Последнее исправление: Spoofing 15.03.20 16:46:04 (всего исправлений: 1)


Да, обнаружился такой сервис:

Вот что говорит man об этом:

Если кратко, то этот сервис перемонтирует kernel API file system с праметрами монтирования прописанными в /etc/fstab. А в fstab у меня там стоит defaults на все EXT4:

Получается, что этот сервис перемонтирует только корневую ФС, а мой home не трогает.

Остаётся для меня загадка, в каком режиме журналирования ФС на HOME сейчас находится. Больше нет никаких утилит, запросов в виртуальные ФС ядра (/sys/, /proc, что там еще?) сделать запрос и узнать?

dva20 ( 15.03.20 17:00:29 )
Последнее исправление: dva20 15.03.20 17:01:24 (всего исправлений: 1)

Насколько знаю, mount не показывает опции по умолчанию в документации. Согласно man’у по умолчанию data=ordered .


В процессе загрузки и эксплуатации системы смонтировать/перемонтировать сервисы могут много раз с разными опциями, только вот как узнать текущие значения или последнюю перемонтировку?

В man’е о дефолтных опциях сказано следующее

Заглядываем в /proc/mounts :

и тут тоже не ясно, есть ли журналирование, нет ли его и какой режим?

Чтобы не быть в простанстве вымыслов. Есть /proc/fs/ext4 . Думаю, там есть много интересного.


Ох уж это двоевластие!

в /sys/fs/ext4/ находится вторая половина информации.


Похоже на то, что это текущие опции:

Спасибо! Так было очевидно прошерстить этот каталог, но я почему-то пошёл не легким путём в начале ))) Ну да ладно… Спасибо всем ответившим!


Ну так хорошо, а дальше что? Как поменять на другой режим теперь?

Просто мы снова видим изначальный выхлоп:

Gonzo ★★★★★ ( 16.03.20 16:05:42 )
Последнее исправление: Gonzo 16.03.20 16:07:16 (всего исправлений: 1)


Пока я разбирался что к чему, то сам «накрутил» и установил в суперблоке «journal», но не перезагрузился, так как это была точка монтирования - /home. Запутался вообщем в порядке своих действий, познаю так сказать азы 😄

Как только перезагрузился, всё пришло в соответствие, /home стал в режиме journal как и прописал его в суперблоке. Зато разобрался как это работает, и что если даже режим прописан в суперблоке, то это еще ничего не значит, в процессе загрузки ОС какой-нибудь сервис systemd может перемнтировать в ordered или что-то другое ))

Ну так хорошо, а дальше что? Как поменять на другой режим теперь?

На выбор, один из режимов ниже, и в /etc/fstab ничего не трогать, т.е. оставить опцию defaults :

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

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

В этой статье мы рассмотрим как выполняется работа с файловой системой Linux в терминале. За основу возьмем семейство файловых систем ext2/3/4, так как они самые распространенные среди большого многообразия дистрибутивов Linux.

Основные команды

Для управления файловой системой ext в Linux используется целый набор команд из пакета e2progs. Сюда входят как команды для управления флагами файлов, создания и изменения файловых систем, так и утилиты для отладки файловой системы.

Рассмотрим основные утилиты, которые будем использовать:

  • badblocks - если у вас старый жесткий диск и на нем накопилось много битых блоков, вы можете с помощью этой утилиты пометить их все на уровне файловой системы, чтобы больше не использовать.
  • e2label - позволяет изменить метку раздела с файловой системой ext.
  • fsck - проверка файловой системы linux и исправление найденных ошибок
  • mkfs - позволяет создать файловую систему Linux.
  • resize2fs - изменить размер раздела с файловой системой
  • tune2fs - позволяет изменить файловую систему Linux, настроить ее параметры.

А теперь будет рассмотрена работа с файловой системой linux на примерах.

Работа с файловой системой в Linux

Перед тем как переходить к работе с реальным жестким диском важно попрактиковаться. Если сменить метку или проверить на битые сектора можно и рабочий диск, то создавать новую файловую систему, изменять ее размер, рискуя потерять данные на реальном диске не рекомендуется. Можно отделить небольшой раздел диска для экспериментов с помощью Gparted и выполнять все действия в нем. Допустим, у нас этот раздел будет называться /dev/sda6.

Создание файловой системы

Создать файловую систему linux, семейства ext, на устройстве можно с помощью команды mkfs. Ее синтаксис выглядит следующим образом:

sudo mkfs -t тип устройство

Доступны дополнительные параметры:

  • -с - проверить устройство на наличие битых секторов
  • -b - размер блока файловой системы
  • -j - использовать журналирование для ext3
  • -L - задать метку раздела
  • -v - показать подробную информацию о процессе работы
  • -V - версия программы

Создаем файловую систему на нашем устройстве. Будем создавать ext3:

sudo mkfs -t ext4 -L root /dev/sda6

Creating filesystem with 7847168 4k blocks and 1962240 inodes
Filesystem UUID: 3ba3f7f5-1fb2-47af-b22c-fa4ca227744a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Изменение метки файловой системы

Утилита e2label позволяет изменить или посмотреть метку раздела диска. Принимает всего два параметра - устройство и новую метку если нужно.

sudo e2label /dev/sda6

sudo e2label /dev/sda6 root1

Настройка файловой системы linux

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

Синтаксис команды очень прост:

$ tune2fs опции устройство

Поддерживаются следующие опции:

  • -j - создать файл журнала. Позволяет превратить файловую систему ext2 в ext3.
  • -J - настроить параметры журнала
  • -l - получить содержимое суперблока
  • -L - изменить метку раздела
  • -m - изменить процент дискового пространства, зарезервированного для суперпользователя
  • -M - изменить последнюю папку монтирования
  • -U - задать UUID файловой системы
  • -C - изменить значение счетчика монтирования
  • -T - изменить последнюю дату проверки файловой системы
  • -с - изменить периодичность проверок файловой системы с помощью fsck
  • -O - изменить опции файловой системы.

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

sudo tune2fs -m 5 /dev/sda6

Setting reserved blocks percentage to 5% (392358 blocks)

Посмотреть информацию из суперблока, эта команда показывает всю доступную информацию параметрах файловой системы:

Изменить счетчик количества монитрований:

tune2fs -C 0 /dev/sda6

Setting current mount count to 0

Думаю тут смысл понятен, нужно только немного со всем этим поэкспериментировать.

С помощью опции -O мы вообще можем превратить нашу ext3 в ext4 следующей командой:

sudo tune2fs -O extents,uninit_bg,dir_index

После этого действия нужно выполнить проверку файловой системы на ошибки в fsck. Подробнее об этом поговорим ниже.

sudo fsck -np /dev/sda6

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

Изменение размера файловой системы Linux

Раньше такая функция поддерживалась в утилите parted, но потом ее убрали и для этого действия приходится использовать утилиту из набора e2fsprogs - resize2fs.

Запустить утилиту очень просто. Ей нужно передать всего два параметра:

$ resize2fs [опции] устройство размер

Доступны также опции:

  • -M уменьшить файловую систему до минимального размера
  • -f - принудительное изменение, не смотря на потерю данных
  • -F - очистить буфер файловой системы

Размер передается, как и во многих других утилитах, целым числом с указанием единиц измерения, например, 100М или 1G.

Для примера уменьшим размер нашего раздела до 400 Мегабайт:

sudo resize2fs /dev/sda6 400M

Resizing the filesystem on /dev/sda7 to 102400 (4k) blocks.
The filesystem on /dev/sda7 is now 102400 blocks long

Проверка файловой системы Linux

При неправильном отключении носителей или неожиданном отключении питания, файловая система Linux может быть повреждена. Обычно проверка корневой файловой системы и домашнего каталога на ошибки выполняется во время загрузки. Но если эта проверка не была выполнена или нужно поверить другой носитель, придется все делать вручную. Для этого есть утилита fsck.

$ fsck [опции] устройство

  • -p - автоматическое восстановление
  • -n - только проверка, без восстановления
  • -y - ответить да на все запросы программы
  • -с - проверить на битые сектора (аналог badblocks
  • -f - принудительная проверка, даже если раздел помечен как чистый
  • -j - внешний журнал файловой системы

Проверка файловой системы Linux выполняется такой командой, проверим диск /dev/sda6, заметьте, что диск должен быть не примонтирован:

sudo fsck -a /dev/sda6

root: clean, 11/32704 files, 37901/102400 blocks

Дефрагментация файловой системы

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

Чтобы проверить нужна ли дефрагментация в Linux выполните эту же команду с опцией -c:

Total/best extents 26247/24953
Average size per extent 1432 KB
Fragmentation score 0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This device (/dev/sda6) does not need defragmentation.
Done.

В поле Fragmentation score отображен процент фрагментации, как видите, у меня 0, нормой считается до 30, 31-55 небольшие проблемы, и больше 56 - нужна дефрагментация.

Выводы

В одной из предыдущих статей мы рассмотрели как выполняется разметка диска с помощью parted. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!

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

Непосредственно проверьте документацию, предоставленную ядром, например, linux-4.4.4:

В этом документе описаны три режима журналирования файловой системы ext4, как показано на рисунках 1 и 2:



Из содержания приведенного выше рисунка видно, что существуют три режима журнала:journal、ordered、writeback. Упорядоченный режим со знаком * - это режим по умолчанию.

1. journal

Режим data = journal обеспечивает полный журнал блоков данных и метаданных.Все данные сначала записываются в журнал, а затем записываются на диск (энергонезависимый носитель данных после сбоя питания). Когда файловая система выходит из строя, журнал можно воспроизвести, чтобы вернуть данные и метаданные в согласованное состояние.Производительность режима журнала является самой низкой среди трех режимов, потому что все данные должны записываться в журнал. Этот режим не поддерживает выделение и O_DIRECT.

2. ordered(*)

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

3. writeback

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

Доброго дня!

К сожалению "обычная" версия Windows не позволяет работать с дисками, отформатированными в файловые системы (ФС) Ext2, Ext3, Ext4 (используются в Linux). Всё, что доступно — это узнать о их существовании в управлении дисками, а вот скопировать файл — уже проблема.

Наиболее сподручный и самый удобный вариант (на мой взгляд) — установить в Windows спец. драйвер, который позволит ОС работать с дисками Ext2/3/4 также, как если бы они были отформатированы в NTFS (скажем). Т.е. любая программа в Windows (тот же проводник) сможет в обычном режиме работать с диском. Удобно?

Теперь о том, "что" выбрать.

ускорение ПК

Как «прочитать» информацию на разделах с файловыми системами Ext2, Ext3, Ext4

Способ 1 (через спец. драйвер)

Подобные "драйверы" есть от нескольких производителей. Я бы выделил продукт от Paragon (ссылка на офиц. сайт с драйвером). Почему:

  1. поддержка ФС: Ext2, Ext3, Ext4 (чтение + запись); Btrfs, XFS (только чтение);
  2. после установки драйвера — ничего "делать" не нужно: просто Windows начинает видеть накопители с Ext4+;
  3. совместим с ОС Windows 7/8/10 (плюс есть пробный период, которого хватает для возникшей задачи (обычно)).

Драйвер от Paragon

Драйвер от Paragon

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

Главное окно (Linux File Systems for Windows by Paragon Software)

Главное окно (Linux File Systems for Windows by Paragon Software)

На скрине ниже привел окно проводника: как видите, раздел отображает как "обычный" — на него также можно что-нибудь скопировать / удалить.

Этот компьютер — диски с ФС EXT4 появились в проводнике

На Sourceforge можно также найти бесплатный драйвер файловой системы Ext2/3/4 для Windows 7/8/10* (ориг. название: Ext2Fsd).

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

Продукт от Paragon, конечно, выигрывает.

Способ 2 (через дополнения к TC)

TC — это сокращенное название файлового коммандера Total Commander (некая замена проводнику). К этой программе есть очень много плагинов, и, разумеется, для чтения Ext2/3/4 ФС тоже есть!

Покажу по шагам, как в нем открыть подобный раздел диска.

1) Сначала устанавливаем сам Total Commander. Ссылка на офиц. сайт.

2) Далее необходимо загрузить плагин DiskInternals Reader с офиц. сайта (он идет в архиве ZIP - извлекать не нужно).

Запуск TC от имени админа

Запуск TC от имени админа

Установка плагина

DiskInternals Reader

Файлы читаются, можно копировать

Файлы читаются, можно копировать

Способ 3 (с помощью LiveCD)

2) Загруженный ISO-файл с нужной версией дистрибутива Linux необходимо правильно записать на флешку.

3) Далее останется только загрузиться с этой флешки с помощью Boot Menu (вызывается сразу после вкл. ПК). Если вы выберите дистрибутив Linux для новичка — то работать с ним весьма просто (ничуть не сложнее, чем с проводником Windows).

Читайте также: