fsck (Русский) - ArchWiki

Jump to content
From ArchWiki

Ссылки по теме

- Ext4
- Btrfs
- fstab (Русский)

Состояние перевода: На этой странице представлен перевод статьи fsck. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

fsck (file system check) — утилита для проверки и восстановления файловых систем Linux. Проверка файловых систем разных физических дисков выполняется параллельно, что позволяет значительно её ускорить (см. fsck(8)).

Процесс загрузки Arch включает в себя процедуру fsck, поэтому проверка файловых систем на всех носителях выполняется автоматически при каждой загрузке. По этой причине обычно нет необходимости выполнять её через командную строку.

## Проверка при загрузке

### Механизм

Существует два возможных варианта:

1. mkinitcpio предоставляет хук `fsck` для проверки корневой файловой системы перед монтированием. Корневой раздел должен быть смонтирован на запись и чтение (параметр ядра `rw`) [1].
2. 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

1. Убедитесь, что используются соответствующие хуки в `/etc/mkinitcpio.conf`, а также что вы не забыли пересоздать initramfs после последнего редактирования этого файла.
2. Проверьте fstab! Только корневому разделу должен быть задан параметр `1` в последнем поле, все остальные разделы должны иметь либо `2`, либо `0`. Также проверьте файл на наличие иных опечаток.

### ext2fs: no external journal

Иногда (например, из-за внезапного отключения питания) файловые системы ext(3/4) могут повредиться так сильно, что восстановить их обычным способом не удастся. Как правило, при этом fsck выводит сообщение о том, что не удалось найти журнал (no external journal). В этом случае выполните команды ниже.

Отмонтируйте раздел от соответствующего каталога:

    # umount каталог

Запишите на раздел новый журнал:

    # tune2fs -j /dev/раздел

Запустите fsck, чтобы восстановить раздел:

    # fsck -p /dev/раздел

Categories:

- File systems (Русский)
- Commands (Русский)