Ext3 проверить на ошибки

Оригинал: 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:

  • Pyinotify – мониторинг изменений файловой системы Linux в режиме реального времени
  • Inotify-tools: осуществляем мониторинг изменении файловой системы в Linux
  • Мониторинг файловых операций с помощью демона auditd
  • Повреждение файловой системы после отключения питания или система рухнула

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


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

Но если питание выключается неожиданно, часть данных теряется, и могут быть потерянны важные данные, что приведет к повреждению самой файловой системы. В этой статье мы рассмотрим как восстановить файловую систему fsck, для нескольких популярных файловых систем, а также поговорим о том, как происходит восстановление ext4.

Немного теории

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

Современные файловые системы делятся на два типа — журналируемые и нежурналируемые. Журналиуемые файловые системы записывают в лог все действия, которые собираются выполнить, а после выполнения стирают эти записи. Это позволяет очень быстро понять была ли файловая система повреждена. Но не сильно помогает при восстановлении. Чтобы восстановить файловую систему linux необходимо проверить каждый блок файловой системы и найти поврежденные сектора.

Для этих целей используется утилита fsck. По сути, это оболочка для других утилит, ориентированных на работу только с той или иной файловой системой, например, для fat одна утилита, а для ext4 совсем другая.

В большинстве систем для корневого раздела проверка fsck запускается автоматически, но это не касается других разделов, а также не сработает если вы отключили проверку.

В этой статье мы рассмотрим ручную работу с fsck. Возможно, вам понадобиться LiveCD носитель, чтобы запустить из него утилиту, если корневой раздел поврежден. Если же нет, то система сможет загрузиться в режим восстановления и вы будете использовать утилиту оттуда. Также вы можете запустить fsck в уже загруженной системе. Только для работы нужны права суперпользователя, поэтому выполняйте ее через sudo.

А теперь давайте рассмотрим сам синтаксис утилиты:

$ fsck [опции] [опции_файловой_системы] [раздел_диска]

Основные опции указывают способ поведения утилиты, оболочки fsck. Раздел диска — это файл устройства раздела в каталоге /dev, например, /dev/sda1 или /dev/sda2. Опции файловой системы специфичны для каждой отдельной утилиты проверки.

А теперь давайте рассмотрим самые полезные опции fsck:

  • -l — не выполнять другой экземпляр fsck для этого жесткого диска, пока текущий не завершит работу. Для SSD параметр игнорируется;
  • -t — задать типы файловых систем, которые нужно проверить. Необязательно указывать устройство, можно проверить несколько разделов одной командой, просто указав нужный тип файловой системы. Это может быть сама файловая система, например, ext4 или ее опции в формате opts=ro. Утилита просматривает все файловые системы, подключенные в fstab. Если задать еще и раздел то к нему будет применена проверка именно указанного типа, без автоопределения;
  • -A — проверить все файловые системы из /etc/fstab. Вот тут применяются параметры проверки файловых систем, указанные в /etc/fstab, в том числе и приоритетность. В первую очередь проверяется корень. Обычно используется при старте системы;
  • -C — показать прогресс проверки файловой системы;
  • -M — не проверять, если файловая система смонтирована;
  • -N — ничего не выполнять, показать, что проверка завершена успешно;
  • -R — не проверять корневую файловую систему;
  • -T — не показывать информацию об утилите;
  • -V — максимально подробный вывод.

Это были глобальные опции утилиты. А теперь рассмотрим опции для работы с файловой системой, их меньше, но они будут более интересны:

  • -a — во время проверки исправить все обнаруженные ошибки, без каких-либо вопросов. Опция устаревшая и ее использовать не рекомендуется;
  • -n — выполнить только проверку файловой системы, ничего не исправлять;
  • -r — спрашивать перед исправлением каждой ошибки, используется по умолчанию для файловых систем ext;
  • -y — отвечает на все вопросы об исправлении ошибок утвердительно, можно сказать, что это эквивалент a.
  • -c — найти и занести в черный список все битые блоки на жестком диске. Доступно только для ext3 и ext4;
  • -f — принудительная проверка файловой системы, даже если по журналу она чистая;
  • -b — задать адрес суперблока, если основной был поврежден;
  • -p — еще один современный аналог опции -a, выполняет проверку и исправление автоматически. По сути, для этой цели можно использовать одну из трех опций: p, a, y.

Теперь мы все разобрали и вы готовы выполнять восстановление файловой системы linux. Перейдем к делу.

Как восстановить файловую систему в fsck

Допустим, вы уже загрузились в LiveCD систему или режим восстановления. Ну, одним словом, готовы к восстановлению ext4 или любой другой поврежденной ФС. Утилита уже установлена по умолчанию во всех дистрибутивах, так что устанавливать ничего не нужно.

Восстановление файловой системы

Если ваша файловая система находится на разделе с адресом /dev/sda1 выполните:

sudo fsck -y /dev/sda1

fsck3

Опцию y указывать необязательно, но если этого не сделать утилита просто завалит вас вопросами, на которые нужно отвечать да.

Восстановление поврежденного суперблока

Обычно эта команда справляется со всеми повреждениями на ура. Но если вы сделали что-то серьезное и повредили суперблок, то тут fsck может не помочь. Суперблок — это начало файловой системы. Без него ничего работать не будет.

Но не спешите прощаться с вашими данными, все еще можно восстановить. С помощью такой команды смотрим куда были записаны резервные суперблоки:

sudo mkfs -t ext4 -n /dev/sda1

fsck1

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

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

sudo fsck -b 98304 /dev/sda1

fsck2

После этого, скорее всего, вам удастся восстановить вашу файловую систему. Но рассмотрим еще пару примеров.

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

Проверим файловую систему, даже если она чистая:

sudo fsck -fy /dev/sda1

fsck4

Битые сектора

Или еще мы можем найти битые сектора и больше в них ничего не писать:

sudo fsck -c /dev/sda1

fsck5

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

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

sudo fsck -t ext4 /dev/sdb1

fsck6

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

С помощью флага -A вы можете проверить все файловые системы, подключенные к компьютеру:

sudo fsck -A -y

Но такая команда сработает только в режиме восстановления, если корневой раздел и другие разделы уже примонтированы она выдаст ошибку. Но вы можете исключить корневой раздел из проверки добавив R:

sudo fsck -AR -y

Или исключить все примонтированные файловые системы:

sudo fsck -M -y

Также вы можете проверить не все файловые системы, а только ext4, для этого используйте такую комбинацию опций:

sudo fsck -A -t ext4 -y

Или можно также фильтровать по опциям монтирования в /etc/fstab, например, проверим файловые системы, которые монтируются только для чтения:

sudo fsck -A -t opts=ro

Проверка примонтированных файловых систем

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

sudo mount -o remount,ro /dev/sdb1

А теперь проверка файловой системы fsck в принудительном режиме:

sudo fsck -fy /dev/sdb1

fsck7

Просмотр информации

Если вы не хотите ничего исправлять, а только посмотреть информацию, используйте опцию -n:

sudo fsck -n /dev/sdb1

fsck8

Выводы

Вот и все, теперь вы знаете как выполняется восстановление файловой системы ext4 или любой другой, поддерживаемой в linux fsck. Если у вас остались вопросы, спрашивайте в комментариях!

На десерт сегодня видео на английском про различия файловых систем ext4 и xfs, как обычно, есть титры:

https://www.youtube.com/watch?v=pECp066gGcY

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

В моей статье «Проверка файловой системы на ошибки с помощью fsck на Linux» я расскажу как можно проверить файловую систему на вашей ОС в Linux.

Некоторым системам необходим пароль root чтобы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В этом случае –стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с другого диска.

Fsck расшифровывается как «файловая система Проверка целостности» (file system consistency check). На большинстве систем, Fsck запускается во время загрузки, если определенные условия.

Сам Fsck команда взаимодействует с соответствующей файловой системой конкретных FSCK команд, созданной авторами файловой системы. Независимо от типа вашей файловой системы, Fsck как правило, имеет три режима работы:

  1. Проверка на наличие ошибок и подсказывает пользователю интерактивное решение, как решить индивидуальные проблемы;
  2. Проверка на наличие ошибок и постарается автоматически исправить все ошибки;
  3. Проверка на наличие ошибок без возможности восстановить их, но тогда выдаст ошибки на стандартный вывод.

Код выхода возвращается FSCK это уникальный номер, представляющего собой сумму следующих значений состояния:

0 — Без ошибок (No errors ).
1 — Исправлены ошибки файловой системы(Filesystem errors corrected).
2 — Система должна быть перезагружена (System should be rebooted).
4 — Ошибки файловой системы оставили без изменений (Filesystem errors left uncorrected).
8 — Эксплуатационная ошибка (Operational error).
16 — Ошибки при использовании или синтаксические ошибки (Usage or syntax error).
32 — Fsck отменен по запросу пользователя (Fsck canceled by user request).
128 — Ошибка общей библиотеки (Shared-library error).

Код выхода возвращается, когда несколько файловых систем которая проверяется побитовое ИЛИ (OR) для каждой файловой системы, которая проверяется.

В действительности, Fsck — это просто фронт-энд для различных  проверочных утилит для файловых систем (fsck.fstype), которые доступны на Linux.

Файловая система для конкретных проверок ищет сначала в /sbin, а затем в /etc/fs и /etc/, и, наконец в директориях, перечисленных в переменной PATH (среда переменного кружения).

Прочитайте мануал для конкретных страниц проверки, например, чтобы узнать больше о конкретных проверок  для ext3 FSCK, выполните:

$ man fsck.ext3

Опции FSCK.

Основные Опции.

-l

Блокировка целого дискового устройства эксклюзивным flock. Этот параметр может быть использован только с одного устройства (это означает, что -A и -l являются взаимоисключающими). Эта опция рекомендуется, когда несколько экземпляров FSCK выполняются в то же время. Параметр игнорируется, когда используется для нескольких устройств или для невращающихся дисков. Fsck не блокируется базовые устройства при выполнении проверки сложенных устройств (например, MD или DM); эта функция еще не реализована.

-s

Сериализация FSCK операций. Это отличная идея, если вы проверяете несколько файловых систем в интерактивном режиме. (Примечание. E2fsck работает в интерактивном режиме по умолчанию. Чтобы запустить e2fsck в не-интерактивном режиме, необходимо указать -p или -a, если вы хотите чтобы все ошибки исправлялись автоматически используйте опцию -n если вы не делаете.)

-t

Задает тип (ы) файловой системы которые должны быть проверены. Когда флаг -A, используется только файловые системы, которые соответствуют fslist проверяются. Fslist параметр разделенный запятыми список файловых систем и опционов спецификаторов. Если ни один из файловых систем в fslist не начинается с оператора отрицания (OR или !), то только те, которые перечислены файловые системы будут проверены.

