Из-за различных неполадок или неожиданного отключения компьютера файловая система может быть повреждена. При обычном выключении все файловые системы монтируются только для чтения, а все не сохраненные данные записываются на диск.
Но если питание выключается неожиданно, часть данных теряется, и могут быть потерянны важные данные, что приведет к повреждению самой файловой системы. В этой статье мы рассмотрим как восстановить файловую систему 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
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Оригинал: 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, для нескольких популярных файловых систем, а также поговорим о том, как происходит восстановление 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 при копировании материала ссылка на источник обязательна .
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 с примерами.
Пожалуйста, не стесняйтесь присылать нам свои вопросы, используя поле для комментариев ниже.
|
Duplicate Article |
See: SystemAdministration/Fsck and TestingStorageMedia
Introduction
Contents
- Introduction
-
Basic filesystem checks and repairs
- e2fsprogs — ext2, ext3, ext4 filesystems
- dosfstools — FAT12, FAT16 and FAT32 (vfat) filesystem
- ntfs-3g (previously also ntfsprogs) — NTFS filesystem
- reiserfstools — reiserfs
- xfsprogs — xfs
- Missing superblock
- Bad blocks
- Sources and further reading
This guide will help diagnose filesystem problems one may come across on a GNU/Linux system. New sections are still being added to this howto.
Basic filesystem checks and repairs
The most common method of checking filesystem’s health is by running what’s commonly known as the fsck utility. This tool should only be run against an unmounted filesystem to check for possible issues. Nearly all well established filesystem types have their fsck tool. e.g.: ext2/3/4 filesystems have the e2fsck tool. Most notable exception until very recently was btrfs. There are also filesystems that do not need a filesystem check tool i.e.: read-only filesystems like iso9660 and udf.
e2fsprogs — ext2, ext3, ext4 filesystems
Ext2/3/4 have the previously mentioned e2fsck tool for checking and repairing filesystem. This is a part of e2fsprogs package — the package needs to be installed to have the fsck tool available. Unless one removes it in aptitude during installation, it should already be installed.
There are 4 ways the fsck tool usually gets run (listed in order of frequency of occurrence):
- it runs automatically during computer bootup every X days or Y mounts (whichever comes first). This is determined during the creation of the filesystem and can later be adjusted using tune2fs.
- it runs automatically if a filesystem has not been cleanly unmounted (e.g.: powercut)
- user runs it against an unmounted filesystem
-
user makes it run at next bootup
case 1
When filesystem check is run automatically X days after the last check or after Y mounts, Ubuntu gives user the option to interrupt the check and continue bootup normally. It is recommended that user lets it finish the check.
case 2
If a filesystem has not been cleanly unmounted, the system detects a dirty bit on the filesystem during the next bootup and starts a check. It is strongly recommended that one lets it finish. It is almost certain there are errors on the filesystem that fsck will detect and attempt to fix. Nevertheless, one can still interrupt the check and let the system boot up on a possibly corrupted filesystem.
2 things can go wrong
-
fsck dies — If fsck dies for whatever reason, you have the option to press ^D (Ctrl + D) to continue with an unchecked filesystem or run fsck manually. See e2fsck cheatsheet for details how.
-
fsck fails to fix all errors with default settings — If fsck fails to fix all errors with default settings, it will ask to be run manually by the user. See e2fsck cheatsheet for details how.
case 3
User may run fsck against any filesystem that can be unmounted on a running system. e.g. if you can issue umount /dev/sda3 without an error, you can run fsck against /dev/sda3.
case 4
You can make your system run fsck by creating an empty ‘forcefsck’ file in the root of your root filesystem. i.e.: touch /forcefsck Filesystems that have 0 or nothing specified in the sixth column of your /etc/fstab, will not be checked
Till Ubuntu 6.06 you can also issue shutdown -rF now to reboot your filesystem and check all partitions with non-zero value in sixth column of your /etc/fstab. Later versions of Ubuntu use Upstart version of shutdown which does not support the -F option any more.
Refer to man fstab for what values are allowed.
e2fsck cheatsheet
e2fsck has softlinks in /sbin that one can use to keep the names of fsck tools more uniform. i.e. fsck.ext2, fsck.ext3 and fsck.ext4 (similarly, other filesystem types have e.g.: fsck.ntfs) This cheatsheet will make use of these softlinks and will use ext4 and /dev/sda1 as an example.
-
fsck.ext4 -p /dev/sda1 — will check filesystem on /dev/sda1 partition. It will also automatically fix all problems that can be fixed without human intervention. It will do nothing, if the partition is deemed clean (no dirty bit set).
-
fsck.ext4 -p -f /dev/sda1 — same as before, but fsck will ignore the fact that the filesystem is clean and check+fix it nevertheless.
-
fsck.ext4 -p -f -C0 /dev/sda1 — same as before, but with a progress bar.
-
fsck.ext4 -f -y /dev/sda1 — whereas previously fsck would ask for user input before fixing any nontrivial problems, -y means that it will simply assume you want to answer «YES» to all its suggestions, thus making the check completely non-interactive. This is potentially dangerous but sometimes unavoidable; especially when one has to go through thousands of errors. It is recommended that (if you can) you back up your partition before you have to run this kind of check. (see dd command for backing up filesystems/partitions/volumes)
-
fsck.ext4 -f -c -C0 /dev/sda1 — will attempt to find bad blocks on the device and make those blocks unusable by new files and directories.
-
fsck.ext4 -f -cc -C0 /dev/sda1 — a more thorough version of the bad blocks check.
-
fsck.ext4 -n -f -C0 /dev/sda1 — the -n option allows you to run fsck against a mounted filesystem in a read-only mode. This is almost completely pointless and will often result in false alarms. Do not use.
In order to create and check/repair these Microsoft(TM)’s filesystems, dosfstools package needs to be installed. Similarly to ext filesystems’ tools, dosfsck has softlinks too — fsck.msdos and fsck.vfat. Options, however, vary slightly.
dosfsck cheatsheet
These examples will use FAT32 and /dev/sdc1
-
fsck.vfat -n /dev/sdc1 — a simple non-interactive read-only check
-
fsck.vfat -a /dev/sdc1 — checks the file system and fixes non-interactively. Least destructive approach is always used.
-
fsck.vfat -r /dev/sdc1 — interactive repair. User is always prompted when there is more than a single approach to fixing a problem.
-
fsck.vfat -l -v -a -t /dev/sdc1 — a very verbose way of checking and repairing the filesystem non-interactively. The -t parameter will mark unreadable clusters as bad, thus making them unavailable to newly created files and directories.
Recovered data will be dumped in the root of the filesystem as fsck0000.rec, fsck0001.rec, etc. This is similar to CHK files created by scandisk and chkdisk on MS Windows.
ntfs-3g (previously also ntfsprogs) — NTFS filesystem
Due to the closed sourced nature of this filesystem and its complexity, there is no fsck.ntfs available on GNU/Linux (ntfsck isn’t being developed anymore). There is a simple tool called ntfsfix included in ntfs-3g package. Its focus isn’t on fixing NTFS volumes that have been seriously corrupted; its sole purpose seems to be making an NTFS volume mountable under GNU/Linux.
Normally, NTFS volumes are non-mountable if their dirty bit is set. ntfsfix can help with that by clearing trying to fix the most basic NTFS problems:
-
ntfsfix /dev/sda1 — will attempt to fix basic NTFS problems. e.g.: detects and fixes a Windows XP bug, leading to a corrupt MFT; clears bad cluster marks; fixes boot sector problems
-
ntfsfix -d /dev/sda1 — will clear the dirty bit on an NTFS volume.
-
ntfsfix -b /dev/sda1 — clears the list of bad sectors. This is useful after cloning an old disk with bad sectors to a new disk.
Windows 8 and GNU/Linux cohabitation problems This segment is taken from http://www.tuxera.com/community/ntfs-3g-advanced/ When Windows 8 is restarted using its fast restarting feature, part of the metadata of all mounted partitions are restored to the state they were at the previous closing down. As a consequence, changes made on Linux may be lost. This can happen on any partition of an internal disk when leaving Windows 8 by selecting “Shut down” or “Hibernate”. Leaving Windows 8 by selecting “Restart” is apparently safe.
To avoid any loss of data, be sure the fast restarting of Windows 8 is disabled. This can be achieved by issuing as an administrator the command : powercfg /h off
Install reiserfstools package to have reiserfsck and a softlink fsck.reiserfs available. Reiserfsck is a very talkative tool that will let you know what to do should it find errors.
-
fsck.reiserfs /dev/sda1 — a readonly check of the filesystem, no changes made (same as running with —check). This is what you should run before you include any other options.
-
fsck.reiserfs —fix-fixable /dev/sda1 — does basic fixes but will not rebuild filesystem tree
-
fsck.reiserfs —scan-whole-partition —rebuild-tree /dev/sda1 — if basic check recommends running with —rebuild-tree, run it with —scan-whole-partition and do NOT interrupt it! This will take a long time. On a non-empty 1TB partition, expect something in the range of 10-24 hours.
xfsprogs — xfs
If a check is necessary, it is performed automatically at mount time. Because of this, fsck.xfs is just a dummy shell script that does absolutely nothing. If you want to check the filesystem consistency and/or repair it, you can do so using the xfs_repair tool.
-
xfs_repair -n /dev/sda — will only scan the volume and report what fixes are needed. This is the no modify mode and you should run this first.
-
xfs_repair will exit with exit status 0 if it found no errors and with exit status 1 if it found some. (You can check exit status with echo $?)
-
-
xfs_repair /dev/sda — will scan the volume and perform all fixes necessary. Large volumes take long to process.
XFS filesystem has a feature called allocation groups (AG) that enable it to use more parallelism when allocating blocks and inodes. AGs are more or less self contained parts of the filesystem (separate free space and inode management). mkfs.xfs creates only a single AG by default.
xfs_repair checks and fixes your filesystems by going through 7 phases. Phase 3 (inode discovery and checks) and Phase 4 (extent discovery and checking) work sequentially through filesystem’s allocation groups (AG). With multiple AGs, this can be heavily parallelised. xfs_repair is clever enough to not process multiple AGs on same disks.
Do NOT bother with this if any of these is true for your system:
- you created your XFS filesystem with only a single AG.
-
your xfs_repair is older than version 2.9.4 or you will make the checks even slower on GNU/Linux. You can check your version with xfs_repair -V
- your filesystem does not span across multiple disks
otherwise:
-
xfs_repair -o ag_stride=8 -t 5 -v /dev/sda — same as previous example but reduces the check/fix time by utilising multiple threads, reports back on its progress every 5 minutes (default is 15) and its output is more verbose.
-
if your filesystem had 32 AGs, the -o ag_stride=8 would start 4 threads, one to process AGs 0-7, another for 8-15, etc… If ag_stride is not specified, it defaults to the number of AGs in the filesystem.
-
-
xfs_repair -o ag_stride=8 -t 5 -v -m 2048 /dev/sda — same as above but limits xfs_repair’s memory usage to a maximum of 2048 megabytes. By default, it would use up to 75% of available ram. Please note, -o bhash=xxx has been superseded by the -m option
== jfsutils — jfs == == btrfs ==
Missing superblock
Bad blocks
Sources and further reading
- man pages
-
<XFS user guide> — more details about XFS filesystem
Содержание
- Требования:
- Что делает команда 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 проверяет все файлы и целостность файловой системы. Эту команду можно выполнить вручную или автоматически.
ВНИМАНИЕ: Прежде чем пытаться проверить или восстановить файловую систему, всегда помните о необходимости размонтирования раздела. Если этого не сделать, файловая система может быть повреждена.
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. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
fsck (file system check) — утилита для проверки и восстановления файловых систем Linux. Проверка файловых систем разных физических дисков выполняется параллельно, что позволяет значительно её ускорить (см. fsck(8)).
Процесс загрузки Arch включает в себя процедуру fsck, поэтому проверка файловых систем на всех носителях выполняется автоматически при каждой загрузке. По этой причине обычно нет необходимости выполнять её через командную строку.
Проверка при загрузке
Механизм
Существует два возможных варианта:
- mkinitcpio предоставляет хук
fsck
для проверки корневой файловой системы перед монтированием. Корневой раздел должен быть смонтирован на запись и чтение (параметр ядраrw
) [1]. - 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
- Убедитесь, что используются соответствующие хуки в
/etc/mkinitcpio.conf
, а также что вы не забыли пересоздать initramfs после последнего редактирования этого файла. - Проверьте fstab! Только корневому разделу должен быть задан параметр
1
в последнем поле, все остальные разделы должны иметь либо2
, либо0
. Также проверьте файл на наличие иных опечаток.
ext2fs: no external journal
Иногда (например, из-за внезапного отключения питания) файловые системы ext(3/4) могут повредиться так сильно, что восстановить их обычным способом не удастся. Как правило, при этом fsck выводит сообщение о том, что не удалось найти журнал (no external journal). В этом случае выполните команды ниже.
Отмонтируйте раздел от соответствующего каталога:
# umount каталог
Запишите на раздел новый журнал:
# tune2fs -j /dev/раздел
Запустите fsck, чтобы восстановить раздел:
# fsck -p /dev/раздел
Introduction
The fsck (File System Consistency Check) Linux utility checks filesystems for errors or outstanding issues. The tool is used to fix potential errors and generate reports.
This utility comes by default with Linux distributions. No specific steps or an installation procedure is required to use fsck. Once you load the terminal, you are ready to exploit the functionalities of the tool.
Follow this guide to learn how to use fsck to check and repair filesystem on a Linux machine. The tutorial will list examples of how to use the tool and for which use cases.
Prerequisites
- Linux or UNIX-like system
- Access to a terminal or command line
- A user with root permissions to run the tool
When to Use fsck in Linux
The fsck tool can be used in various situations:
- Use fsck to run a filesystem check as preventive maintenance or when there is an issue with your system.
- One common problem fsck can diagnose is when the system fails to boot.
- Another one is when you get an input/output error when the files on your system become corrupt.
- You can also use the fsck utility to check the health of external drives, such as SD cards or USB flash drives.
Basic fsck Syntax
The basic syntax for the fsck utility follows this pattern:
fsck <options> <filesystem>
In the above example, filesystem
can be a device, a partition, a mount point, etc. You can also use filesystem-specific options at the end of the command.
There are a few steps to do before you check and repair your file system. You need to locate a device and unmount.
View Mounted Disks and Partitions
To view all mounted devices on your system and check disk location, use one of the available tools in Linux.
One method to locate the disk you want to scan is to list the filesystem disks with the df
command:
df -h
The tool prints the data usage on your system and filesystems. Take note of the disk you want to check with the fsck
command.
To view partitions for your first disk, for example, use the following command:
sudo parted /dev/sda 'print'
sda is how Linux refers to your first SCSI disk. If you have two, the second would be sdb, and so on.
In our example, we got one result since there was only one partition on this virtual machine. You will get more results if you have more partitions.
The disk name here is /dev/sda
and then the number of partitions is shown in the Number column. In our case, it is one: sda1.
Unmount the Disk
Before you can run a disk check with fsck
, you need to unmount a disk or partition. If you try to run fsck
on a mounted disk or partition, you will get a warning:
Make sure to run the unmount
command:
sudo umount /dev/sdb
Replace /dev/sdb
with the device you want to unmount.
Note that you cannot unmount root filesystems. Hence, now fsck
can’t be used on a running machine. More on that towards the end of the guide.
Run fsck to Check for Errors
Now that you unmounted the disk, you can run fsck
. To check the second disk, enter:
sudo fsck /dev/sdb
The above example shows the output for a clean disk. If there are multiple issues on your disk, a prompt appears for each one where you have to confirm the action.
The exit code the fsck utility returns is the sum of these states:
Mount the Disk
When you finish checking and repairing a device, mount the disk so you can use it again.
In our case, we will remount the sdb disk:
mount /dev/sdb
Do a Dry Run with fsck
Before you perform a live check, you can do a test run with fsck. Pass the -N
option to the fsck
command to perform a test:
sudo fsck -N /dev/sdb
The output prints what would happen but does not perform any actions.
Fix Detected Errors Automatically with fsck
To try to fix potential problems without getting any prompts, pass the -y
option to fsck
.
sudo fsck -y /dev/sdb
This way, you say “yes, try to fix all detected errors” without being prompted every time.
If no errors are found, the output looks the same as without the -y
option.
Skip Repair but Print fsck Errors in the Output
Use the -n
option if you want to check potential error on a file system without repairing them.
We have a second drive sdb with some journaling errors. The -n
flag prints the error without fixing it:
sudo fsck -n /dev/sdb
Force fsck to Do a Filesystem Check
When you perform a fsck on a clean device, the tool skips the filesystem check. If you want to force the filesystem check, use the -f
option.
For example:
sudo fsck -f /dev/sdb
The scan will perform all five checks to search for corruptions even when it thinks there are no issues.
Run fsck on All Filesystems at Once
If you want to perform a check on all filesystems with fsck in one go, pass the -A
flag. This option will go through the etc/fstab
file in one run.
Since root filesystems can’t be unmounted on a running machine, add the -R
option to skip them:
fsck -AR
To avoid the prompts, add the -y
option we talked about.
Skip fsck on a Specific Filesystem
If you want fsck to skip checking a filesystem, you need to add -t
and “no” before a filesystem.
For example, to skip ext3 filesystem, run this command:
sudo fsck -AR -t noext3 -y
We added -y
to skip the prompts.
Skip Fsck on Mounted Filesystems
To make sure you do not try to run fsck on a mounted filesystem, add the -M
option. This flag tells the fsck tool to skip any mounted filesystems.
To show you the difference, we will run fsck on sdb while it is mounted, and then when we unmount it.
sudo fsck -M /dev/sdb
While sdb is mounted, the tool exits without running a check. Then, we unmount sdb and run the same command again. This time, fsck
checks the disk and reports it as clean, or with errors.
Note: To remove the first title line of the fsck tool “fsck from util-linux 2.31.1” use the -T
option.
Run fsck on Linux Root Partition
As we already mentioned, fsck cannot check root partitions on a running machine since they are mounted and in use. However, even Linux root partitions can be checked if you boot into recovery mode and run the fsck check:
1. To do so, power on or reboot your machine through the GUI or by using the terminal:
sudo reboot
2. Press and hold the shift key during boot-up. The GNU GRUB menu appears.
3. Select Advanced options for Ubuntu.
4. Then, select the entry with (recovery mode) at the end. Let the system load into the Recovery Menu.
5. Select fsck from the menu.
6. Confirm by selecting <Yes> at the prompt.
7. Once finished, select resume at the recovery menu to boot up the machine.
What if fsck is Interrupted?
You should not interrupt the fsck tool while it is in progress. However, if the process is interrupted, fsck will finish the ongoing check and then stop.
In case the utility found an error while the check was in process, it will not try to fix anything if interrupted. You can rerun the check next time and let it finish.
fsck Linux Command Options Summary
To wrap up, below is the list of the options you can use with the fsck Linux utility.
Option | Description |
---|---|
-a |
Try to repair filesystem errors automatically. There will be no prompts, so use it with caution. |
-A |
Check all filesystems listed in /etc/fstab. |
-C |
Show progress for ext2 and ext3 filesystems. |
-f |
Force fsck to check a filesystem. The tool checks even when the filesystem appears to be clean. |
-l |
Lock the device to prevent other programs from using the partition during the scan and repair. |
-M |
Do not check mounted filesystems. The tool returns an exit code 0 when a filesystem is mounted. |
-N |
Do a dry run. The output prints what the fsck would do without executing any actions. The warning or error messages are printed as well. |
-P |
Use to run a scan on multiple filesystems in parallel. It can cause issues, depending on your setup. Use with caution. |
-R |
Tell the fsck tool not to check the root filesystems when you use the -A option. |
-r |
Print device statistics. |
-t |
Specify which filesystems type(s) to check with fsck. Consult the man page for detailed information. |
-T |
Hide the title when the tool starts. |
-y |
Try to repair filesystem errors automatically during the check. |
-V |
Verbose output. |
Conclusion
Now you know how to use fsck Linux command to check and repair filesystems. The guide provided examples of the tool’s functionalities and features.
Make sure you have root permissions before running the listed commands. For a detailed description of all options, you can consult the man file of the tool or visit the fsck Linux man page.
Filesystems are responsible for organizing how data is stored and recovered. One way or another, with time, filesystem may become corrupted and certain parts of it may not be accessible. If your filesystem develops such inconsistency it is recommend to verify its integrity.
This can be completed via system utility called fsck (file system consistency check). This check can be done automatically during boot time or ran manually.
In this article, we are going to review the fsck utility and its usage to help you repair disk errors.
When to Use fsck in Linux
There are different scenarios when you will want to run fsck. Here are few examples:
- The system fails to boot.
- Files on the system become corrupt (often you may see input/output error).
- Attached drive (including flash drives/SD cards) is not working as expected.
fsck Available options
Fsck command needs to be run with superuser privileges or root. You can use it with different arguments. Their usage depend on your specific case. Below you will see some of the more important options:
-
-A
– Used for checking all filesystems. The list is taken from/etc/fstab
.-C
– Show progress bar.-l
– Locks the device to guarantee no other program will try to use the partition during the check.-M
– Do not check mounted filesystems.-N
– Only show what would be done – no actual changes are made.-P
– If you want to check filesystems in parallel, including root.-R
– Do not check root filesystem. This is useful only with ‘-A
‘.-r
– Provide statistics for each device that is being checked.-T
– Does not show the title.-t
– Exclusively specify the filesystem types to be checked. Types can be comma separated list.-V
– Provide description what is being done.
How to Run fsck to Repair Linux File System Errors
In order to run fsck, you will need to ensure that the partition you are going to check is not mounted. For the purpose of this article, I will use my second drive /dev/sdb
mounted in /mnt
.
Here is what happens if I try to run fsck when the partition is mounted.
# fsck /dev/sdb
To avoid this unmount the partition using.
# umount /dev/sdb
Then fsck can be safely ran with.
# fsck /dev/sdb
Understanding fsck exit codes
After running fsck, it will return an exit code. These cods can be seen in fsck’s manual by running:
# man 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 Checking canceled by user request 128 Shared-library error
Repair Linux Filesystem Errors
Sometimes more than one error can be found on a filesystem. In such cases you may want fsck to automatically attempt to correct the errors. This can be done with:
# fsck -y /dev/sdb
The -y
flag, automatically “yes”
to any prompts from fsck to correct an error.
Similarly, you can ran the same on all filesystems (without root):
$ fsck -AR -y
How to Run fsck on Linux Root Partition
In some cases, you may need to run fsck on the root partition of your system. Since you cannot run fsck while the partition is mounted, you can try one of these options:
- Force fsck upon system boot
- Run fsck in rescue mode
We will review both situations.
Force fsck Upon System Boot
This is relatively easy to complete, the only thing you need to do is create a file called forcefsck in the root partition of your system. Use the following command:
# touch /forcefsck
Then you can simply force or schedule a reboot of your system. During the next bootup, the fsck will be performed. If downtime is critical, it is recommended to plan this carefully, since if there are many used inodes on your system, fsck may take some extra time.
After your system boots, check if the file still exists:
# ls /forcefsck
If it does, you may want to remove it in order to avoid fsck on every system boot.
Run fsck in Rescue Mode
Running fsck in rescue mode requires few more steps. First prepare your system for reboot. Stop any critical services like MySQL/MariaDB etc and then type.
# reboot
During the boot, hold down the shift
key so that the grub menu is shown. Select the “Advanced options”.
Then choose “Recovery mode”.
In the next menu select “fsck”.
You will be asked if you wish to have your /
filesystem remounted. Select “yes”
.
You should see something similar to this.
You can then resume to normal boot, by selecting “Resume”.
Conclusion
In this tutorial you learned how to use fsck and run consistency checks on different Linux filesystem. If you have any questions about fsck, please do not hesitate to submit them in the comment section below.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
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 с примерами.
Пожалуйста, не стесняйтесь присылать нам свои вопросы, используя поле для комментариев ниже.
Introduction
The fsck (File System Consistency Check) Linux utility checks filesystems for errors or outstanding issues. The tool is used to fix potential errors and generate reports.
This utility comes by default with Linux distributions. No specific steps or an installation procedure is required to use fsck. Once you load the terminal, you are ready to exploit the functionalities of the tool.
Follow this guide to learn how to use fsck to check and repair filesystem on a Linux machine. The tutorial will list examples of how to use the tool and for which use cases.
Prerequisites
- Linux or UNIX-like system
- Access to a terminal or command line
- A user with root permissions to run the tool
When to Use fsck in Linux
The fsck tool can be used in various situations:
- Use fsck to run a filesystem check as preventive maintenance or when there is an issue with your system.
- One common problem fsck can diagnose is when the system fails to boot.
- Another one is when you get an input/output error when the files on your system become corrupt.
- You can also use the fsck utility to check the health of external drives, such as SD cards or USB flash drives.
Basic fsck Syntax
The basic syntax for the fsck utility follows this pattern:
fsck <options> <filesystem>
In the above example, filesystem
can be a device, a partition, a mount point, etc. You can also use filesystem-specific options at the end of the command.
There are a few steps to do before you check and repair your file system. You need to locate a device and unmount.
View Mounted Disks and Partitions
To view all mounted devices on your system and check disk location, use one of the available tools in Linux.
One method to locate the disk you want to scan is to list the filesystem disks with the df
command:
df -h
The tool prints the data usage on your system and filesystems. Take note of the disk you want to check with the fsck
command.
To view partitions for your first disk, for example, use the following command:
sudo parted /dev/sda 'print'
sda is how Linux refers to your first SCSI disk. If you have two, the second would be sdb, and so on.
In our example, we got one result since there was only one partition on this virtual machine. You will get more results if you have more partitions.
The disk name here is /dev/sda
and then the number of partitions is shown in the Number column. In our case, it is one: sda1.
Unmount the Disk
Before you can run a disk check with fsck
, you need to unmount a disk or partition. If you try to run fsck
on a mounted disk or partition, you will get a warning:
Make sure to run the unmount
command:
sudo umount /dev/sdb
Replace /dev/sdb
with the device you want to unmount.
Note that you cannot unmount root filesystems. Hence, now fsck
can’t be used on a running machine. More on that towards the end of the guide.
Run fsck to Check for Errors
Now that you unmounted the disk, you can run fsck
. To check the second disk, enter:
sudo fsck /dev/sdb
The above example shows the output for a clean disk. If there are multiple issues on your disk, a prompt appears for each one where you have to confirm the action.
The exit code the fsck utility returns is the sum of these states:
Mount the Disk
When you finish checking and repairing a device, mount the disk so you can use it again.
In our case, we will remount the sdb disk:
mount /dev/sdb
Do a Dry Run with fsck
Before you perform a live check, you can do a test run with fsck. Pass the -N
option to the fsck
command to perform a test:
sudo fsck -N /dev/sdb
The output prints what would happen but does not perform any actions.
Fix Detected Errors Automatically with fsck
To try to fix potential problems without getting any prompts, pass the -y
option to fsck
.
sudo fsck -y /dev/sdb
This way, you say “yes, try to fix all detected errors” without being prompted every time.
If no errors are found, the output looks the same as without the -y
option.
Skip Repair but Print fsck Errors in the Output
Use the -n
option if you want to check potential error on a file system without repairing them.
We have a second drive sdb with some journaling errors. The -n
flag prints the error without fixing it:
sudo fsck -n /dev/sdb
Force fsck to Do a Filesystem Check
When you perform a fsck on a clean device, the tool skips the filesystem check. If you want to force the filesystem check, use the -f
option.
For example:
sudo fsck -f /dev/sdb
The scan will perform all five checks to search for corruptions even when it thinks there are no issues.
Run fsck on All Filesystems at Once
If you want to perform a check on all filesystems with fsck in one go, pass the -A
flag. This option will go through the etc/fstab
file in one run.
Since root filesystems can’t be unmounted on a running machine, add the -R
option to skip them:
fsck -AR
To avoid the prompts, add the -y
option we talked about.
Skip fsck on a Specific Filesystem
If you want fsck to skip checking a filesystem, you need to add -t
and “no” before a filesystem.
For example, to skip ext3 filesystem, run this command:
sudo fsck -AR -t noext3 -y
We added -y
to skip the prompts.
Skip Fsck on Mounted Filesystems
To make sure you do not try to run fsck on a mounted filesystem, add the -M
option. This flag tells the fsck tool to skip any mounted filesystems.
To show you the difference, we will run fsck on sdb while it is mounted, and then when we unmount it.
sudo fsck -M /dev/sdb
While sdb is mounted, the tool exits without running a check. Then, we unmount sdb and run the same command again. This time, fsck
checks the disk and reports it as clean, or with errors.
Note: To remove the first title line of the fsck tool “fsck from util-linux 2.31.1” use the -T
option.
Run fsck on Linux Root Partition
As we already mentioned, fsck cannot check root partitions on a running machine since they are mounted and in use. However, even Linux root partitions can be checked if you boot into recovery mode and run the fsck check:
1. To do so, power on or reboot your machine through the GUI or by using the terminal:
sudo reboot
2. Press and hold the shift key during boot-up. The GNU GRUB menu appears.
3. Select Advanced options for Ubuntu.
4. Then, select the entry with (recovery mode) at the end. Let the system load into the Recovery Menu.
5. Select fsck from the menu.
6. Confirm by selecting <Yes> at the prompt.
7. Once finished, select resume at the recovery menu to boot up the machine.
What if fsck is Interrupted?
You should not interrupt the fsck tool while it is in progress. However, if the process is interrupted, fsck will finish the ongoing check and then stop.
In case the utility found an error while the check was in process, it will not try to fix anything if interrupted. You can rerun the check next time and let it finish.
fsck Linux Command Options Summary
To wrap up, below is the list of the options you can use with the fsck Linux utility.
Option | Description |
---|---|
-a |
Try to repair filesystem errors automatically. There will be no prompts, so use it with caution. |
-A |
Check all filesystems listed in /etc/fstab. |
-C |
Show progress for ext2 and ext3 filesystems. |
-f |
Force fsck to check a filesystem. The tool checks even when the filesystem appears to be clean. |
-l |
Lock the device to prevent other programs from using the partition during the scan and repair. |
-M |
Do not check mounted filesystems. The tool returns an exit code 0 when a filesystem is mounted. |
-N |
Do a dry run. The output prints what the fsck would do without executing any actions. The warning or error messages are printed as well. |
-P |
Use to run a scan on multiple filesystems in parallel. It can cause issues, depending on your setup. Use with caution. |
-R |
Tell the fsck tool not to check the root filesystems when you use the -A option. |
-r |
Print device statistics. |
-t |
Specify which filesystems type(s) to check with fsck. Consult the man page for detailed information. |
-T |
Hide the title when the tool starts. |
-y |
Try to repair filesystem errors automatically during the check. |
-V |
Verbose output. |
Note: Learn about the error code SIGSEGV (signal segmentation violation) and how to troubleshoot it.
Conclusion
Now you know how to use fsck Linux command to check and repair filesystems. The guide provided examples of the tool’s functionalities and features.
Make sure you have root permissions before running the listed commands. For a detailed description of all options, you can consult the man file of the tool or visit the fsck Linux man page.