Поиск по сайту:

Как использовать команду fsck в Linux


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

Файловые системы — это программное обеспечение

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

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

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

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

Проведите предполетную проверку

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

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

Мы начнем с fdisk и направим его в less. Мы не запрашиваем информацию о конкретном разделе. Используя параметр -l (список), fdisk перечисляет таблицы разделов на всех устройствах, которые он находит в файле «/proc/partitions», если он существует.

sudo fdisk -l | less

Мы видим записи для /dev/sda и /dev/sdb. Вы можете прокрутить файл, чтобы увидеть любые другие записи, которые могут существовать на вашем компьютере.

Разделы в /dev/sda перечислены как /dev/sda1, /dev/sda2 и /dev/sda3 . Итак, у нас есть три раздела на первом диске. Мы можем увидеть немного больше информации, используя команду parted . Мы будем использовать параметр print для отображения таблиц разделов в окне терминала.

sudo parted /dev/sda 'print'

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

Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sda: 34.4GB 
Sector size (logical/physical): 512B/512B 
Partition Table: gpt 
Disk Flags:

Number Start  End    Size    File system   Name                 Flags 
1      1049kB 2097kB 1049kB                                     bios_grub 
2      2097kB 540MB  538MB   fat32         EFI System Partition boot, esp 
3      540MB 34.4GB  33.8GB  ext4

В этом тестовом компьютере три диска. Это результаты для двух других дисков /dev/sdb и /dev/sdc. Обратите внимание, что в этих файловых системах нет поля «Имя».

sudo parted /dev/sdb 'print'
Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sdb: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:

Number Start  End    Size   Type     File system Flags 
1      1049kB 21.5GB 21.5GB primary  ext4
sudo parted /dev/sdc 'print'
Model: ATA VBOX HARDDISK (scsi) 
Disk /dev/sdc: 21.5GB 
Sector size (logical/physical): 512B/512B 
Partition Table: msdos 
Disk Flags:

Number Start  End    Size   Type     File system Flags
1      1049kB 21.5GB 21.5GB primary  ext3

Второй и третий диски имеют одинаковый размер, и каждый из них имеет один раздел. Но файловая система на втором диске — ext4, а файловая система на третьем диске — более старая ext3.

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

Мы можем легко узнать это, используя команду df.

df /dev/sdb1
df /dev/sdc1

Использование команды fsck

У нас есть вся необходимая информация. Первое, что мы сделаем, это размонтируем файловую систему, которую собираемся проверить. Мы собираемся работать с файловой системой в первом и единственном разделе /dev/sdb, то есть /dev/sdb1. Ранее мы видели, что это файловая система ext4, и она смонтирована в «/run/mount/dave/sata2».

Мы будем использовать команду umount. Обратите внимание, что в «umount» нет «n».

sudo umount /run/mount/dave/sata2

С umount отсутствие новостей — хорошая новость. Если вы молча вернулись в командную строку, все готово.

sudo fsck /dev/sdb1

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

echo $?

Возвращаемое значение нуля указывает на отсутствие ошибок. Возможные коды возврата:

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

Несмотря на то, что файловая система считается чистой, мы можем принудительно выполнить проверку файловой системы, используя параметр -f (force).

sudo fsck /dev/sdb1 -f

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

Когда вы закончили тестирование, вам нужно перемонтировать файловую систему. Самый простой способ сделать это — использовать mount с параметром -a (все). Это проверяет «/etc/fstab» на наличие списка файловых систем и убеждается, что все они смонтированы так же, как при обычной загрузке.

sudo mount -a

Обратите внимание, что нам не нужно сообщать fsck, какой тип файловой системы находится на разделе; утилита определяет это, исследуя файловую систему. Это означает, что мы можем принудительно проверить файловую систему /dev/sdc1, файловую систему ext3 на нашем тестовом ПК, используя точно такую же команду, которую мы использовали для / dev/sdb1, который является разделом ext4.

sudo fsck /dev/sdc1 -f

Возможно, вы не захотите сразу погружаться в исправление файловой системы. Вы можете предпочесть посмотреть, прежде чем прыгать. Вы можете попросить fsck не предлагать ничего исправить, а просто сообщать о проблемах в окно терминала. Параметр -N (пробный запуск) делает именно это:

sudo fsck -N /dev/sdb1

Противоположным этому является указание fsck не беспокоить запросы, если он находит какие-либо ошибки, а просто идти вперед и исправлять их. Для этого используйте параметр -y (без подсказок).

sudo fsck -y /dev/sdb1

Использование fsck на корневом разделе

Вы не можете использовать fsck на смонтированном разделе, но для загрузки вашего компьютера корневой раздел должен быть смонтирован. Итак, как мы можем запустить fsck в корневом разделе? Ответ — прервать процесс загрузки и запустить fsck в режиме восстановления.

Во время загрузки компьютера удерживайте нажатой клавишу «Shift». Если вы правильно рассчитали время, вы не загрузитесь в Linux. Процесс загрузки остановится в черно-белом меню. Тестовая машина, используемая для этой статьи, работала под управлением Ubuntu, но другие дистрибутивы имеют тот же тип меню, хотя и могут отличаться по внешнему виду. Там, где на скриншотах написано «Ubuntu», будет указано название вашего дистрибутива.

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

Выберите вариант, оканчивающийся на «(режим восстановления)». В нашем примере это «Ubuntu с Linux 5.11.0-20-generic (режим восстановления)». Нажмите клавишу «Ввод».

Вы увидите меню восстановления. Выберите «fsck проверить все файловые системы» и нажмите клавишу «Tab», чтобы переместить выделение на кнопку «ОК». Нажмите Ввод.

Вы увидите уведомление о том, что корневой раздел будет смонтирован вместе с любыми другими разделами, определенными в вашем файле «/etc/fstab».

Нажмите клавишу «Tab», чтобы переместить выделение на кнопку «Да», и нажмите «Ввод».

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

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

Загрузка в режиме восстановления может повлиять на некоторые драйверы, поэтому рекомендуется перезагрузиться еще раз, как только вы загрузитесь в Linux. Это гарантирует, что ваш компьютер работает в стандартном режиме.

Когда дела идут плохо

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

RELATED: Best Linux Laptops for Developers and Enthusiasts