Опции спецификаторы могут быть включены раздельными запятыми в fslist. Они должны иметь формат opts=fs-option. Если спецификатор присутствует, то только файловые системы, которые содержат FS-option в их опциях монтирования области /etc/fstab  будут проверены. Если спецификатор используется с отрицанием, то только те файловые системы, которые не имеют FS-option в их опции монтирования области /etc/fstab будут проверены.

Например, если OPTS = ро появляется в fslist, то только файловые системы, перечисленные в/etc/fstab с возможностью ро будут проверены.

Как правило, тип файловой системы выводится с помощью функции поиска для filesys в файле /etc/fstab и используя соответствующую запись. Если тип не может быть выведен, и есть только одна файловая система в качестве аргумента для опции -t, Fsck будет использовать указанный тип файловой системы. Если этот тип не доступен, то тип по умолчанию файловая система (в настоящее время ext2) не используется.

-A

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

Корневая файловая система будет сначала проверяется, если опция -P не указана (смотрите ниже). После этого файловые системы будут проверяться в порядке, установленном в поле fs_passno (в шестом)в файле /etc/fstab. Файловые системы со значением fs_passno 0 пропускаются и не проверяются вообще. Файловые системы со значением fs_passno больше нуля будут проверены в порядке, файловых систем ( Наименьшее число в fs_passno проверяется в первую очередь).

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

Fsck не проверяет сложенные устройств (рейды, DM-склеп …) параллельно с любым другим устройством. Смотрите ниже для установки FSCK_FORCE_ALL_PARALLEL для файловой системы используется определения зависимостей между устройствами.

Таким образом, очень распространенная конфигурация в  файле /etc/fstab для установки корневой файловой системы имеет значение fs_passno из 1 и установить все другие файловые системы имеют значение fs_passno 2. Это позволит запустить проверку Fsck для автоматического запуска файловой системы параллельно.

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

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

/etc/fstab опцию монтирования nofail могут быть использованы, чтобы пропустить в Fsck несуществующие устройства. Fsck также пропускает несуществующие устройства, которые имеют особый тип файловой системы автоматически.

-C [fd]

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

-M

Не проверять смонтированные файловые системы и вернуть код завершения 0, для смонтированных файловых систем.

-N

Ничего не делать, просто показывает, что должно быть сделано.

-P

Когда опция -A устанавливается, то fsck проверяет корневую файловую систему параллельно с другими файловыми системами. Это не очень безопасно, чтобы делать так, т.к если корневая файловая система находится под e2fsck, то исполняемый файл может быть поврежден!

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

-R

При проверке всех файловых систем с флагом -A, пропускать корневую файловую систему. (Это полезно в случае когда корневая файловая система уже смонтирована для чтения и записи.)

-T

Не показывать название при запуске.

-V

Подробный вывод, в том числе всех команд конкретной файловой системы , которые выполняются.

 Специальные параметры для файловой системы.

Параметры, которые не понимают FSCK передаются в файловой системе конкретной проверкой. Эти опции не должны принимать аргументы, т.к нет никакого способа для Fsck, чтобы иметь возможность должным образом угадать, какие параметры имеют аргументы, а какие нет.

Параметры и аргументы, которые следуют — рассматриваются как файловая система конкретных вариантов, которые будут переданы в файловой системе конкретной проверки.

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

Хотя не гарантируется, что следующие параметры поддерживаются большинством файловых систем:

-a

Автоматическое восстановление файловой системы без каких-либо вопросов (используйте эту опцию с осторожностью). Обратите внимание, что e2fsck поддерживает -a только для обратной совместимости. Эта опция отображается на e2fsck-х с опцией -p, которая является безопасной в использовании, в отличие от опции -a.

-n

Для некоторых файловых систем конкретных проверок, опция -n вызовет fs-specific  FSCK и тем самым данная опция говорит о отказе от попыток исправить все проблемы, но просто сообщать о таких проблемах в стандартный вывод.

В частности, fsck.reiserfs не будет сообщать любые повреждения при использовании этих варианта.

fsck.minix браузер не поддерживает параметр -n вообще.

-r

Интерактивный ремонт файловой системы (спросит подтверждение).

Примечание: Как правило, плохая идея использовать эту опцию, если несколько FSCK в настоящее время работают параллельно. Также обратите внимание, что это поведение для E2fsck по умолчанию; он поддерживает эту опцию только для причин обратной совместимости.

-y

Для некоторых файловых систем конкретная проверка,  — этот вариант вызовет fs-specific Fsck которая всегда пытаться автоматически исправить все обнаруженные и поврежденное в файловой системы. Иногда эксперт может быть в состоянии сделать лучше запустить FSCK вручную. Обратите внимание, что не все файловые системы конкретных проверок поддерживают этот вариант. В частности, fsck.minix и fsck.cramfs не поддерживают опцию -y.

Для удобства – настроим сеть:

# ifconfig eth0 inet 77.120.106.** netmask 255.255.255.0
# route add default gw 77.120.106.1 eth0

В ОС — Linux уже имеется утилита FSCK («Проверка системных файлов») для проверки файловой системы.
Синтаксис выглядит следующим образом, есть необходимость проверить и при необходимости отремонтировать одну или несколько файловых систем Linux:

# fsck Fs-Name-Here
# fsck /dev/xyz
# fsck /home
# fsck.ext3 /dev/hdc1
# fsck.ext2 /dev/flash/device/name

Fs-Name-Here -может быть одним из следующих:
Имя устройства — (e.g. /dev/hda1, /dev/sda2, /dev/md0, /dev/vg1/volume_1).
Точка монтирования — (e.g. /var, /home).
Метка ext2 — (e.g. LABEL=home ).
UUID спецификатор — (e.g. UUID=8536abf2-44c3-5a90-34b3-bfc23456f6bd).

Готовые примеры.

Во-первых, файловая система должна быть демонтирована. Вы не можете восстановить его, пока он работает, но для начала перейдем в init 1:

# init 1

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

# fdisk -l

fdisk -l

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

# file -s /dev/sda1

/dev/sda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (huge files)

Далее, демонтировать файловую систему, например, если это /home (/dev/sda3) файловая система введите команду:

# umount /home

Или

# umount /dev/sda1

Можно вывести, что можно выполнить для данной ФС:

# fsck -N /dev/sda1
 fsck from util-linux-ng 2.17.2
[/sbin/fsck.ext4 (1) -- /boot] fsck.ext4 /dev/sda1

Например, запустим проверку целостности ФС с исправлением всех ошибок в автоматическом режиме:

# fsck.ext4 -y /dev/sda1
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.
e2fsck: Cannot continue, aborting.

У меня данный раздел примонтирован, нужно его отмонтировать и выполнить заново данную команду:

# umount /dev/sda1

Отмонтировали, теперь выполняем проверку:

# fsck.ext4 -y /dev/sda1

Вот что получили:

e2fsck 1.41.12 (17-May-2010)
/dev/sda1: clean, 64/128016 files, 148908/512000 blocks

Наконец, запустите FSCK на разделе, введите следующую команду:

# fsck /dev/sda3

Однако не забудьте указать тип файловой системы, используя опцию -t.  Fsck по умолчанию предполагает, файловую систему ext2:

# fsck -t ext3 /dev/sda3

Или для ext3:

# fsck.ext3 /dev/sda3

Или для ext4:

# fsck.ext4 /dev/sda5

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

$ mount

Если какие-либо файлы восстановлены, то они размещаются в /home/lost+found, FSCK команды.

Переходим (используем) на multiuser mode, выполнив:

# init 3

Автоисправление файловая системы при обнаружении ошибок

В ходе проверки файловой системы, если ошибки обнаружены, вы можете получить «FSCK», чтобы отремонтировать в автоматическом режиме вашу файловую систему, нужно к команде добавить флаг «-a». Например:

$ fsck -a /dev/sda1

Аналогично, используя флаг «-y» можете получить такую же работу:

# fsck -y /dev/sda1

Проверка всех файловых систем за один проход

Если есть несколько файловых систем на вашем ПК, то можно проверить все, выполнив команду fsck с флагом «-А». Пример:

# fsck -A

Что он будет делать, чтобы захватить все записи файловой системы с /etc/fstab и сканировать их на наличие ошибок. Вы можете использовать его вместе с «-R» и флагом «-y», чтобы предотвратить его сканирования файловую систему root и исправить все ошибки, если оно имеется:

# fsck -AR -y

 Исключение проверки на смонтированной файловой системе

Как упоминалось ранее, Fsck не может быть запущен на смонтированной файловой системе. Если вы используете флаг -A для проверки всех файловых систем, и некоторые из них установлены, вы можете повредить эти файловые системы.Способ преодолеть это использовать флаг «-M», чтобы предотвратить его от проверки в установленной системы.

Например, выполнив команду

# fsck -M /dev/sdc1

ничего не возвращает и код возврата 0 (означает «нет ошибки»). Сканирования не было сделано вообще, так как все файловые системы монтируются. По этому, нужно отмонтировать данный раздел и выполнить команду заново.

Определение типа файловой системы

Есть моменты, когда вы просто хотите проверить файловую систему определенного типа, скажем, ext2. Вы можете воспользоваться флагом -t, чтобы указать тип файловой системы, чтобы проверить. Например, команда

$ fsck -t ext4 /dev/sdc1

будет сканировать внешний жесткий диск, только если он находится в формате ext4. Кроме того, вы можете комбинировать с флагом «-A» для сканирования всех файловых систем определенного типа:

$ fsck -A -t ext4 -y

Force fsck  запуск каждый раз при загрузке

По умолчанию, в Ubuntu будет работать FSCK после каждых 30 bootups, но если вы хотите, чтобы система выполняла «FSCK» каждый раз когда она загружается, то все что вам нужно сделать, это создать пустой файл «звонок» «forcefsck» и поместите его в корневую папку. Это уведомит ОС,  о там чтобы она выполнила «FSCK»  и начала проверять файловую систему каждый раз во время загрузки:

$ sudo touch /forcefsck

Чтобы изменить частоту проверки, вы можете использовать команды «tune2fs». Следующая команда дает указание системе запустить «FSCK» после каждых 30 загрузок:

# tune2fs -c 30 /dev/sdaX

Или можно использовать опцию «-f» :

# fsck /dev/sda1 -f

Избегать ремонта, но сообщать о проблемах на стандартный вывод с помощью опции -n

Можно печатать все обнаруженные проблемы в стандартный вывод без ремонта в файловой системе, используя FSCK с опцией «-n»:

# fsck -n /dev/sda1

Использование FSCK с графическим интерфейсом 

Для Debian/Ubuntu/Mint можно установить программу:

$ sudo apt-get install gparted

На этом, моя статья «Проверка файловой системы на ошибки с помощью fsck на Linux» подошла к завершению.

FSCK – очень важная утилита для Linux / Unix, она используется для проверки и исправления ошибок в файловой системе.

