Как использовать команду fsck в Linux
Опубликовано: 2022-01-29 Все наши важные данные находятся в файловой системе того или иного типа, и проблемы с файловой системой обязательно возникнут. В Linux мы можем использовать команду fsck
для поиска и исправления ошибок файловой системы.
Файловые системы — это программное обеспечение
Файловые системы являются одним из наиболее важных компонентов компьютера. Без файловой системы компьютер не может хранить какие-либо данные на жестком диске, будь то вращающийся механический диск или твердотельный накопитель. На самом деле файловая система должна быть создана до того, как операционная система будет установлена на жесткий диск. Должно быть что-то для хранения файлов операционной системы. Таким образом, файловая система создается в процессе установки.
Файловые системы создаются программным обеспечением, записываются программным обеспечением и считываются программным обеспечением. Как известно, во всех сложных программах есть ошибки. Наши данные очень важны для нас, поэтому мы очень верим в файловые системы и программное обеспечение, которое их создает и использует. Если что-то пойдет не так, мы можем потерять доступ к частям файловой системы или даже к целому разделу.
Современные файловые системы журналирования лучше справляются с проблемами, которые могут быть вызваны внезапным отключением питания или сбоем системы. Они крепкие, но не непобедимые. Если их внутренние таблицы зашифрованы, они могут потерять информацию о том, где находится каждый файл на диске, каков его размер, какое у него имя и какие права доступа к файлам установлены для них.
Команда fsck
позволяет проверить работоспособность файловых систем. Если он находит какие-либо проблемы, он обычно может исправить их и для вас.
Проведите предполетную проверку
Для использования fsck
требуются права sudo. К любой команде, которая может вносить изменения в файловую систему, следует относиться с осторожностью, и доступ к ней должен быть разрешен только тем, кто знает, что делает.
Пилоты не запрыгивают в самолет, не запускают его и не улетают в бледно-голубое небо. Они проводят предполетную проверку. Слишком многое поставлено на карту, чтобы поступить иначе. Это хорошая привычка для развития. Прежде чем использовать fsck
, вам нужно убедиться, что вы собираетесь использовать его на правильном диске. Итак, прежде чем что-то делать с fsck
, мы проведем небольшую разведку.
Мы начнем с fdisk
и направим его в less
. Мы не запрашиваем информацию о конкретном разделе. Используя параметр -l
(список), fdisk
перечисляет таблицы разделов на всех устройствах, которые он находит в файле «/proc/partitions», если он существует.
судо фдиск -л | меньше
Мы видим записи для /dev/sda
и /dev/sdb
. Вы можете прокрутить файл, чтобы увидеть любые другие записи, которые могут существовать на вашем компьютере.
Разделы на /dev/sda
перечислены как /dev/sda1
, /dev/sda2
и /dev/sda3
. Итак, у нас есть три раздела на первом диске. Мы можем увидеть немного больше информации, используя команду parted
. Мы будем использовать опцию 'print'
, чтобы отобразить таблицы разделов в окне терминала.
sudo parted /dev/sda 'печать'
На этот раз мы получаем дополнительную информацию, включая тип файловой системы на каждом разделе.
Модель: ЖЕСТКИЙ ДИСК ATA VBOX (scsi) Диск /dev/sda: 34,4 ГБ Размер сектора (логический/физический): 512Б/512Б Таблица разделов: gpt Флаги диска: Номер Начальный Конечный Размер Файловая система Имя Флаги 1 1049 КБ 2097 КБ 1049 КБ bios_grub 2 2097 КБ 540 МБ 538 МБ FAT32 EFI Загрузка системного раздела, esp 3 540 МБ 34,4 ГБ 33,8 ГБ доб.4
В этом тестовом компьютере три диска. Это результаты для двух других дисков /dev/sdb
и /dev/sdc
. Обратите внимание, что в этих файловых системах нет поля «Имя».
sudo parted /dev/sdb 'печать'
Модель: ЖЕСТКИЙ ДИСК ATA VBOX (scsi) Диск /dev/sdb: 21,5 ГБ Размер сектора (логический/физический): 512Б/512Б Таблица разделов: msdos Флаги диска: Номер Начало Конец Размер Тип Файловая система Флаги 1 1049 КБ 21,5 ГБ 21,5 ГБ основной ext4
sudo parted /dev/sdc 'печать'
Модель: ЖЕСТКИЙ ДИСК ATA VBOX (scsi) Диск /dev/sdc: 21,5 ГБ Размер сектора (логический/физический): 512Б/512Б Таблица разделов: msdos Флаги диска: Номер Начало Конец Размер Тип Файловая система Флаги 1 1049 КБ 21,5 ГБ 21,5 ГБ основной ext3
Второй и третий диски имеют одинаковый размер, и каждый из них имеет один раздел. Но файловая система на втором диске — ext4
, а файловая система на третьем диске — старая ext3
.
Мы передаем идентификатор раздела в fsck
, и он проверяет файловую систему на этом разделе. Но мы не можем запустить fsck
в смонтированной файловой системе. Нам нужно размонтировать диск. Для этого нам нужно знать точку монтирования, на которой монтируется раздел и, следовательно, файловая система.
Мы можем легко узнать это, используя команду df
.
ДФ /dev/sdb1
ДФ /dev/sdc1
Использование команды fsck
У нас есть вся необходимая информация. Первое, что мы сделаем, это размонтируем файловую систему, которую собираемся проверить. Мы собираемся работать с файловой системой на первом и единственном разделе /dev/sdb
, то есть на /dev/sdb1
. Ранее мы видели, что это файловая система ext4
, и она смонтирована в «/run/mount/dave/sata2».
Мы будем использовать команду umount
. Обратите внимание, что в «umount» нет «n».
sudo umount /run/mount/dave/sata2
С umount
отсутствие новостей — хорошая новость. Если вы молча вернулись в командную строку, все готово.
судо фск /dev/sdb1
Эта файловая система считается чистой. Это означает, что файловая система сообщает об отсутствии ошибок или проблем. Более глубокая проверка файловой системы не выполняется автоматически. Мы также можем посмотреть код возврата, который fsck
вернул оболочке.
эхо $?
Возвращаемое значение нуля указывает на отсутствие ошибок. Возможные коды возврата:
- 0 : Нет ошибок
- 1 : Исправлены ошибки файловой системы.
- 2 : Система должна быть перезагружена
- 4 : Ошибки файловой системы остались неисправленными.
- 8 : Операционная ошибка
- 16 : Ошибка использования или синтаксиса
- 32 : Проверка отменена по запросу пользователя.
- 128 : Ошибка общей библиотеки
Несмотря на то, что файловая система считается чистой, мы можем принудительно выполнить проверку файловой системы, используя параметр -f
(force).
судо fsck /dev/sdb1 -f
На этот раз проверка занимает больше времени, но выполняет более тщательную проверку файловой системы. Наша файловая система была действительно чистой, и об ошибках не сообщалось. Если во время проведения тестов будут обнаружены проблемы, вам будет предложено позволить fsck
исправить проблему или проигнорировать ошибку.
Когда вы закончили тестирование, вам нужно перемонтировать файловую систему. Самый простой способ сделать это — использовать mount
с параметром -a
(все). Это проверяет «/etc/fstab» на наличие списка файловых систем и убеждается, что все они смонтированы так же, как при обычной загрузке.
судо монтировать -а
Обратите внимание, что нам не нужно сообщать fsck
, какой тип файловой системы находится на разделе; утилита определяет это, исследуя файловую систему. Это означает, что мы можем принудительно проверить файловую систему /dev/sdc1
, файловую систему ext3
на нашем тестовом ПК, используя точно такую же команду, которую мы использовали для /dev/sdb1
, который является разделом ext4
.
судо 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 | ||
Файлы | 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 | |
Процессы | 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 · тайм-аут · стена · да · убить · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · дата · bg · fg | |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов