FSCK – очень важная утилита для Linux / Unix, она используется для проверки и исправления ошибок в файловой системе.
Она похоже на утилиту «chkdsk» в операционных системах Windows.
Она также доступна для операционных систем Linux, MacOS, FreeBSD.
FSCK означает «File System Consistency Check», и в большинстве случаев он запускается во время загрузки, но может также запускаться суперпользователем вручную, если возникнет такая необходимость.
Может использоваться с 3 режимами работы,
1- Проверка наличия ошибок и позволить пользователю решить, что делать с каждой ошибкой,
2- Проверка на наличие ошибок и возможность сделать фикс автоматически, или,
3- Проверка наличия ошибок и возможность отобразить ошибку, но не выполнять фикс.
Содержание
- Синтаксис использования команды FSCK
- Команда Fsck с примерами
- Выполним проверку на ошибки в одном разделе
- Проверьте файловую систему на ошибки и исправьте их автоматически
- Проверьте файловую систему на наличие ошибок, но не исправляйте их
- Выполним проверку на ошибки на всех разделах
- Проверим раздел с указанной файловой системой
- Выполнять проверку только на несмонтированных дисках
Синтаксис использования команды 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 на Linux» я расскажу как можно проверить файловую систему на вашей ОС в Linux.
Некоторым системам необходим пароль root чтобы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В этом случае –стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с другого диска.
Fsck расшифровывается как «файловая система Проверка целостности» (file system consistency check). На большинстве систем, Fsck запускается во время загрузки, если определенные условия.
Сам Fsck команда взаимодействует с соответствующей файловой системой конкретных FSCK команд, созданной авторами файловой системы. Независимо от типа вашей файловой системы, Fsck как правило, имеет три режима работы:
- Проверка на наличие ошибок и подсказывает пользователю интерактивное решение, как решить индивидуальные проблемы;
- Проверка на наличие ошибок и постарается автоматически исправить все ошибки;
- Проверка на наличие ошибок без возможности восстановить их, но тогда выдаст ошибки на стандартный вывод.
Код выхода возвращается 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