Она похоже на утилиту «chkdsk» в операционных системах Windows.

Она также доступна для операционных систем Linux, MacOS, FreeBSD.

FSCK означает «File System Consistency Check», и в большинстве случаев он запускается во время загрузки, но может также запускаться суперпользователем вручную, если возникнет такая необходимость.

Может использоваться с 3 режимами работы,

1- Проверка наличия ошибок и позволить пользователю решить, что делать с каждой ошибкой,

2- Проверка на наличие ошибок и возможность сделать фикс автоматически, или,

3- Проверка наличия ошибок и возможность отобразить ошибку, но не выполнять фикс.

Содержание

  1. Синтаксис использования команды FSCK
  2. Команда Fsck с примерами
  3. Выполним проверку на ошибки в одном разделе
  4. Проверьте файловую систему на ошибки и исправьте их автоматически
  5. Проверьте файловую систему на наличие ошибок, но не исправляйте их
  6. Выполним проверку на ошибки на всех разделах
  7. Проверим раздел с указанной файловой системой
  8. Выполнять проверку только на несмонтированных дисках

Синтаксис использования команды FSCK

$ fsck options drives

Опции, которые можно использовать с командой fsck:

  • -p Автоматический фикс (без вопросов)
  • -n не вносить изменений в файловую систему
  • -у принять «yes» на все вопросы
  • -c Проверить наличие плохих блоков и добавить их в список.
  • -f Принудительная проверка, даже если файловая система помечена как чистая
  • -v подробный режим
  • -b использование альтернативного суперблока
  • -B blocksize Принудительный размер блоков при поиске суперблока
  • -j external_journal Установить местоположение внешнего журнала
  • -l bad_blocks_file Добавить в список плохих блоков
  • -L bad_blocks_file Установить список плохих блоков

Мы можем использовать любую из этих опций, в зависимости от операции, которую нам нужно выполнить.

Давайте обсудим некоторые варианты команды fsck с примерами.

Команда Fsck с примерами

Примечание: – Прежде чем обсуждать какие-либо примеры, прочтите это. Мы не должны использовать FSCK на смонтированных дисках, так как высока вероятность того, что fsck на смонтированном диске повредит диск навсегда.

Поэтому перед выполнением fsck мы должны отмонтировать диск с помощью следующей команды:

$ umount drivename

Например:

$ umount /dev/sdb1

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

$ fdisk -l

Также при запуске fsck мы можем получить некоторые коды ошибок.

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

  • 0 – нет ошибок
  • 1 – исправлены ошибки файловой системы
  • 2 – система должна быть перезагружена
  • 4 – Ошибки файловой системы оставлены без исправлений
  • 8 – Операционная ошибка
  • 16 – ошибка использования или синтаксиса
  • 32 – Fsck отменен по запросу пользователя
  • 128 – Ошибка общей библиотеки

Теперь давайте обсудим использование команды fsck с примерами в системах Linux.

Выполним проверку на ошибки в одном разделе

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

$ umount /dev/sdb1

$ fsck /dev/sdb1

Проверьте файловую систему на ошибки и исправьте их автоматически

Запустите команду fsck с параметром «a» для проверки целостности и автоматического восстановления, выполните следующую команду.

Мы также можем использовать опцию «у» вместо опции «а».

$ fsck -a /dev/sdb1

Проверьте файловую систему на наличие ошибок, но не исправляйте их

В случае, если нам нужно только увидеть ошибки, которые происходят в нашей файловой системе, и не нужно их исправлять, тогда мы должны запустить fsck с опцией “n”,

$ fsck -n /dev/sdb1

Выполним проверку на ошибки на всех разделах

Чтобы выполнить проверку файловой системы для всех разделов за один раз, используйте fsck с опцией «A»

$ fsck -A

Чтобы отключить проверку корневой файловой системы, мы будем использовать опцию «R»

$ fsck -AR

Проверим раздел с указанной файловой системой

Чтобы запустить fsck на всех разделах с указанным типом файловой системы, например, «ext4», используйте fsck с опцией «t», а затем тип файловой системы,

$ fsck -t ext4 /dev/sdb1

или

$ fsck -t -A ext4

Выполнять проверку только на несмонтированных дисках

Чтобы убедиться, что fsck выполняется только на несмонтированных дисках, мы будем использовать опцию «M» при запуске fsck,

$ fsck -AM

Вот наше короткое руководство по команде fsck с примерами.

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

Содержание

  1. Требования:
  2. Что делает команда fsck
  3. Команда fsck в Linux
  4. Проверка и исправление ошибок файловой системы в Linux
  5. Исправление ошибки корневой файловой системы Linux командой fsck
  6. Параметры fsck
  7. Параметры fsck
  8. Заключение

Команда FSCK (Проверка согласованности файловой системы) — это команда предназначена для проверки и исправления ошибок файловой системы Linux. Что гарантирует целостность и согласованность файловой системы.

fsck — это интерфейсная утилита, которая вызывает программу для проверки конкретной файловой системы. Команда Fsck обычно запускается после сбоя загрузки системы, повреждения файловой системы или сбоя в работе подключенного диска.

Например в системе Windows есть подобная утилита, называется chkdsk.

В этой статье мы расскажем о команде fsck и о том, как восстановить систему в дистрибутиве Linux.

Требования:

  • Установленная система Linux или Unix-подобная
  • Пользователь с правами Sudo (суперпользователь)

Что делает команда fsck

  • Система автоматически обнаруживает несогласованность системы, как правило после сбоя системы или потери питания или после неправильного отключения.
  • Используйте fsck если система не загружается
  • Исправление ошибок ввода-вывода
  • Запланированный запуск fsck для проверки файловой системы при загрузке ОС.

Команда fsck в Linux

Команда fsck имеет вот такой синтаксис.

$ sudo fsck [Опция] [Файловая система]

[Опция] в синтаксисе — это параметры, доступные с помощью утилиты fsck (различные опции fsck приведены в конце этой статьи).

[Файловая система] может быть устройством, разделом, точкой монтирования и так далее. Если учетные данные не добавлены в [Файловую систему], fsck проверяет устройства, перечисленные в файле fstab.

fsck по умолчанию включен во все дистрибутивы Linux. Команда fsck проверяет все файлы и целостность файловой системы. Эту команду можно выполнить вручную или автоматически.

ВНИМАНИЕ: Прежде чем пытаться проверить или восстановить файловую систему, всегда помните о необходимости размонтирования раздела. Если этого не сделать, файловая система может быть повреждена.

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

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

Если вы не уверены в имени устройства которое хотите проверить, используйте команду df, lsblk или fdisk (fdisk-l), чтобы найти его.

$ sudo df -h

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

Синтаксис команды размонтирования:

$ sudo umount [filesystem]

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

Синтаксис команды проверки файловой системы и файлов:

$ sudo fsck -p [Filesystem]

Пример использования команд :

$ sudo umount /dev/sdc
$ sudo fsck -p /dev/sdc

Ответ в терминала:

$ sudo fsck -p /dev/sdc
fsck from util-linux 2.34
exfatfsck 1.3.0
Checking file system on /dev/sdc.
File system version              1.0
Sector size                      512 bytes
Cluster size                     128 KB
Volume size                      55 GB
Used space                       4 MB
Available space                  55 GB
Totally 1 directories and 3 files.
File system checking finished. No errors found.

После проверки и ремонта обязательно смонтируйте диск.

Исправление ошибки корневой файловой системы Linux командой fsck

Поскольку корневая система не может быть отключена, Fsck не может проверять наличие ошибок. Но у вас есть возможность запустить fsck в режиме восстановления.

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

Войдите в меню загрузки и выберите «Дополнительные параметры»  (Advanced Options).

Дополнительные параметры для запуска fsck

Дополнительные параметры для запуска fsck

Теперь выберите “Режим восстановления” (Recovery mode), а затем в меню выберите» fsck” .

Исправление ошибки корневой файловой системы Linux командой fsck

Исправление ошибки корневой файловой системы Linux командой fsck

Далее появится окно сообщения с вопросом, хотите ли вы переустановить свою / файловую систему. Выберите опцию «Да«.

Меню восстановления системы Linux

Меню восстановления системы Linux

Теперь нажмите «ДА» и вернитесь к нормальной загрузке.

Команда Fsck в Linux

Команда Fsck в Linux

Возвращение к нормальной загрузке ОС Linux

Возвращение к нормальной загрузке ОС Linux

Параметры fsck

Существует список опций (параметров), которые доступны с помощью утилиты fsck. Все они используются для конкретных целей. Вот некоторые полезные опций fsck:

1. Perform fsck dry run — это выполнение тестового запуска.

fsck -N /dev/sdc

2. Опция -y на все вопросы автоматически ответит ДА, это позволит избежать всех подсказок

fsck -y /dev/sdc

3. Параметр -n  выведите ошибку fsck без ремонта

fsck -n /dev/sdc

4. Запуск fsck во всех файловых системах

fsck -AR

-R  пропустит корневую файловую систему, так как ее нельзя размонтировать на работающей машине

5. Запуск fsck для определенной файловой системы

Команда fsck является оболочкой и внутренне использует соответствующую команду проверки файловой системы (fsck.*). Вы можете найти следующие различные команды проверки fsck, такие как fsck.ext2, fsck.ext3, fsck.ext4 и т.д.).

# cd /sbin
# ls fsck*
fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.ext4 fsck.minix fsck.xfs

В следующей таблице показаны все параметры (опции) команды fsck.

Параметры fsck

Вариант Описание
-A Проверяет все файловые системы, присутствующие в файле /etc/fstab
-C Отображает индикатор выполнения
-f Принудительно проверяет файловую систему
-l Блокирует устройство
-M Не проверяет смонтированные файловые системы
-N Выводит на печать без выполнения каких — либо действий
-P Параллельная проверка нескольких файловых систем
-p Автоматически устранять любые проблемы, которые могут быть безопасно устранены без необходимости взаимодействия с пользователем
-R Не проверяет корневую файловую систему при использовании с -A
-r Отображает статистику для каждого проверенного устройства
-T Не показывает название
-t Укажите типы файловых систем, которые необходимо проверить (это можно сделать с помощью команды man)
-v Предоставляет подробную информацию
-y Отвечает «да» на все вопросы

fstab — это файл, который указывает операционной системе, как и где монтировать разделы. Вы так же можете найти список записей в файле fstab /etc/fstab.

Параметр  <pass> определяет порядок, в котором выполняются проверки файловых системы во время перезагрузки. Если значение равно 0, то оно не проверяется. Если значение равно 1, файловые системы проверяются по одной за раз. А если значение равно 2, поиск во всех файловых системах выполняется одновременно. Значение корневой файловой системы равно 1, а все остальные файловые системы, которые вы хотите проверить, должны иметь значение 2.

Образец файла /etc/fstab:

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

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

