Как использовать команду 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
. Если однажды возникнет необходимость использовать его в гневе, вы будете рады, что ознакомились с ним заранее.
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts