fsck (Русский)

Ссылки по теме
Ext4
Btrfs
fstab (Русский)
Состояние перевода:
На этой странице представлен перевод статьи
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/
раздел