Заключение

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

Состояние перевода: На этой странице представлен перевод статьи fsck. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

fsck (file system check) — утилита для проверки и восстановления файловых систем Linux. Проверка файловых систем разных физических дисков выполняется параллельно, что позволяет значительно её ускорить (см. fsck(8)).

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

Проверка при загрузке

Механизм

Существует два возможных варианта:

  1. mkinitcpio предоставляет хук fsck для проверки корневой файловой системы перед монтированием. Корневой раздел должен быть смонтирован на запись и чтение (параметр ядра rw) [1].
  2. systemd проверяет все файловые системы, которым задано значение fsck больше 0 (либо параметром fstab, либо в пользовательском файле юнита). Корневая файловая система изначально должна быть смонтирована только на чтение (параметр ядра ro), и лишь позже перемонтирована на чтение-запись в fstab. Имейте в виду, что опция монтирования defaults подразумевает rw.

Рекомендуется по умолчанию использовать первый вариант. Если вы устанавливали систему в соответствии с руководством, то использоваться будет именно он. Если вы хотите вместо этого использовать вариант 2, то удалите хук fsck из mkinitcpio.conf и задайте параметр ядра ro. Кроме того, параметром ядра fsck.mode=skip можно полностью отключить fsck для обоих вариантов.

Принудительная проверка

Если вы используете base-хук mkinitcpio, то можно принудительно выполнять fsck во время загрузки, задав параметр ядра fsck.mode=force. Проверена будет каждая файловая система на машине.

В качестве альтернативы можно воспользоваться службой systemd systemd-fsck@.service(8), которая проверит все настроенные файловые системы, которые не были проверены в initramfs. Тем не менее, проверка корневой файловой системы этим способом может стать причиной задержки в время загрузки, поскольку файловая система будет перемонтироваться.

Примечание: Если вы используете другие дистрибутивы GNU/Linux, то учтите, что старые методы проверки вроде файлов forcefsck для каждой файловой системы или команды shutdown с флагом -F будут работать только с SysVinit и ранними версиями Upstart; работать с systemd они не будут. Решение, предложенное выше, является единственным рабочим для Arch Linux.

Советы и рекомандации

Восстановление повреждённых блоков

Следующая команда позволяет восстановить повреждённые участки файловых систем ext2/ext3/ext4 и FAT:

Важно: Разрешение на восстановление запрошено не будет. Подразумевается, что вы уже ответили «Да», запустив команду на выполнение.

# fsck -a

Интерактивное восстановление повреждённых блоков

Полезно в том случае, если файлы на загрузочном разделе были изменены, а журнал не обновился соответствующим образом. В этом случае размонтируйте загрузочный раздел и выполните:

# fsck -r диск

Изменение частоты проверки

Примечание: Команды tune2fs и dumpe2fs работают только с файловыми системами ext2/ext3/ext4.

По умолчанию fsck проверяет файловую систему каждые 30 загрузок (вычисляется отдельно для каждого раздела). Чтобы изменить частотку проверок, выполните:

# tune2fs -c 20 /dev/sda1

Здесь 20 — число загрузок между проверками. Если задать значение 1, то проверка будет выполняться при каждой загрузке, а значение 0 отключит сканирование.

Текущую частоту проверок и опции монтирования конкретного раздела можно узнать командой:

# dumpe2fs -h /dev/sda1 | grep -i 'mount count'

Параметры fstab

fstab — файл системных настроек, который используется для передачи ядру Linux информации о том, какие разделы (файловые системы) монтировать и в какие точки дерева файловой системы.

Записи в /etc/fstab выглядят примерно следующим образом.

/dev/sda1   /         ext4      defaults       0  1
/dev/sda2   /other    ext4      defaults       0  2
/dev/sda3   /win      ntfs-3g   defaults       0  0

Шестое поле каждой строки (выделено) — опция fsck:

  • 0 — не проверять.
  • 1 — файловая система (раздел), которая должна быть проверена первой; для корневого раздела (/) должно использоваться именно это значение.
  • 2 — прочие файловые системы, которые должны быть проверены.

Решение проблем

Не запускается fsck для отдельного раздела /usr

  1. Убедитесь, что используются соответствующие хуки в /etc/mkinitcpio.conf, а также что вы не забыли пересоздать initramfs после последнего редактирования этого файла.
  2. Проверьте fstab! Только корневому разделу должен быть задан параметр 1 в последнем поле, все остальные разделы должны иметь либо 2, либо 0. Также проверьте файл на наличие иных опечаток.

ext2fs: no external journal

Иногда (например, из-за внезапного отключения питания) файловые системы ext(3/4) могут повредиться так сильно, что восстановить их обычным способом не удастся. Как правило, при этом fsck выводит сообщение о том, что не удалось найти журнал (no external journal). В этом случае выполните команды ниже.

Отмонтируйте раздел от соответствующего каталога:

# umount каталог

Запишите на раздел новый журнал:

# tune2fs -j /dev/раздел

Запустите fsck, чтобы восстановить раздел:

# fsck -p /dev/раздел

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

Что такое битые блоки и почему они появляются

Блок (сектор) – это маленькая ячейка диска, на которой в виде битов (0 и 1) хранится информация. Когда системе не удается записать очередной бит в ячейку, говорят о битом секторе. Причин возникновения таких блоков может быть несколько:

  • брак при производстве;
  • отключение питания в процессе записи информации;
  • физический износ диска.

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

Проверка диска Linux

На ядре Linux работает несколько ОС, среди которых Ubuntu и Debian. Процедура проверки диска универсальная и подходит для каждой из них. О том, что носитель пора тестировать, стоит задуматься, когда на дисковую систему оказывается большая нагрузка, скорость работы с носителем (запись/чтение) значительно уменьшилась, либо эти процедуры и вовсе вызывают ошибки.

Многие знакомы с программой на Windows – Victoria HDD. Разработчики позаботились о написании ее аналогов для Linux.

Badblocks

Badblocks – дисковая утилита, имеющаяся в Ubuntu и других дистрибутивах Linux по умолчанию. Программа позволяет тестировать как жесткий диск, так и внешние накопители.

Важно! Все приведенные в статье терминальные команды начинаются с параметра sudo, так как для выполнения требуются права суперпользователя.

Перед тем, как тестировать диск в Linux следует проверить, какие накопители подключены к системе, с помощью утилиты fdisk-l. Она также покажет имеющиеся на них разделы. 

Теперь можно приступать к непосредственному тестированию на битые сектора. Работа Badblocks организовывается следующим образом:

badblocks -v /dev/sdk1 > bsector.txt

В записи используются следующие команды и операнды:·       

  • -v – выводит подробный отчет о проведенной проверке;·       
  • /dev/sdk1 – проверяемый раздел;·       
  • bsector.txt – запись результатов в текстовый файл. 

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

fsck -l bsector.txt /dev/sdk1

В противном случае:

fsck -l bsector.txt /dev/sdk1

Параметр -l указывает программе, что битые блоки перечислены в файле bsector.txt, и исключать нужно именно их.

GParted

Утилита проверяет файловую систему Linux, не прибегая к текстовому интерфейсу.

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

apt-get install gparted

В главном окне приложения отображаются доступные диски. О том, что носитель пора тестировать, понятно по восклицательному знаку, расположенному рядом с его именем. Запуск проверки производится путем щелчка по пункту «Проверка на ошибки» в подменю «Раздел», расположенном на панели сверху. Предварительно выбирается нужный диск. По завершении сканирования утилита выведет результат.

Проверка HDD и других запоминающих устройств приложением GParted доступна для пользователей ОС Ubuntu, FreeBSD, Centos, Debian и других и других дистрибутивов, работающих на ядре Linux.

Smartmontools

Инструмент позволяет тестировать файловую систему с большей надежностью. В современных жестких дисках имеется встроенный модуль самоконтроля S. M. A. R. T., который анализирует данные накопителя и помогает определить неисправность на первоначальной стадии. Smartmontools предназначен для работы с этим модулем.

Запуск установки производится через терминал:

  • apt install smartmontools – для Ubuntu/Debian;
  • yum install smartmontools – для CentOS.

Для просмотра информации о состоянии жесткого диска, вводится строка:

smartctl –H /dev/sdk1

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

Утилита имеет и другие параметры: -a, —all, -x, —xall. Для получения дополнительной информации вызывается справка:

man smartctl –h

Safecopy

Когда возникает потребность тестировать винчестер в Linux, стоит быть готовым к любому результату.

Приложение Safecopy копирует данные с поврежденного устройства на рабочее. Источником могут быть как жесткие диски, так и съемные носители. Этот инструмент игнорирует ошибки ввода/вывода, чтения, битые блоки, продолжая беспрерывно работать. Скорость выполнения максимально возможная, которую обеспечивает компьютер.

Для установки Safecopy на Linux в терминал вводится строка:

apt install safecopy

Сканирование запускается командой:

safecopy /dev/sdk1 /home/files/

Здесь первый путь обозначает поврежденный диск, второй – директорию, куда сохранятся файлы.

Программа способна создать образ файловой системы нестабильно работающего запоминающего устройства.

Что делать, если обнаружена ошибка в системной программе Ubuntu

Установка нового программного обеспечения или изменения системных настроек могут вызвать сообщение «Обнаружена ошибка в системной программе». Многие его игнорируют, так как на общей работе оно не отражается.

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

Второй способ поможет избежать появления сообщения лишь в том случае, если оно вызывается одной и той же программой. Для этого при очередном оповещении нужно установить галку на опцию «Не показывать больше для этой программы».

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

gsettings set com.ubuntu.update-notifier show-apport-crashes false

Данные продолжат собираться в папке /var/crash. Их периодически необходимо чистить, чтобы они не заполняли дисковое пространство:

rm /var/crash

Для полного отключения служб Apport, в терминал вводится запись:

gksu gedit /etc/default/apport

В появившемся тексте значение поля enable меняется с 1 на 0. В дальнейшем, чтобы снова включить службу, возвращаются настройки по умолчанию.

Заключение

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

Параметры fsck
Пример проверки диска на ошибки с помощью fsck
Запуск автоматической проверки и исправления найденных ошибок
Ручное добавление параметров в меню GRUB при загрузке ОС
Добавление параметров в меню GRUB с помощью утилиты grubby
Создание файла /forcefsck
Запуск проверки в ручном режиме
Использование загрузочного диска/flash для проверки файловой системы на ошибки
Проверка LVM-разделов с помощью утилиты fsck

В определенных случаях  (в результате сбоя или некорректного завершения работы)  на файловой системе могут накапливаться ошибки. В РЕД ОС для проверки файловой системы и исправления ошибок имеется утилита  fsck («file system consistency check»).

Инструмент fsck обладает следующим функционалом:

  • проверка файловой системы при возникновении проблем (не загружается система/поврежденные файлы) или в качестве профилактического обслуживания;

  • диагностика состояния внешних накопителей, таких как SD-карты или USB-накопители.