Далее, выполним проверку чтобы узнать тип файловой системы:
# 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. Он использует программы, специфичные для типа файловой системы, которую он проверяет.
Вы можете использовать команду fsck для восстановления поврежденных файловых систем в ситуациях, когда система не загружается или раздел не может быть смонтирован.
В этой статье мы поговорим о команде fsck.
Команда fsck принимает следующую общую форму:
|
fsck [OPTIONS] [FILESYSTEM] |
Только root или пользователи с привилегиями sudo могут очистить буфер.
Если FILESYSTEM в качестве аргумента указано no, fsck проверяются устройства, указанные в файле fstab.
Никогда не запускайте fsckна смонтированных разделах, так как это может повредить файловую систему. Прежде чем пытаться проверить или восстановить файловые системы, всегда делайте unmountэто сначала.
Команда fsck является оболочкой для различных контроллеров файловой системы Linux ( fsck.*) и принимает различные параметры в зависимости от типа файловой системы.
Проверьте справочные страницы для получения дополнительной информации о конкретном контролере. Например, чтобы просмотреть доступные параметры fsck.ext4, введите:
Простейший вариант использования команды fsck – восстановить поврежденную файловую систему ext3 или ext4 без полномочий root.
- Если вы не знаете имя устройства, использовать fdisk, df или любой другой инструмент, чтобы найти его.
- Размонтировать устройство:
- Запустите fsck для восстановления файловой системы:
Опция -p указывает fsck автоматически исправить все проблемы, которые могут быть надежно закреплены без вмешательства пользователя.
- После восстановления файловой системы смонтируйте раздел:
fsck не может проверить корневую файловую систему на работающей машине, потому что она не может быть размонтирована.
Если вы хотите проверить или восстановить корневую файловую систему, у вас есть несколько вариантов в вашем распоряжении. Вы можете настроить запуск fsck при загрузке, загрузить систему в режиме восстановления или использовать live CD.
Для запуска fsck в режиме восстановления:
- Войдите в меню загрузки и выберите «Дополнительные параметры»
- Выберите режим восстановления и затем «fsck».
- Когда будет предложено перемонтировать корневую файловую систему, выберите «Да».
- После этого возобновите нормальную загрузку.
Чтобы запустить fsck из живого дистрибутива:
- Загрузите живую раздачу.
- Используйте fdisk или, parted чтобы найти имя корневого раздела.
- Откройте терминал и запустите:
- После этого перезагрузите дистрибутив и загрузите вашу систему.
В большинстве дистрибутивов Linux fsck запускается во время загрузки, если файловая система помечена как грязная или после определенного количества загрузок или времени.
Чтобы увидеть текущий счетчик монтирования, проверить номер частоты, интервал проверки и время последней проверки для определенного раздела, используйте инструмент tune2fs:
|
sudo tune2fs -l /dev/sdc1 | grep -i ‘last checked|mount count’ |
|
Mount count: 292 Maximum mount count: -1 Last checked: Tue Jul 12 14:23:33 2018 Check interval: 0 (<none>) |
- «Maximum mount count» – это количество монтирований, после которых будет проверяться файловая система. Значение 0 или -1 означает, что fsck никогда не будет работать.
- «Check interval» – это максимальное время между двумя проверками файловой системы.
Если, например, вы хотите запускать fsck после каждых 25 загрузок (монтирования), введите:
|
sudo tune2fs -c 25 /dev/sdc1 |
Вы также можете установить максимальное время между двумя проверками. Например, чтобы установить один месяц, вы должны выполнить:
|
sudo tune2fs -i 1m /dev/sdc1 |
Чтобы заставить fsck работать во время загрузки на дистрибутивах SystemD, передайте следующие параметры загрузки ядра:
|
fsck.mode=force fsck.repair=yes |
В старых дистрибутивах fsck будет работать при загрузке, если файл /forcefsck присутствует:
fstab это файл конфигурации, который сообщает системе, как и где монтировать разделы.
Файл /etc/fstab содержит список записей в следующем виде:
|
# [File System] [Mount Point] [File System Type] [Options] [Dump] [PASS] /dev/sda1 / ext4 defaults 0 1 /dev/sda2 /home ext4 defaults 0 2 server:/dir /media/nfs nfs defaults 0 0 |
Последний, шестой столбец ( [PASS]) – это параметр, который контролирует порядок, в котором проверки файловой системы выполняются во время перезагрузки.
- 0 – Не проверяй.
- 1 – Файловые системы должны проверяться первыми и по одному за раз.
- 2 – Все остальные файловые системы, которые проверяются позже и, возможно, параллельно.
Корневая файловая система должна иметь значение 1, а все остальные файловые системы, которые вы хотите проверить, должны иметь значение 2.
Из-за различных неполадок или неожиданного отключения компьютера файловая система может быть повреждена. При обычном выключении все файловые системы монтируются только для чтения, а все не сохраненные данные записываются на диск.
Но если питание выключается неожиданно, часть данных теряется, и могут быть потерянны важные данные, что приведет к повреждению самой файловой системы. В этой статье мы рассмотрим как восстановить файловую систему 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

Опцию y указывать необязательно, но если этого не сделать утилита просто завалит вас вопросами, на которые нужно отвечать да.
Восстановление поврежденного суперблока
Обычно эта команда справляется со всеми повреждениями на ура. Но если вы сделали что-то серьезное и повредили суперблок, то тут fsck может не помочь. Суперблок — это начало файловой системы. Без него ничего работать не будет.
Но не спешите прощаться с вашими данными, все еще можно восстановить. С помощью такой команды смотрим куда были записаны резервные суперблоки:
sudo mkfs -t ext4 -n /dev/sda1

На самом деле эта команда создает новую файловую систему. Вместо ext4 подставьте ту файловую систему, в которую был отформатирован раздел, размер блока тоже должен совпадать иначе ничего не сработает. С опцией -n никаких изменений на диск не вноситься, а только выводится информация, в том числе о суперблоках.
Теперь у нас есть шесть резервных адресов суперблоков и мы можем попытаться восстановить файловую систему с помощью каждого из них, например:
sudo fsck -b 98304 /dev/sda1

После этого, скорее всего, вам удастся восстановить вашу файловую систему. Но рассмотрим еще пару примеров.
Проверка чистой файловой системы
Проверим файловую систему, даже если она чистая:
sudo fsck -fy /dev/sda1

Битые сектора
Или еще мы можем найти битые сектора и больше в них ничего не писать:
sudo fsck -c /dev/sda1

