Иногда плохие вещи случаются с хорошими системами.
К счастью, вы являетесь пользователем Linux, и у вас есть fsck (проверка файловой системы), чтобы помочь с потенциально поврежденной файловой системой. Эта утилита используется для проверки и (необязательно) восстановления файловой системы.
Существует несколько сценариев, в которых вы можете захотеть использовать fsck. Как правило, вы запускаете эту команду, если ваша система не загружается, устройство (внешние диски или носители данных) не работает должным образом или если вы заметили признаки повреждения файлов.
fsck на самом деле является "интерфейсом" для ряда специфичных средств проверки файловой системы, таких как fsck.vfat, fsck.ext2 и т.д.
Введение в команду fsck
Команда fsck следует шаблону, аналогичному большинству команд Linux.
fsck [options] [filesystem]
Если вы не укажете файловую систему, система проанализирует ваш файл fstab (/etc/fstab) на предмет устройств для сканирования.
Вам нужно будет запустить команду либо от имени пользователя root, либо использовать ее с помощью sudo.
Вы можете использовать команду fdisk или df для отображения списка жестких дисков в Linux. Таким образом, вы можете указать, какое устройство должно быть проверено с помощью команды fsck.
Отключите устройство перед запуском fsck
Не запускайте fsck на подключенном устройстве, вам нужно будет сначала размонтировать целевое устройство, чтобы избежать повреждения ваших файлов.
Если вы попытаетесь запустить fsck на подключенном устройстве, вы должны увидеть ошибку, подобную этой:
chris@handbook:~$ 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 на обычном, исправном диске выглядит следующим образом:
chris@handbook:~$ 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 $?
Есть также некоторые флаги опций, которые мы можем добавить, чтобы разрешить автоматическую коррекцию. Однако эти команды не стандартизированы, и вам следует проверить тип файловой системы и сравнить документацию с конкретной справочной страницей.
Несмотря на это, как правило, вы можете использовать -p, чтобы разрешить fsck автоматически применять исправления.
sudo fsck -p /dev/sdb
Будут применены исправления к любому обнаруженному повреждению файловой системы.
Восстановите корневую файловую систему
Вы не можете размонтировать корневой раздел, пока система активна. Если вы подозреваете, что ваша основная файловая система повреждена, вам следует использовать здесь другой подход.
Вы можете запустить fsck во время загрузки, в режиме восстановления или использовать live cd для восстановления.
Многие дистрибутивы Linux автоматически запускают fsck после определенного количества неудачных попыток загрузки. Если вы предпочитаете взять дело в свои руки, вы можете настроить систему так, чтобы она делала это самостоятельно.
В большинстве современных версий Linux есть инструмент под названием tune2fs.
sudo tune2fs -c 1 /dev/sda
Предполагая, что ваше корневое устройство dev/sda.
Теперь, что на самом деле происходит? Вы меняете системные настройки так, чтобы fsck запускался при каждом n количестве загрузок (1 в примере). Вы также можете установить для этого стандартный интервал времени. Возможны следующие варианты: d ays, w eeks или m onths.
Установить интервал между двумя проверками. Вы могли бы использовать -i для указания интервала, и команда выглядела бы так.
sudo tune2fs -i 1w /dev/sda #Интервал в одну неделю между проверками
Заключение
Вы всегда можете обратиться к справочным страницам для получения дополнительной информации. Просто используйте man fsckв терминале.
Я надеюсь, вы узнали что-то новое о команде fsck. Если у вас есть какие-либо комментарии или вопросы, пожалуйста, оставьте их ниже.