Базовый синтаксис соответствует следующему шаблону:

 fsck <опции> <файловая_система>

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

На нашем Youtube-канале вы можете подробнее ознакомиться с возможностями проверки файловой системы на наличие ошибок, просмотрев видео Проверка файловой системы на наличие ошибок, а также найти много другой полезной информации.

Параметры fsck

fsck –p – утилита автоматически исправит найденные ошибки.

Вывод аналогичен простой проверке.

fsck –с – проверка файловой системы на поврежденные сектора.

Для получения списка команд наберите fsck ––help или fsck –h.

Опция Описание
-a Устаревшая опция. Указывает исправлять все найденные ошибки без одобрения пользователя.
-r Применяется для файловых систем ext. Указывает fsck спрашивать пользователя перед исправлением каждой ошибки
-n Выполняет только проверку ФС, без исправления ошибок. Используется также для получения информации о ФС
-c Применяется для файловых систем ext3/4. Помечает все повреждённые блоки для исключения последующей записи в них
-f Принудительно проверяет ФС, даже если ФС исправна
-y Автоматически подтверждает запросы к пользователю
-b Задаёт адрес суперблока
-p Автоматически исправлять найденные ошибки. Заменяет устаревшую опцию -a
-A Проверяет все ФС
-С [<fd>] Показывает статус выполнения. Здесь fd – дескриптор файла при отображении через графический интерфейс
-l Блокирует устройство для исключительного доступа
-M Запрещает проверять примонтированные ФС
-N Показывает имитацию выполнения, без запуска реальной проверки
-P Проверять вместе с корневой ФС
-R Пропускает проверку корневой ФС. Может использоваться только совместно с опцией -A
-r [<fd>] Выводит статистику для каждого проверенного устройства
-T Не показывать заголовок при запуске
-t <тип> Задаёт ФС для проверки. Можно задавать несколько ФС, перечисляя через запятую
-V Выводит подробное описание выполняемых действий

Пример проверки диска на ошибки с помощью fsck

Запуск автоматической проверки и исправления найденных ошибок

Существует несколько способов запуска автоматической проверки на ошибки:

1. Ручное добавление параметров в меню GRUB при загрузке ОС.

2. Добавление параметров в меню GRUB с помощью утилиты grubby.

3. Создание файла /forcefsck.

1. Ручное добавление параметров в меню GRUB при загрузке ОС

Первый вариант проверки и  исправления ошибок на разделах жесткого диска.

В меню GRUB перейдите в режим редактирования загрузочной строки, нажав при этом клавишу e. Добавьте параметры:

fsck.mode=force fsck.repair=yes

в конец предпоследней строки.

Нажмите Ctrl+Х для запуска ОС с этими параметрами, во время запуска будет произведена проверка разделов диска, и при наличии ошибок произведено их исправление.

2. Добавление параметров в меню GRUB с помощью утилиты grubby

Существует еще один способ добавления параметров ядра для принудительной проверки файловой системы на ошибки и их исправления. Добавить параметры можно командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --args="fsck.mode=force fsck.repair=yes"

Удалить установленные параметры можно следующей командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --remove-args="fsck.mode=force fsck.repair=yes"

3. Создание файла /forcefsck

Бывают ситуации, когда систему необходимо проверить на наличие ошибок в незапланированный момент. Для этого можно принудительно запустить утилиту fsck для проверки при следующей перезагрузке. Запуск осуществляется командой:

sudo touch /forcefsck

Команда sudo (после ввода пароля) предоставит права для создания с помощью touch пустого файла в корне диска /forcefsck, который послужит сигналом (флагом) для fsck, что нужно проверить диски. 

Останется только перезагрузить компьютер и fsck начнет проверять все жесткие диски, указанные в /etc/fstab.

Запуск проверки в ручном режиме

Следующий метод относится к проверке диска, когда операционная система загружена в режиме single mode.

1. Запустим ОС в single mode, для этого пропишите в меню загрузки grub параметр init=/bin/bash в конце строки, которая начинается на linux16, см. рисунок.

Также данная строка может начинаться с linuxefi, этот параметр характерен для систем с загрузкой в UEFI. Нажмите «ctrl+x» для запуска с этим параметром(init=/bin/bash).

2. Запустите проверку выполнив команду:

/usr/sbin/fsck -ACVfyv

Во время проверки на экране появится отчет о выполненных операциях, если отчет длинный, то можно его можно пролистать вверх сочетанием клавиш shift+PageUp. После проверки дисков перезагрузите компьютер, нажав на кнопку на системном блоке.

Наглядное видео примера проверки диска на ошибки:

Использование загрузочного диска/flash для проверки файловой системы на ошибки.

Загрузившись в режим восстановления операционной системы РЕД ОС с помощью загрузочного диска или съемного накопителя с установленным образом операционной системы РЕД ОС. Выберите пункт: «Решение проблем» -> «Исправить установленную RED OS».

Система перезагрузится в режим восстановления. Введите «2» и нажмите 2 раза Enter. Так вы смонтируете операционную систему в режим «Только для чтения»

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

setfont cyr-sun16

Потом введите команду:

# сhroot /mnt/sysimage

После этого можете вводить fsck:

# fsck -ACVfyv

Если проверка завершится с такой ошибкой:

[путь_к_файловой_системе] is mounted

Введите:

umount [путь_к_файловой_системе]

И еще раз запустите утилиту fsck:

# fsck -ACVfyv
fsck from util-linux 2.30.2
…

Если система не выявит ошибок, то получится такой вывод:

[путь_к_файловой_системе] clean …

Чтобы выйти из режима восстановления, вы должны смонтировать все разделы, которые были отмонтированы командой umount, с помощью команды mount, нажать сочетание клавиш сtrl+d, а затем ввести команду reboot, которая перезапустит вашу операционную систему.

# reboot

По умолчанию, утилита fsck при проверке будет использовать разделы, указанные в /etc/fstab/, сформированные при установке операционной системы РЕД ОС.

Проверка LVM-разделов с помощью утилиты fsck

Перед проведением проверки необходимо найти устройство и размонтировать его.

Для просмотра всех подключенных устройств и проверки расположения диска выполните команду:

lsblk 

 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
 sda 8:0 0 20G 0 disk 
 ├─sda1 8:1 0 1G 0 part /boot
 └─sda2 8:2 0 19G 0 part 
 ├─ro_redos-root 253:0 0 17G 0 lvm /
 └─ro_redos-swap 253:1 0 2G 0 lvm [SWAP]
 sr0 11:0 1 4,3G 0 rom /run/media/user/redos-MUROM-7.3.1 x86_64

При попытке запустить проверку на смонтированном диске или разделе в консоли появляется предупреждение о том, что невозможно продолжить проверку, так как диск смонтирован.

fsck -nf /dev/ro_redos/root 

 fsck из util-linux 2.37.3
 e2fsck 1.44.6 (5-Mar-2019)
 Warning! /dev/mapper/ro_redos-root is mounted.

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

umount <файловая_система>

Однако попытка выполнить данную процедуру на работающей ОС ни к чему не приведет.

umount /dev/ro_redos/root 

 umount: /: target is busy.

Также проблемой при попытке проверить LVM-разделы может быть и то, что они являются не активными. Для проверки следует использовать команду:

lvscan 

 ACTIVE            '/dev/ro_redos/swap' [2,00 GiB] inherit
 ACTIVE            '/dev/ro_redos/root' [<17,00 GiB] inherit

Для активации раздела служит команда:

vgchange –ay <раздел>

Таким образом, можно сделать вывод, что проверка LVM-разделов через консоль с использованием утилиты fsck невозможна. Но это не значит, что LVM-разделы совсем не подлежат проверке. Существует как минимум два способа, позволяющие провести диагностику LVM-разделов. 

Первым способом является проведение проверки через консоль загрузчика операционной системы GRUB.

А вторым — запуск утилиты fsck в live-сессии системы.

Очевидным плюсом при проверке дисковых пространств, в том числе LVM-разделов, через live-сессию является то, что разделы там по умолчанию являются не смонтированными. Поэтому проверка LVM-раздела будет выполнена с первого раза.

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

В моей статье «Проверка файловой системы на ошибки с помощью fsck на Linux» я расскажу как можно проверить файловую систему на вашей ОС в Linux.

Некоторым системам необходим пароль root чтобы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В этом случае –стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с другого диска.

Fsck расшифровывается как «файловая система Проверка целостности» (file system consistency check). На большинстве систем, Fsck запускается во время загрузки, если определенные условия.

Сам Fsck команда взаимодействует с соответствующей файловой системой конкретных FSCK команд, созданной авторами файловой системы. Независимо от типа вашей файловой системы, Fsck как правило, имеет три режима работы:

  1. Проверка на наличие ошибок и подсказывает пользователю интерактивное решение, как решить индивидуальные проблемы;
  2. Проверка на наличие ошибок и постарается автоматически исправить все ошибки;
  3. Проверка на наличие ошибок без возможности восстановить их, но тогда выдаст ошибки на стандартный вывод.

Код выхода возвращается FSCK это уникальный номер, представляющего собой сумму следующих значений состояния:

0 — Без ошибок (No errors ).
1 — Исправлены ошибки файловой системы(Filesystem errors corrected).
2 — Система должна быть перезагружена (System should be rebooted).
4 — Ошибки файловой системы оставили без изменений (Filesystem errors left uncorrected).
8 — Эксплуатационная ошибка (Operational error).
16 — Ошибки при использовании или синтаксические ошибки (Usage or syntax error).
32 — Fsck отменен по запросу пользователя (Fsck canceled by user request).
128 — Ошибка общей библиотеки (Shared-library error).

Код выхода возвращается, когда несколько файловых систем которая проверяется побитовое ИЛИ (OR) для каждой файловой системы, которая проверяется.

В действительности, Fsck — это просто фронт-энд для различных  проверочных утилит для файловых систем (fsck.fstype), которые доступны на Linux.

Файловая система для конкретных проверок ищет сначала в /sbin, а затем в /etc/fs и /etc/, и, наконец в директориях, перечисленных в переменной PATH (среда переменного кружения).

Прочитайте мануал для конкретных страниц проверки, например, чтобы узнать больше о конкретных проверок  для ext3 FSCK, выполните:

$ man fsck.ext3

Опции FSCK.

Основные Опции.

-l

Блокировка целого дискового устройства эксклюзивным flock. Этот параметр может быть использован только с одного устройства (это означает, что -A и -l являются взаимоисключающими). Эта опция рекомендуется, когда несколько экземпляров FSCK выполняются в то же время. Параметр игнорируется, когда используется для нескольких устройств или для невращающихся дисков. Fsck не блокируется базовые устройства при выполнении проверки сложенных устройств (например, MD или DM); эта функция еще не реализована.