Установка файловой системы
Вы можете указать какую файловую систему нужно проверять на разделе, например:
sudo fsck -t ext4 /dev/sdb1

Проверка всех файловых систем
С помощью флага -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

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

Выводы
Вот и все, теперь вы знаете как выполняется восстановление файловой системы ext4 или любой другой, поддерживаемой в linux fsck. Если у вас остались вопросы, спрашивайте в комментариях!
На десерт сегодня видео на английском про различия файловых систем ext4 и xfs, как обычно, есть титры:
https://www.youtube.com/watch?v=pECp066gGcY

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Иногда плохие вещи случаются с хорошими системами.
К счастью, вы являетесь пользователем Linux и у вас есть fsck (проверка файловой системы), чтобы помочь с потенциально поврежденной файловой системой. Эта утилита используется для проверки и (необязательно) восстановления файловой системы.
Есть несколько сценариев, где вы можете использовать fsck. Как правило, вы захотите выполнить эту команду, если ваша система не загружается, устройство (внешние накопители или носители данных) не работает должным образом, или если вы видели доказательства повреждения файла.
Fsck на самом деле является «внешним интерфейсом» для ряда специфичных для файловой системы средств проверки, таких как fsck.vfat, fsck.ext2 и т. д. Их указывать необязательно, но вы можете найти более сложные опции в man страницы этих более точных команд.
Команда fsck следует шаблону, подобному большинству команд Linux.
fsck [options] [filesystem]
Если вы не укажете файловую систему, система проанализирует ваш файл fstab (/etc/fstab) на наличие устройств для сканирования.
Вам нужно будет выполнить команду как пользователь root или использовать ее с sudo.
Вы можете использовать команду fdisk или df для вывода списка жесткого диска в Linux . Таким образом, вы можете указать, какое устройство проверять с помощью команды fsck.
Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 98563270 97512647 46.5G Linux filesystem /dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem
Размонтируйте устройство перед запуском fsck
Не запускайте fsck на смонтированном устройстве, вам нужно сначала отключить цель, чтобы избежать повреждения ваших файлов.
Если вы попытаетесь запустить fsck на смонтированном устройстве, вы должны увидеть такую ошибку:
destroyer@andreyex:~$ sudo fsck /dev/sda3 fsck from util-linux 2.34 e2fsck 1.45.5 (07-Jan-2020) /dev/sda3 is mounted. e2fsck: Cannot continue, aborting.
Запуск fsck на нормальном здоровом диске выглядит следующим образом:
destroyer@andreyex:~$ sudo fsck /dev/sda2 fsck from util-linux 2.34 fsck.fat 4.1 (2017-01-24) /dev/sda2: 5 files, 1967/1972 clusters
Хотя fsck принимает имя устройства, например /dev/sda, вы можете ввести UUID, чтобы избежать путаницы с подключением и отключением устройств. UUID – это фиксированное значение, назначенное вашему устройству и не будет зависеть от этих системных изменений.
Понимание кодов выхода для команды fsck
Это список кодов, которые могут быть возвращены из fsck после проверки диска. Ваш код выхода будет суммой этих кодов, если вы проанализируете один диск. Если вы используете fsck на нескольких устройствах, он вернет побитовое ИЛИ двух сумм.
- 0 – нет ошибок
- 1 – исправлены ошибки файловой системы
- 2 – система должна быть перезагружена
- 4 – Ошибки файловой системы оставлены без исправлений
- 8 – Операционная ошибка
- 16 – ошибка использования или синтаксиса
- 32 – Fsck отменен по запросу пользователя
- 128 – Ошибка общей библиотеки
Вы можете проверить код завершения последней команды запуска, используя команду echo $?.
Практическое использование команды fsck
Теперь, когда вы немного знакомы с командой fsck, давайте посмотрим на практические примеры использования этой команды.
Ремонт USB-диска и других съемных устройств
Для наших целей предположим, что вы уже определили проблемное устройство /dev/sdb.
Во-первых, вам нужно убедиться, что диск отключен:
sudo umount /dev/sdb
Теперь запустите команду fsck:
sudo fsck /dev/sdb
Проверьте вывод на наличие ошибок. Если ничего не отображается, проверьте код выхода с помощью echo $?.
Есть также некоторые опции флагов, которые мы можем добавить, чтобы позволить автоматическое исправление. Эти команды не стандартизированы, и вы должны проверить тип файловой системы и сравнить документацию с этой конкретной страницы руководства.
Несмотря на это, вы можете использовать -pfsck для автоматического восстановления.
sudo fsck -p /dev/sdb
Аналогичным образом -y будут применены исправления к любой обнаруженной поврежденности файловой системы.
Восстановить корневую файловую систему
Вы не можете размонтировать корневой раздел, пока система активна. Если вы подозреваете, что ваша основная файловая система повреждена, вы должны использовать здесь другой подход.
Есть несколько вариантов, которые вы можете использовать. Вы можете запустить fsck во время загрузки, в режиме восстановления или использовать live cd на тему восстановления.
Многие дистрибутивы Linux автоматически запускают fsck после определенного числа неудачных попыток загрузки. Если вы предпочитаете взять дело в свои руки, вы можете запланировать, что система сделает это самостоятельно.
В большинстве современных версий Linux есть инструмент под названием tune2fs.
sudo tune2fs -c 1 /dev/sda
Предполагая, что ваше корневое устройство dev/sda, это команда, которую вы должны ввести.
Теперь, что на самом деле происходит, так это то, что вы меняете системные настройки так, что fsck запускается при каждом nколичестве загрузок (1 в примере). Вы также можете установить это на стандартный интервал времени. Варианты days, weeks, или months.
Допустим, вы хотите, чтобы fsck запускался каждый раз при загрузке, если в течение недели не было проверки. Вы можете использовать -i для указания интервала, и команда будет выглядеть следующим образом.
sudo tune2fs -i 1w /dev/sda
Если вы используете systemd, вы можете принудительно запустить fsck при следующей загрузке, введя следующее:
fsck.mode=force fsck.repair=yes
Вывод
Вы всегда можете обратиться к man-страницам для получения дополнительной информации. Просто используйте man fsckв терминале.
Мы надеемся, что вы узнали что-то новое о команде fsck. Если у вас есть какие-либо комментарии или вопросы, пожалуйста, оставьте их ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Содержание
- Требования:
- Что делает команда fsck
- Команда fsck в Linux
- Проверка и исправление ошибок файловой системы в Linux
- Исправление ошибки корневой файловой системы Linux командой fsck
- Параметры fsck
- Параметры fsck
- Заключение
Команда 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).

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

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

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


