fsck (File System Consistency Check) — утилита проверки и исправления файловых систем Linux. Аналог CHKDSK в Windows. Обнаруживает и исправляет: потерянные кластеры (lost+found), ошибки в метаданных инодов, несоответствия в таблицах размещения файлов. Для разных ФС существуют специализированные версии: fsck.ext4, fsck.xfs, fsck.ntfs.
Использование
# Проверить файловую систему (ФС должна быть размонтирована)
umount /dev/sdb1
fsck /dev/sdb1
# Автоматически исправлять ошибки без вопросов
fsck -y /dev/sdb1
# Принудительная проверка ext4
fsck.ext4 -f /dev/sdb1
# Состояние ФС
tune2fs -l /dev/sdb1 | grep -i "mount\|check"
Журналируемые файловые системы
Современные ФС — ext4, xfs, btrfs — журналируемые: все операции записываются в журнал (journal/log) до применения к основным данным. При сбое ФС восстанавливается из журнала за секунды без полного fsck. Полный fsck требуется только при повреждении журнала.
Автоматическая проверка
В /etc/fstab поле pass управляет порядком fsck при загрузке: 0 — не проверять, 1 — root-раздел (первым), 2 — остальные. systemd при обнаружении "dirty" бит (некорректное выключение) автоматически запускает fsck.
История
fsck появился в Unix Version 6 (AT&T, 1975) как инструмент проверки ранних ФС. В Linux fsck поддерживает ext2 с ядра 0.96 (1992). ext4 с журналом стал доступен в ядре 2.6.28 (2008). Btrfs с встроенной проверкой btrfs check появился в ядре 2.6.29 (2009).
Связь с хостингом
На VDS fsck может запускаться автоматически при загрузке. Если ВМ застряла при старте с сообщением «press S to skip» — значит fsck обнаружил ошибку. В Docker том (volume) на ext4 восстанавливается fsck.ext4 на хостовой системе. Регулярные проверки через cron + tune2fs снижают риск неожиданного fsck при загрузке.
История fsck
fsck (File System Consistency Check) появился в Unix 7th Edition (1979) как инструмент проверки файловой системы. В Linux реализован как набор утилит: fsck.ext4, fsck.xfs, fsck.btrfs. Версия e2fsck (для ext2/3/4) разработана Теодором Цо в 1993 году. Современные журналируемые ФС (ext4, xfs, btrfs) снизили частоту необходимости fsck, но не устранили её полностью. tune2fs -c задаёт количество монтирований до автоматической проверки.
Режимы работы fsck
fsck /dev/sda1 # автоматический выбор типа ФС
fsck -n /dev/sda1 # только проверка, без исправлений
fsck -y /dev/sda1 # автоматическое исправление всех ошибок
fsck -f /dev/sda1 # принудительная проверка даже чистой ФС
e2fsck -b 8193 /dev/sda1 # восстановление с резервного суперблока
Типичные ошибки и применение на хостинге
- Запуск fsck на смонтированной ФС — повреждение данных. Всегда
umountсначала. - На VPS fsck запускается в rescue-режиме через панель управления хостинга.
- Потеря inode-ов: fsck помещает «потерявшиеся» файлы в
lost+found/. - При аварийном отключении питания на сервере — первая причина запустить fsck на следующем старте.
fsck vs Btrfs scrub vs ZFS scrub
Для Btrfs используется btrfs scrub — онлайн-проверка без размонтирования. ZFS scrub аналогичен. На современных хостингах с NVMe-дисками проверка ext4 разделом 100 GB занимает около 2-5 минут.