-s

Сериализация FSCK операций. Это отличная идея, если вы проверяете несколько файловых систем в интерактивном режиме. (Примечание. E2fsck работает в интерактивном режиме по умолчанию. Чтобы запустить e2fsck в не-интерактивном режиме, необходимо указать -p или -a, если вы хотите чтобы все ошибки исправлялись автоматически используйте опцию -n если вы не делаете.)

-t

Задает тип (ы) файловой системы которые должны быть проверены. Когда флаг -A, используется только файловые системы, которые соответствуют fslist проверяются. Fslist параметр разделенный запятыми список файловых систем и опционов спецификаторов. Если ни один из файловых систем в fslist не начинается с оператора отрицания (OR или !), то только те, которые перечислены файловые системы будут проверены.

Опции спецификаторы могут быть включены раздельными запятыми в fslist. Они должны иметь формат opts=fs-option. Если спецификатор присутствует, то только файловые системы, которые содержат FS-option в их опциях монтирования области /etc/fstab  будут проверены. Если спецификатор используется с отрицанием, то только те файловые системы, которые не имеют FS-option в их опции монтирования области /etc/fstab будут проверены.

Например, если OPTS = ро появляется в fslist, то только файловые системы, перечисленные в/etc/fstab с возможностью ро будут проверены.

Как правило, тип файловой системы выводится с помощью функции поиска для filesys в файле /etc/fstab и используя соответствующую запись. Если тип не может быть выведен, и есть только одна файловая система в качестве аргумента для опции -t, Fsck будет использовать указанный тип файловой системы. Если этот тип не доступен, то тип по умолчанию файловая система (в настоящее время ext2) не используется.

-A

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

Корневая файловая система будет сначала проверяется, если опция -P не указана (смотрите ниже). После этого файловые системы будут проверяться в порядке, установленном в поле fs_passno (в шестом)в файле /etc/fstab. Файловые системы со значением fs_passno 0 пропускаются и не проверяются вообще. Файловые системы со значением fs_passno больше нуля будут проверены в порядке, файловых систем ( Наименьшее число в fs_passno проверяется в первую очередь).

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

Fsck не проверяет сложенные устройств (рейды, DM-склеп …) параллельно с любым другим устройством. Смотрите ниже для установки FSCK_FORCE_ALL_PARALLEL для файловой системы используется определения зависимостей между устройствами.

Таким образом, очень распространенная конфигурация в  файле /etc/fstab для установки корневой файловой системы имеет значение fs_passno из 1 и установить все другие файловые системы имеют значение fs_passno 2. Это позволит запустить проверку Fsck для автоматического запуска файловой системы параллельно.

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

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

/etc/fstab опцию монтирования nofail могут быть использованы, чтобы пропустить в Fsck несуществующие устройства. Fsck также пропускает несуществующие устройства, которые имеют особый тип файловой системы автоматически.

-C [fd]

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

-M

Не проверять смонтированные файловые системы и вернуть код завершения 0, для смонтированных файловых систем.

-N

Ничего не делать, просто показывает, что должно быть сделано.

-P

Когда опция -A устанавливается, то fsck проверяет корневую файловую систему параллельно с другими файловыми системами. Это не очень безопасно, чтобы делать так, т.к если корневая файловая система находится под e2fsck, то исполняемый файл может быть поврежден!

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

-R

При проверке всех файловых систем с флагом -A, пропускать корневую файловую систему. (Это полезно в случае когда корневая файловая система уже смонтирована для чтения и записи.)

-T

Не показывать название при запуске.

-V

Подробный вывод, в том числе всех команд конкретной файловой системы , которые выполняются.

 Специальные параметры для файловой системы.

Параметры, которые не понимают FSCK передаются в файловой системе конкретной проверкой. Эти опции не должны принимать аргументы, т.к нет никакого способа для Fsck, чтобы иметь возможность должным образом угадать, какие параметры имеют аргументы, а какие нет.

Параметры и аргументы, которые следуют — рассматриваются как файловая система конкретных вариантов, которые будут переданы в файловой системе конкретной проверки.

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

Хотя не гарантируется, что следующие параметры поддерживаются большинством файловых систем:

-a

Автоматическое восстановление файловой системы без каких-либо вопросов (используйте эту опцию с осторожностью). Обратите внимание, что e2fsck поддерживает -a только для обратной совместимости. Эта опция отображается на e2fsck-х с опцией -p, которая является безопасной в использовании, в отличие от опции -a.

-n

Для некоторых файловых систем конкретных проверок, опция -n вызовет fs-specific  FSCK и тем самым данная опция говорит о отказе от попыток исправить все проблемы, но просто сообщать о таких проблемах в стандартный вывод.

В частности, fsck.reiserfs не будет сообщать любые повреждения при использовании этих варианта.

fsck.minix браузер не поддерживает параметр -n вообще.

-r

Интерактивный ремонт файловой системы (спросит подтверждение).

Примечание: Как правило, плохая идея использовать эту опцию, если несколько FSCK в настоящее время работают параллельно. Также обратите внимание, что это поведение для E2fsck по умолчанию; он поддерживает эту опцию только для причин обратной совместимости.

-y

Для некоторых файловых систем конкретная проверка,  — этот вариант вызовет fs-specific Fsck которая всегда пытаться автоматически исправить все обнаруженные и поврежденное в файловой системы. Иногда эксперт может быть в состоянии сделать лучше запустить FSCK вручную. Обратите внимание, что не все файловые системы конкретных проверок поддерживают этот вариант. В частности, fsck.minix и fsck.cramfs не поддерживают опцию -y.

Для удобства – настроим сеть:

# ifconfig eth0 inet 77.120.106.** netmask 255.255.255.0
# route add default gw 77.120.106.1 eth0

В ОС — Linux уже имеется утилита FSCK («Проверка системных файлов») для проверки файловой системы.
Синтаксис выглядит следующим образом, есть необходимость проверить и при необходимости отремонтировать одну или несколько файловых систем Linux:

# fsck Fs-Name-Here
# fsck /dev/xyz
# fsck /home
# fsck.ext3 /dev/hdc1
# fsck.ext2 /dev/flash/device/name

Fs-Name-Here -может быть одним из следующих:
Имя устройства — (e.g. /dev/hda1, /dev/sda2, /dev/md0, /dev/vg1/volume_1).
Точка монтирования — (e.g. /var, /home).
Метка ext2 — (e.g. LABEL=home ).
UUID спецификатор — (e.g. UUID=8536abf2-44c3-5a90-34b3-bfc23456f6bd).

Готовые примеры.

Во-первых, файловая система должна быть демонтирована. Вы не можете восстановить его, пока он работает, но для начала перейдем в init 1:

# init 1

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

# fdisk -l

fdisk -l

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

# file -s /dev/sda1

/dev/sda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (huge files)

Далее, демонтировать файловую систему, например, если это /home (/dev/sda3) файловая система введите команду:

# umount /home

Или

# umount /dev/sda1

Можно вывести, что можно выполнить для данной ФС:

# fsck -N /dev/sda1
 fsck from util-linux-ng 2.17.2
[/sbin/fsck.ext4 (1) -- /boot] fsck.ext4 /dev/sda1

Например, запустим проверку целостности ФС с исправлением всех ошибок в автоматическом режиме:

# fsck.ext4 -y /dev/sda1
e2fsck 1.41.12 (17-May-2010)
/dev/sda1 is mounted.
e2fsck: Cannot continue, aborting.

У меня данный раздел примонтирован, нужно его отмонтировать и выполнить заново данную команду:

# umount /dev/sda1

Отмонтировали, теперь выполняем проверку:

# fsck.ext4 -y /dev/sda1

Вот что получили:

e2fsck 1.41.12 (17-May-2010)
/dev/sda1: clean, 64/128016 files, 148908/512000 blocks

Наконец, запустите FSCK на разделе, введите следующую команду:

# fsck /dev/sda3

Однако не забудьте указать тип файловой системы, используя опцию -t.  Fsck по умолчанию предполагает, файловую систему ext2:

# fsck -t ext3 /dev/sda3

Или для ext3:

# fsck.ext3 /dev/sda3

Или для ext4:

# fsck.ext4 /dev/sda5

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

$ mount

Если какие-либо файлы восстановлены, то они размещаются в /home/lost+found, FSCK команды.

Переходим (используем) на multiuser mode, выполнив:

# init 3

Автоисправление файловая системы при обнаружении ошибок

В ходе проверки файловой системы, если ошибки обнаружены, вы можете получить «FSCK», чтобы отремонтировать в автоматическом режиме вашу файловую систему, нужно к команде добавить флаг «-a». Например:

$ fsck -a /dev/sda1

Аналогично, используя флаг «-y» можете получить такую же работу:

# fsck -y /dev/sda1

Проверка всех файловых систем за один проход

Если есть несколько файловых систем на вашем ПК, то можно проверить все, выполнив команду fsck с флагом «-А». Пример:

# fsck -A

Что он будет делать, чтобы захватить все записи файловой системы с /etc/fstab и сканировать их на наличие ошибок. Вы можете использовать его вместе с «-R» и флагом «-y», чтобы предотвратить его сканирования файловую систему root и исправить все ошибки, если оно имеется:

# fsck -AR -y

 Исключение проверки на смонтированной файловой системе

Как упоминалось ранее, Fsck не может быть запущен на смонтированной файловой системе. Если вы используете флаг -A для проверки всех файловых систем, и некоторые из них установлены, вы можете повредить эти файловые системы.Способ преодолеть это использовать флаг «-M», чтобы предотвратить его от проверки в установленной системы.

Например, выполнив команду

# fsck -M /dev/sdc1

ничего не возвращает и код возврата 0 (означает «нет ошибки»). Сканирования не было сделано вообще, так как все файловые системы монтируются. По этому, нужно отмонтировать данный раздел и выполнить команду заново.

Определение типа файловой системы

Есть моменты, когда вы просто хотите проверить файловую систему определенного типа, скажем, ext2. Вы можете воспользоваться флагом -t, чтобы указать тип файловой системы, чтобы проверить. Например, команда

$ fsck -t ext4 /dev/sdc1

будет сканировать внешний жесткий диск, только если он находится в формате ext4. Кроме того, вы можете комбинировать с флагом «-A» для сканирования всех файловых систем определенного типа:

$ fsck -A -t ext4 -y

Force fsck  запуск каждый раз при загрузке

По умолчанию, в Ubuntu будет работать FSCK после каждых 30 bootups, но если вы хотите, чтобы система выполняла «FSCK» каждый раз когда она загружается, то все что вам нужно сделать, это создать пустой файл «звонок» «forcefsck» и поместите его в корневую папку. Это уведомит ОС,  о там чтобы она выполнила «FSCK»  и начала проверять файловую систему каждый раз во время загрузки:

$ sudo touch /forcefsck