Параметры 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 для более подробного изучения.
fsck (проверка файловой системы) — это служебная программа командной строки, которая позволяет выполнять проверки согласованности и интерактивное восстановление в одной или нескольких файловых системах Linux. Он использует программы, зависящие от типа проверяемой файловой системы.
Вы можете использовать команду fsck для восстановления поврежденных файловых систем в ситуациях, когда система не загружается или раздел не может быть смонтирован.
В этой статье мы поговорим о команде fsck .
Как использовать fsck
Команда fsck имеет следующий общий вид:
fsck [OPTIONS] [FILESYSTEM]
Только root или пользователи с привилегиями sudo могут очистить буфер.
Если FILESYSTEM не указан в качестве аргумента, fsck проверяет устройства, перечисленные в fstab .
Никогда не запускайте fsck на смонтированных разделах, так как это может повредить файловую систему. Прежде чем пытаться проверить или восстановить файловую систему, всегда сначала unmount ее.
Команда fsck является оболочкой для различных средств проверки файловой системы Linux ( fsck.* ) И принимает разные параметры в зависимости от типа файловой системы.
Просмотрите страницы руководства для получения дополнительной информации о конкретной программе проверки. Например, чтобы просмотреть параметры, доступные для fsck.ext4 , введите:
man fsck.ext4
Восстановить поврежденную файловую систему
Самый простой вариант использования команды fsck — восстановить поврежденную файловую систему ext3 или ext4 без полномочий root.
-
Если вы не знаете имя устройства, используйте
fdisk,dfили любой другой инструмент, чтобы найти его. -
Размонтируйте устройство:
sudo umount /dev/sdc1 -
Запустите
fsckчтобы восстановить файловую систему:sudo fsck -p /dev/sdc1Параметр
-pуказываетfsckавтоматически исправлять любые проблемы, которые можно безопасно исправить без вмешательства пользователя. -
После восстановления файловой системы смонтируйте раздел:
sudo mount /dev/sdc1
Восстановить корневую файловую систему
fsck не может проверить корневую файловую систему на работающем компьютере, потому что ее нельзя размонтировать.
Если вы хотите проверить или восстановить корневую файловую систему, в вашем распоряжении есть несколько вариантов. Вы можете настроить запуск программы fsck при загрузке, загрузку системы в режиме восстановления или использование Live CD.
Чтобы запустить fsck в режиме восстановления:
- Войдите в меню загрузки и выберите Дополнительные параметры.
- Выберите режим восстановления и затем «fsck».
- Когда будет предложено перемонтировать корневую файловую систему, выберите «Да».
- После этого возобновите обычную загрузку.
Чтобы запустить fsck из живого дистрибутива:
-
Загрузите live-дистрибутив.
-
Используйте
fdiskилиpartedчтобы найти имя корневого раздела. -
Откройте терминал и запустите:
sudo fsck -p /dev/sda1 -
После этого перезагрузите живой дистрибутив и загрузите вашу систему.
Проверить файловые системы при загрузке
В большинстве дистрибутивов Linux fsck запускается во время загрузки, если файловая система помечена как грязная или после определенного количества загрузок или времени.
Чтобы увидеть текущее количество подключений, частоту проверки, интервал проверки и время последней проверки для определенного раздела, используйте инструмент tune2fs :
sudo tune2fs -l /dev/sdc1 | grep -i 'last checked|mount count'
Mount count: 292
Maximum mount count: -1
Last checked: Tue Jul 24 11:10:07 2018
Check interval: 0 (<none>)
- «Максимальное количество подключений» — это количество подключений, после которых файловая система будет проверена. Значение
0или-1означает, чтоfsckникогда не запустится. - «Интервал проверки» — это максимальное время между двумя проверками файловой системы.
Если, например, вы хотите запускать fsck после каждых 25 загрузок (монтирований), введите:
sudo tune2fs -c 25 /dev/sdc1
Вы также можете установить максимальное время между двумя проверками. Например, чтобы установить его на один месяц, вы должны выполнить:
sudo tune2fs -i 1m /dev/sdc1
Чтобы заставить fsck запускаться во время загрузки в дистрибутивах SystemD, передайте следующие параметры загрузки ядра:
fsck.mode=force
fsck.repair=yes
В более старых дистрибутивах fsck будет запускаться при загрузке, если /forcefsck файл /forcefsck :
sudo touch /forcefsck
Параметры fstab
fstab — это файл конфигурации, который сообщает системе, как и где монтировать разделы.
Файл /etc/fstab содержит список записей в следующем виде:
/etc/fstab
# [File System] [Mount Point] [File System Type] [Options] [Dump] [PASS]
/dev/sda1 / ext4 defaults 0 1
/dev/sda2 /home ext4 defaults 0 2
server:/dir /media/nfs nfs defaults 0 0
Последний, шестой столбец ( [PASS] ) — это параметр, который контролирует порядок, в котором проверки файловой системы выполняются во время перезагрузки.
0— Не проверять.-
1— файловые системы для проверки в первую очередь и по очереди. -
2— Все остальные файловые системы, которые проверяются позже и, возможно, параллельно.
Корневая файловая система должна иметь значение 1 , а все остальные файловые системы, которые вы хотите проверить, должны иметь значение 2 .
Выводы
fsck — это инструмент командной строки для проверки и, при необходимости, восстановления файловых систем Linux.
Чтобы узнать больше о команде fsck , посетите страницу руководства fsck или введите man fsck в своем терминале.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Оригинал: How to Use ‘fsck’ to Repair File System Errors in Linux
Автор: Marin Todorov
Дата публикации: 1 октября 2018 года
Перевод: А. Кривошей
Дата перевода: июль 2019 г.
Файловые системы отвечают за организацию хранения данных. Так или иначе, со временем файловая система может быть повреждена и некоторые ее части могут быть недоступны. Если ваша файловая система имеет такое несоответствие, рекомендуется проверить ее целостность.
Это можно выполнить с помощью системной утилиты fsck (file system consistency check). Эта проверка может быть выполнена автоматически во время загрузки или запущена вручную.
В этой статье мы рассмотрим утилиту fsck и ее использование, чтобы помочь вам исправить дисковые ошибки.
Когда нужно использовать fsck в Linux
Существуют разные сценарии, когда вам понадобится запустить fsck. Вот несколько примеров:
Система не загружается.
Файлы в системе поврежденны (часто вы можете увидеть ошибку ввода/вывода).
Подключенный диск (включая флэшки/SD-карты) не работает должным образом.
Опции fsck
Команда Fsck должна быть запущена с привилегиями суперпользователя (root). Вы можете использовать ее с разными аргументами. Их использование зависит от вашего конкретного случая. Ниже вы увидите некоторые из наиболее важных опций:
-A — используется для проверки всех файловых систем. Список берется из /etc/fstab.
-C — показывать индикатор выполнения.
-l — блокирует устройство, чтобы гарантировать, что никакая другая программа не попытается использовать раздел во время проверки.
-M — не проверять смонтированные файловые системы.
-N — только показывать, что будет сделано — не делать никаких реальных изменений.
-P — если вы хотите проверять файловые системы параллельно, включая корневую.
-R — не проверять корневую файловую систему. Это полезно только вместе с ‘-A‘.
-r — предоставить статистику для каждого проверяемого устройства.
-T — не показывает заголовок.
-t — исключительно указать типы файловых систем, которые будут проверяться. Типы могут быть разделены запятыми.
-V — предоставить описание того, что делается.
Как запустить fsck для исправления ошибок файловой системы Linux
Чтобы запустить fsck, вам нужно убедиться, что раздел, который вы собираетесь проверить, не смонтирован. Для этой статьи я буду использовать мой второй диск /dev/sdb, смонтированный в /mnt.
Вот что произойдет, если я попытаюсь запустить fsck на смонтированном разделе.
# fsck /dev/sdb