Чтобы изменить частоту проверки, вы можете использовать команды «tune2fs». Следующая команда дает указание системе запустить «FSCK» после каждых 30 загрузок:

# tune2fs -c 30 /dev/sdaX

Или можно использовать опцию «-f» :

# fsck /dev/sda1 -f

Избегать ремонта, но сообщать о проблемах на стандартный вывод с помощью опции -n

Можно печатать все обнаруженные проблемы в стандартный вывод без ремонта в файловой системе, используя FSCK с опцией «-n»:

# fsck -n /dev/sda1

Использование FSCK с графическим интерфейсом 

Для Debian/Ubuntu/Mint можно установить программу:

$ sudo apt-get install gparted

На этом, моя статья «Проверка файловой системы на ошибки с помощью fsck на Linux» подошла к завершению.

FSCK – очень важная утилита для Linux / Unix, она используется для проверки и исправления ошибок в файловой системе.

Она похоже на утилиту «chkdsk» в операционных системах Windows.

Она также доступна для операционных систем Linux, MacOS, FreeBSD.

FSCK означает «File System Consistency Check», и в большинстве случаев он запускается во время загрузки, но может также запускаться суперпользователем вручную, если возникнет такая необходимость.

Может использоваться с 3 режимами работы,

1- Проверка наличия ошибок и позволить пользователю решить, что делать с каждой ошибкой,

2- Проверка на наличие ошибок и возможность сделать фикс автоматически, или,

3- Проверка наличия ошибок и возможность отобразить ошибку, но не выполнять фикс.

Содержание

  1. Синтаксис использования команды FSCK
  2. Команда Fsck с примерами
  3. Выполним проверку на ошибки в одном разделе
  4. Проверьте файловую систему на ошибки и исправьте их автоматически
  5. Проверьте файловую систему на наличие ошибок, но не исправляйте их
  6. Выполним проверку на ошибки на всех разделах
  7. Проверим раздел с указанной файловой системой
  8. Выполнять проверку только на несмонтированных дисках

Синтаксис использования команды FSCK

$ fsck options drives

Опции, которые можно использовать с командой fsck:

  • -p Автоматический фикс (без вопросов)
  • -n не вносить изменений в файловую систему
  • -у принять «yes» на все вопросы
  • -c Проверить наличие плохих блоков и добавить их в список.
  • -f Принудительная проверка, даже если файловая система помечена как чистая
  • -v подробный режим
  • -b использование альтернативного суперблока
  • -B blocksize Принудительный размер блоков при поиске суперблока
  • -j external_journal Установить местоположение внешнего журнала
  • -l bad_blocks_file Добавить в список плохих блоков
  • -L bad_blocks_file Установить список плохих блоков

Мы можем использовать любую из этих опций, в зависимости от операции, которую нам нужно выполнить.

Давайте обсудим некоторые варианты команды fsck с примерами.

Команда Fsck с примерами

Примечание: – Прежде чем обсуждать какие-либо примеры, прочтите это. Мы не должны использовать FSCK на смонтированных дисках, так как высока вероятность того, что fsck на смонтированном диске повредит диск навсегда.

Поэтому перед выполнением fsck мы должны отмонтировать диск с помощью следующей команды:

$ umount drivename

Например:

$ umount /dev/sdb1

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

$ fdisk -l

Также при запуске fsck мы можем получить некоторые коды ошибок.

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

  • 0 – нет ошибок
  • 1 – исправлены ошибки файловой системы
  • 2 – система должна быть перезагружена
  • 4 – Ошибки файловой системы оставлены без исправлений
  • 8 – Операционная ошибка
  • 16 – ошибка использования или синтаксиса
  • 32 – Fsck отменен по запросу пользователя
  • 128 – Ошибка общей библиотеки

Теперь давайте обсудим использование команды fsck с примерами в системах Linux.

Выполним проверку на ошибки в одном разделе

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

$ umount /dev/sdb1

$ fsck /dev/sdb1

Проверьте файловую систему на ошибки и исправьте их автоматически

Запустите команду fsck с параметром «a» для проверки целостности и автоматического восстановления, выполните следующую команду.

Мы также можем использовать опцию «у» вместо опции «а».

$ fsck -a /dev/sdb1

Проверьте файловую систему на наличие ошибок, но не исправляйте их

В случае, если нам нужно только увидеть ошибки, которые происходят в нашей файловой системе, и не нужно их исправлять, тогда мы должны запустить fsck с опцией “n”,

$ fsck -n /dev/sdb1

Выполним проверку на ошибки на всех разделах

Чтобы выполнить проверку файловой системы для всех разделов за один раз, используйте fsck с опцией «A»

$ fsck -A

Чтобы отключить проверку корневой файловой системы, мы будем использовать опцию «R»

$ fsck -AR

Проверим раздел с указанной файловой системой

Чтобы запустить fsck на всех разделах с указанным типом файловой системы, например, «ext4», используйте fsck с опцией «t», а затем тип файловой системы,

$ fsck -t ext4 /dev/sdb1

или

$ fsck -t -A ext4

Выполнять проверку только на несмонтированных дисках

Чтобы убедиться, что fsck выполняется только на несмонтированных дисках, мы будем использовать опцию «M» при запуске fsck,

$ fsck -AM

Вот наше короткое руководство по команде fsck с примерами.

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

Параметры fsck
Пример проверки диска на ошибки с помощью fsck
Запуск автоматической проверки и исправления найденных ошибок
Ручное добавление параметров в меню GRUB при загрузке ОС
Добавление параметров в меню GRUB с помощью утилиты grubby
Создание файла /forcefsck
Запуск проверки в ручном режиме
Использование загрузочного диска/flash для проверки файловой системы на ошибки
Проверка LVM-разделов с помощью утилиты fsck

В определенных случаях  (в результате сбоя или некорректного завершения работы)  на файловой системе могут накапливаться ошибки. В РЕД ОС для проверки файловой системы и исправления ошибок имеется утилита  fsck («file system consistency check»).

Инструмент fsck обладает следующим функционалом:

  • проверка файловой системы при возникновении проблем (не загружается система/поврежденные файлы) или в качестве профилактического обслуживания;

  • диагностика состояния внешних накопителей, таких как SD-карты или USB-накопители.

Базовый синтаксис соответствует следующему шаблону:

 fsck <опции> <файловая_система>

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

На нашем Youtube-канале вы можете подробнее ознакомиться с возможностями проверки файловой системы на наличие ошибок, просмотрев видео Проверка файловой системы на наличие ошибок, а также найти много другой полезной информации.

Параметры fsck

fsck –p – утилита автоматически исправит найденные ошибки.

Вывод аналогичен простой проверке.

fsck –с – проверка файловой системы на поврежденные сектора.

Для получения списка команд наберите fsck ––help или fsck –h.

Опция Описание
-a Устаревшая опция. Указывает исправлять все найденные ошибки без одобрения пользователя.
-r Применяется для файловых систем ext. Указывает fsck спрашивать пользователя перед исправлением каждой ошибки
-n Выполняет только проверку ФС, без исправления ошибок. Используется также для получения информации о ФС
-c Применяется для файловых систем ext3/4. Помечает все повреждённые блоки для исключения последующей записи в них
-f Принудительно проверяет ФС, даже если ФС исправна
-y Автоматически подтверждает запросы к пользователю
-b Задаёт адрес суперблока
-p Автоматически исправлять найденные ошибки. Заменяет устаревшую опцию -a
-A Проверяет все ФС
-С [<fd>] Показывает статус выполнения. Здесь fd – дескриптор файла при отображении через графический интерфейс
-l Блокирует устройство для исключительного доступа
-M Запрещает проверять примонтированные ФС
-N Показывает имитацию выполнения, без запуска реальной проверки
-P Проверять вместе с корневой ФС
-R Пропускает проверку корневой ФС. Может использоваться только совместно с опцией -A
-r [<fd>] Выводит статистику для каждого проверенного устройства
-T Не показывать заголовок при запуске
-t <тип> Задаёт ФС для проверки. Можно задавать несколько ФС, перечисляя через запятую
-V Выводит подробное описание выполняемых действий

Пример проверки диска на ошибки с помощью fsck

Запуск автоматической проверки и исправления найденных ошибок

Существует несколько способов запуска автоматической проверки на ошибки:

1. Ручное добавление параметров в меню GRUB при загрузке ОС.

2. Добавление параметров в меню GRUB с помощью утилиты grubby.

3. Создание файла /forcefsck.

1. Ручное добавление параметров в меню GRUB при загрузке ОС

Первый вариант проверки и  исправления ошибок на разделах жесткого диска.

В меню GRUB перейдите в режим редактирования загрузочной строки, нажав при этом клавишу e. Добавьте параметры:

fsck.mode=force fsck.repair=yes

в конец предпоследней строки.

Нажмите Ctrl+Х для запуска ОС с этими параметрами, во время запуска будет произведена проверка разделов диска, и при наличии ошибок произведено их исправление.

2. Добавление параметров в меню GRUB с помощью утилиты grubby

Существует еще один способ добавления параметров ядра для принудительной проверки файловой системы на ошибки и их исправления. Добавить параметры можно командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --args="fsck.mode=force fsck.repair=yes"

Удалить установленные параметры можно следующей командой:

grubby --update-kernel /boot/vmlinuz-$(uname -r) --remove-args="fsck.mode=force fsck.repair=yes"

3. Создание файла /forcefsck

Бывают ситуации, когда систему необходимо проверить на наличие ошибок в незапланированный момент. Для этого можно принудительно запустить утилиту fsck для проверки при следующей перезагрузке. Запуск осуществляется командой:

sudo touch /forcefsck

Команда sudo (после ввода пароля) предоставит права для создания с помощью touch пустого файла в корне диска /forcefsck, который послужит сигналом (флагом) для fsck, что нужно проверить диски. 

Останется только перезагрузить компьютер и fsck начнет проверять все жесткие диски, указанные в /etc/fstab.

Запуск проверки в ручном режиме

Следующий метод относится к проверке диска, когда операционная система загружена в режиме single mode.

1. Запустим ОС в single mode, для этого пропишите в меню загрузки grub параметр init=/bin/bash в конце строки, которая начинается на linux16, см. рисунок.

Также данная строка может начинаться с linuxefi, этот параметр характерен для систем с загрузкой в UEFI. Нажмите «ctrl+x» для запуска с этим параметром(init=/bin/bash).

2. Запустите проверку выполнив команду:

/usr/sbin/fsck -ACVfyv

Во время проверки на экране появится отчет о выполненных операциях, если отчет длинный, то можно его можно пролистать вверх сочетанием клавиш shift+PageUp. После проверки дисков перезагрузите компьютер, нажав на кнопку на системном блоке.

Наглядное видео примера проверки диска на ошибки:

Использование загрузочного диска/flash для проверки файловой системы на ошибки.

Загрузившись в режим восстановления операционной системы РЕД ОС с помощью загрузочного диска или съемного накопителя с установленным образом операционной системы РЕД ОС. Выберите пункт: «Решение проблем» -> «Исправить установленную RED OS».

Система перезагрузится в режим восстановления. Введите «2» и нажмите 2 раза Enter. Так вы смонтируете операционную систему в режим «Только для чтения»

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

setfont cyr-sun16

Потом введите команду:

# сhroot /mnt/sysimage

После этого можете вводить fsck:

# fsck -ACVfyv

Если проверка завершится с такой ошибкой:

[путь_к_файловой_системе] is mounted

Введите:

umount [путь_к_файловой_системе]

И еще раз запустите утилиту fsck:

# fsck -ACVfyv
fsck from util-linux 2.30.2
…

Если система не выявит ошибок, то получится такой вывод:

[путь_к_файловой_системе] clean …

Чтобы выйти из режима восстановления, вы должны смонтировать все разделы, которые были отмонтированы командой umount, с помощью команды mount, нажать сочетание клавиш сtrl+d, а затем ввести команду reboot, которая перезапустит вашу операционную систему.

# reboot

По умолчанию, утилита fsck при проверке будет использовать разделы, указанные в /etc/fstab/, сформированные при установке операционной системы РЕД ОС.

Проверка LVM-разделов с помощью утилиты fsck

Перед проведением проверки необходимо найти устройство и размонтировать его.

Для просмотра всех подключенных устройств и проверки расположения диска выполните команду:

lsblk 

 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
 sda 8:0 0 20G 0 disk 
 ├─sda1 8:1 0 1G 0 part /boot
 └─sda2 8:2 0 19G 0 part 
 ├─ro_redos-root 253:0 0 17G 0 lvm /
 └─ro_redos-swap 253:1 0 2G 0 lvm [SWAP]
 sr0 11:0 1 4,3G 0 rom /run/media/user/redos-MUROM-7.3.1 x86_64

При попытке запустить проверку на смонтированном диске или разделе в консоли появляется предупреждение о том, что невозможно продолжить проверку, так как диск смонтирован.

fsck -nf /dev/ro_redos/root 

 fsck из util-linux 2.37.3
 e2fsck 1.44.6 (5-Mar-2019)
 Warning! /dev/mapper/ro_redos-root is mounted.

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

umount <файловая_система>

Однако попытка выполнить данную процедуру на работающей ОС ни к чему не приведет.

umount /dev/ro_redos/root 

 umount: /: target is busy.

Также проблемой при попытке проверить LVM-разделы может быть и то, что они являются не активными. Для проверки следует использовать команду:

lvscan 

 ACTIVE            '/dev/ro_redos/swap' [2,00 GiB] inherit
 ACTIVE            '/dev/ro_redos/root' [<17,00 GiB] inherit

Для активации раздела служит команда:

vgchange –ay <раздел>

Таким образом, можно сделать вывод, что проверка LVM-разделов через консоль с использованием утилиты fsck невозможна. Но это не значит, что LVM-разделы совсем не подлежат проверке. Существует как минимум два способа, позволяющие провести диагностику LVM-разделов. 

Первым способом является проведение проверки через консоль загрузчика операционной системы GRUB.

А вторым — запуск утилиты fsck в live-сессии системы.

Очевидным плюсом при проверке дисковых пространств, в том числе LVM-разделов, через live-сессию является то, что разделы там по умолчанию являются не смонтированными. Поэтому проверка LVM-раздела будет выполнена с первого раза.

Дата последнего изменения: 18.01.2023

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

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

Но если питание выключается неожиданно, часть данных теряется, и могут быть потерянны важные данные, что приведет к повреждению самой файловой системы. В этой статье мы рассмотрим как восстановить файловую систему fsck, для нескольких популярных файловых систем, а также поговорим о том, как происходит восстановление ext4.

Немного теории

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

Современные файловые системы делятся на два типа — журналируемые и нежурналируемые. Журналиуемые файловые системы записывают в лог все действия, которые собираются выполнить, а после выполнения стирают эти записи. Это позволяет очень быстро понять была ли файловая система повреждена. Но не сильно помогает при восстановлении. Чтобы восстановить файловую систему linux необходимо проверить каждый блок файловой системы и найти поврежденные сектора.

Для этих целей используется утилита fsck. По сути, это оболочка для других утилит, ориентированных на работу только с той или иной файловой системой, например, для fat одна утилита, а для ext4 совсем другая.

В большинстве систем для корневого раздела проверка fsck запускается автоматически, но это не касается других разделов, а также не сработает если вы отключили проверку.

В этой статье мы рассмотрим ручную работу с fsck. Возможно, вам понадобиться LiveCD носитель, чтобы запустить из него утилиту, если корневой раздел поврежден. Если же нет, то система сможет загрузиться в режим восстановления и вы будете использовать утилиту оттуда. Также вы можете запустить fsck в уже загруженной системе. Только для работы нужны права суперпользователя, поэтому выполняйте ее через sudo.

А теперь давайте рассмотрим сам синтаксис утилиты:

$ fsck [опции] [опции_файловой_системы] [раздел_диска]

Основные опции указывают способ поведения утилиты, оболочки fsck. Раздел диска — это файл устройства раздела в каталоге /dev, например, /dev/sda1 или /dev/sda2. Опции файловой системы специфичны для каждой отдельной утилиты проверки.

А теперь давайте рассмотрим самые полезные опции fsck:

  • -l — не выполнять другой экземпляр fsck для этого жесткого диска, пока текущий не завершит работу. Для SSD параметр игнорируется;
  • -t — задать типы файловых систем, которые нужно проверить. Необязательно указывать устройство, можно проверить несколько разделов одной командой, просто указав нужный тип файловой системы. Это может быть сама файловая система, например, ext4 или ее опции в формате opts=ro. Утилита просматривает все файловые системы, подключенные в fstab. Если задать еще и раздел то к нему будет применена проверка именно указанного типа, без автоопределения;
  • -A — проверить все файловые системы из /etc/fstab. Вот тут применяются параметры проверки файловых систем, указанные в /etc/fstab, в том числе и приоритетность. В первую очередь проверяется корень. Обычно используется при старте системы;
  • -C — показать прогресс проверки файловой системы;
  • -M — не проверять, если файловая система смонтирована;
  • -N — ничего не выполнять, показать, что проверка завершена успешно;
  • -R — не проверять корневую файловую систему;
  • -T — не показывать информацию об утилите;
  • -V — максимально подробный вывод.

Это были глобальные опции утилиты. А теперь рассмотрим опции для работы с файловой системой, их меньше, но они будут более интересны:

  • -a — во время проверки исправить все обнаруженные ошибки, без каких-либо вопросов. Опция устаревшая и ее использовать не рекомендуется;
  • -n — выполнить только проверку файловой системы, ничего не исправлять;
  • -r — спрашивать перед исправлением каждой ошибки, используется по умолчанию для файловых систем ext;
  • -y — отвечает на все вопросы об исправлении ошибок утвердительно, можно сказать, что это эквивалент a.
  • -c — найти и занести в черный список все битые блоки на жестком диске. Доступно только для ext3 и ext4;
  • -f — принудительная проверка файловой системы, даже если по журналу она чистая;
  • -b — задать адрес суперблока, если основной был поврежден;
  • -p — еще один современный аналог опции -a, выполняет проверку и исправление автоматически. По сути, для этой цели можно использовать одну из трех опций: p, a, y.

Теперь мы все разобрали и вы готовы выполнять восстановление файловой системы linux. Перейдем к делу.

Как восстановить файловую систему в fsck

Допустим, вы уже загрузились в LiveCD систему или режим восстановления. Ну, одним словом, готовы к восстановлению ext4 или любой другой поврежденной ФС. Утилита уже установлена по умолчанию во всех дистрибутивах, так что устанавливать ничего не нужно.

Восстановление файловой системы

Если ваша файловая система находится на разделе с адресом /dev/sda1 выполните:

sudo fsck -y /dev/sda1

fsck3

Опцию y указывать необязательно, но если этого не сделать утилита просто завалит вас вопросами, на которые нужно отвечать да.

Восстановление поврежденного суперблока

Обычно эта команда справляется со всеми повреждениями на ура. Но если вы сделали что-то серьезное и повредили суперблок, то тут fsck может не помочь. Суперблок — это начало файловой системы. Без него ничего работать не будет.

Но не спешите прощаться с вашими данными, все еще можно восстановить. С помощью такой команды смотрим куда были записаны резервные суперблоки:

sudo mkfs -t ext4 -n /dev/sda1

fsck1

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

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

sudo fsck -b 98304 /dev/sda1

fsck2

После этого, скорее всего, вам удастся восстановить вашу файловую систему. Но рассмотрим еще пару примеров.

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

Проверим файловую систему, даже если она чистая:

sudo fsck -fy /dev/sda1

fsck4

Битые сектора

Или еще мы можем найти битые сектора и больше в них ничего не писать:

sudo fsck -c /dev/sda1

fsck5

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

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

sudo fsck -t ext4 /dev/sdb1

fsck6

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

С помощью флага -A вы можете проверить все файловые системы, подключенные к компьютеру:

sudo fsck -A -y

Но такая команда сработает только в режиме восстановления, если корневой раздел и другие разделы уже примонтированы она выдаст ошибку. Но вы можете исключить корневой раздел из проверки добавив R:

sudo fsck -AR -y

Или исключить все примонтированные файловые системы:

sudo fsck -M -y

Также вы можете проверить не все файловые системы, а только ext4, для этого используйте такую комбинацию опций:

sudo fsck -A -t ext4 -y

Или можно также фильтровать по опциям монтирования в /etc/fstab, например, проверим файловые системы, которые монтируются только для чтения:

sudo fsck -A -t opts=ro

Проверка примонтированных файловых систем

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

sudo mount -o remount,ro /dev/sdb1

А теперь проверка файловой системы fsck в принудительном режиме:

sudo fsck -fy /dev/sdb1

fsck7

Просмотр информации

Если вы не хотите ничего исправлять, а только посмотреть информацию, используйте опцию -n:

sudo fsck -n /dev/sdb1

fsck8

Выводы

Вот и все, теперь вы знаете как выполняется восстановление файловой системы ext4 или любой другой, поддерживаемой в linux fsck. Если у вас остались вопросы, спрашивайте в комментариях!

На десерт сегодня видео на английском про различия файловых систем ext4 и xfs, как обычно, есть титры:

https://www.youtube.com/watch?v=pECp066gGcY

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Понравилась статья? Поделить с друзьями:
  • Express exe ошибка при выключении
  • Explorer ошибка 403
  • Explorer ntdll dll ошибка windows 10
  • Explorer exe пустая ошибка
  • Explorer exe ошибка файловой системы 2147416359