Чтобы избежать этого, размонтируйте раздел с помощью команды:
# umount /dev/sdb
Теперь fsck можно запустить безопасно.
# fsck /dev/sdb

Понимание кодов выхода fsck
После запуска fsck она вернет код выхода. Эти коды можно увидеть в руководстве fsck, выполнив:
# man fsck 0 Нет ошибок 1 Исправлены ошибки файловой системы 2 Система должна быть перезагружена 4 Ошибки файловой системы остались без исправления 8 Операционная ошибка 16 Ошибка использования или синтаксиса 32 Проверка отменена по запросу пользователя 128 Ошибка общей библиотеки
Исправление ошибок файловой системы Linux
Иногда в файловой системе можно найти ошибки. В таких случаях вы захотите, чтобы fsck автоматически пыталась исправить ошибки. Это можно сделать с помощью следующей команды:
# fsck -y /dev/sdb
Флаг -y автоматически даёт ответ «да» на любые запросы от fsck для исправления ошибок.
Точно так же вы можете запустить команду на всех файловых системах (без корневой):
$ fsck -AR -y
Как запустить fsck в корневом разделе Linux
В некоторых случаях вам может потребоваться запустить fsck в корневом разделе вашей системы. Поскольку вы не можете запустить fsck на смонтированном разделе, вы можете попробовать один из следующих вариантов:
1. Принудительно использовать fsck при загрузке системы
2. Запустить fsck в режиме восстановления
Мы рассмотрим обе ситуации.
Принудительная проверка корневой файловой системы с помощью fsck при загрузке системы
Это относительно легко выполнить, единственное, что вам нужно сделать, это создать файл с именем forcefsck в корневом разделе вашей системы. Используйте следующую команду:
# touch /forcefsck
Во время следующей загрузки будет выполняться fsck. Если время простоя является критическим, рекомендуется тщательно спланировать эту проверку, так как если в вашей системе много используемых inode, fsck может занять некоторое, довольно значительное время.
После загрузки системы проверьте, существует ли этот файл:
# ls /forcefsck
Если он есть, вы можете удалить его, чтобы избежать запуска fsck при каждой загрузке системы.
Запуск fsck в режиме восстановления
Запуск fsck в режиме восстановления требует еще нескольких шагов. Сначала подготовьте систему к перезагрузке. Остановите все важные службы, такие как MySQL/MariaDB и т. д., а затем перезагрузите компьютер.
# reboot
Во время загрузки удерживайте нажатой клавишу Shift, чтобы отобразилось меню grub. Выберите «Advanced options».

Затем выберите «Recovery mode».

В следующем меню выберите «fsck».

Вас спросят, хотите ли вы перемонтировать вашу корневую файловую систему. Выберите «yes».

Вы должны увидеть что-то похожее на это.

Затем вы можете вернуться к нормальной загрузке, выбрав «Resume».

Заключение
Из этого руководства вы узнали, как использовать fsck и выполнять проверки согласованности в разных файловых системах Linux. Если у вас есть какие-либо вопросы о fsck, пожалуйста, не стесняйтесь задавать их в разделе комментариев ниже.
Другие статьи о команде fsck в Linux:
- Программа fsck
- 4 утилиты для устранения проблем файловых систем EXT2, EXT3 и EXT4 в Linux
- Проверка жесткого диска на плохие сектора и блоки в Linux
- Software-RAID HOWTO. 4. Восстановление ошибок
Если вам понравилась статья, поделитесь ею с друзьями:
Иногда по разным причинам (в результате сбоя, некорректного завершения работы) файловые системы накапливают ошибки. Сами ошибки представляют собой «рассогласованные» структуры данных. Естественно, при возникновении такой ситуации необходимо как можно скорее привести повреждённую файловую систему в порядок. С этой задачей отлично справляется утилита fsck. Она действительно очень эффективна и системные администраторы очень часто в первую очередь используют именно ее для восстановления или починки файловых систем.
Содержание
- Как работает fsck?
- Некоторые особенности использования fsck в Linux
- Синтаксис и основные опции fsck
- Примеры использования fsck
- Заключение
Утилита fsck (File System Consistency Check) изначально глубоко проверяла все структуры данных подряд, т. е. целиком всю файловую систему. Для поиска ошибок она задействовала методы эвристического анализа для ускорения и оптимизации процесса поиска ошибок. Однако, даже в этом случае для больших по объёму файловых систем эта процедура могла занимать много часов.
Позднее была реализована схема оценки состояния файловой системы, в основе которой лежит признак «чистого бита файловой системы». Если происходил сбой и файловая система (ФС) некорректно демонтировалась, то в суперблоке ФС устанавливался этот бит. По-умолчанию в Linux-системах на одном из этапов загрузки системы происходит проверка файловых систем, которые зарегистрированы в файлах /etc/fstab, /etc/vfstab, а также в /etc/filesystems. Таким образом, анализируя «чистый бит» ФС во время загрузки системы утилита определяет, стоит ли проводить проверку.
Журналируемые ФС в настоящее время позволяют утилите работать только с теми структурами данных, которым действительно необходима починка или восстановление. При необходимости fsck может восстановить всю ФС целиком благодаря всё тем же журналам ФС.
Некоторые особенности использования fsck в Linux
Для Linux-систем довольно часто (в особенности с использованием ФС ext) проверка ФС может быть организована таким образом, что она будет проводиться при прошествии некоторого числа демонтирований, даже если ФС полностью исправны. Это особенно актуально для настольных компьютеров, которые могут выключаться/включаться каждые сутки, перезагружаться в связи с особенностью их работы и применения, а также из-за свободного к ним доступа для подключения внешних устройств. В таких случаях проверка ФС (хоть и является полезной и благоприятной процедурой), оказывается слишком частой, а потому бессмысленной.
По-умолчанию в Linux проверка ФС проводится по прошествии 20 демонтирований. Для того, чтобы изменить количество демонтирований, после которых нужна проверка ФС нужно воспользоваться командой tune2fs:
$ sudo tune2fs -с 50 /dev/sda1 tune2fs 1.44.1 (24-Mar-2018) Setting maximal mount count to 50
Синтаксис и основные опции fsck
У команды fsck следующий синтаксис:
fsck [параметр] -- [параметры ФС] [<файловая система> . . .]
Основные параметры:
| Опция | Описание |
| -A | Проверяет все ФС |
| -С [<fd>] | Показывает статус выполнения. Здесь fd – дескриптор файла при отображении через графический интерфейс |
| -l | Блокирует устройство для исключительного доступа |
| -M | Запрещает проверять примонтированные ФС |
| -N | Показывает имитацию выполнения, без запуска реальной проверки |
| -P | Проверять вместе с корневой ФС |
| -R | Пропускает проверку корневой ФС. Может использоваться только совместно с опцией -A |
| -r [<fd>] | Выводит статистику для каждого проверенного устройства |
| -T | Не показывать заголовок при запуске |
| -t <тип> | Задаёт ФС для проверки. Можно задавать несколько ФС, перечисляя через запятую |
| -V | Выводит подробное описание выполняемых действий |
Кроме основных опций для fsck существуют и специфические, зависящие от выполняемой задачи и/или ФС. Об этом более подробно можно прочитать в соответствующих страницах интерактивного руководства, используя команду man fsck. В содержании основного руководства для утилиты (в разделе «SEE ALSO») есть ссылки на другие страницы, например fstab(5), mkfs(8), fsck.ext2(8), fsck.ext3(8) и т. д. Информацию по этим ссылкам можно просматривать выполняя команду man с соответствующими параметрами, например man fsck.ext3.
В следующей таблице приводятся дополнительные (специальные), а также наиболее часто используемые опции, позволяющие использовать команду с максимальной гибкостью и эффективностью:
| Опция | Описание |
| -a | Устаревшая опция. Указывает исправлять все найденные ошибки без одобрения пользователя. |
| -r | Применяется для файловых систем ext. Указывает fsck спрашивать пользователя перед исправлением каждой ошибки |
| -n | Выполняет только проверку ФС, без исправления ошибок. Используется также для получения информации о ФС |
| -c | Применяется для файловых систем ext3/4. Помечает все повреждённые блоки для исключения последующей записи в них |
| -f | Принудительно проверяет ФС, даже если ФС исправна |
| -y | Автоматически подтверждает запросы к пользователю |
| -b | Задаёт адрес суперблока |
| -p | Автоматически исправлять найденные ошибки. Заменяет устаревшую опцию -a |
Примеры использования fsck
Для самой типичной ситуации, характерной для случаев, когда нужно восстановить (а точнее «починить») ФС, например на устройстве /dev/sdb2, следует воспользоваться командой:
$ sudo fsck -y /dev/sdb2
Здесь опция -y необходима, т. к. при её отсутствии придётся слишком часто давать подтверждение. Следующая команда позволит произвести принудительную проверку ФС, даже в том случае, если она исправна:
$ sudo fsck -fy /dev/sdb2
Одной из самых полезных является опция, позволяющая помечать повреждённые сектора и эта же опция используется чаще всего. Обычно такие ситуации (с повреждёнными секторами) возникают после сбоев, вызванных нештатным отключением электропитания:
$ sudo fsck -c /dev/sdb2
Работу файловыми системами нужно проводить, когда они отмонтированны от разделов. Однако, если возникает ситуация, когда нужно всё же произвести проверку на примонтированных ФС, то перед тем как использовать команду fsck с соответствующей опцией, нужно сначала перемонтировать нужную ФС в режиме «только для чтения»:
$ sudo mount remount,ro /dev/sdb2 $ sudo fsck -fy /dev/sdb2
Для указания, какую ФС использовать для раздела:
$ sudo fsck -t ext4 -y /dev/sdb2
Если fsck не справляется с исправлением/починкой ФС (что случается очень редко), то это может быть из-за повреждённого суперблока ФС. Его также можно восстановить, поскольку для суперблоков создаются их резервные копии. Но сначала нужно узнать, по каким адресам эти копии записывались, а затем попытаться восстановить суперблок из одной их резервных копий:
$ sudo fdisk -l

$ sudo mkfs -t ext4 -n /dev/xvdb1

$ sudo fsck -b 163840 /dev/xvdb1

Команда fdisk -l упомянута в данном примере для наглядности того, что сначала нужно представлять, с каким устройством работать, т. к. она выводит список (в данном выводе опущен) доступных разделов. Команда mkfs предназначена для создания ФС, но с опцией -n её можно использовать для получения информации о ФС, в том числе и о расположении суперблоков. Следует следить за тем, чтобы ключом -t для mkfs задавалась соответствующая фактическому состоянию файловая система, в данном случае ext4.
Заключение
В данной статье мы рассмотрели работу и использование утилиты fsck. Как видно из статьи использование утилиты не предоставляет большой сложности. А возможности по проверки и восстановлению файловых систем в Linux у нее довольно большие, поэтому знание этой утилиты системному администратору просто необходимы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.