Определение ошибок и критических состояний файловых систем и носителей
> [!INFO] Применимость > **ALT Linux 10.4–11.x** · локальная работа через CLI/TTY · доступ `root` > > Цель: определить ошибки файловых систем и физических носителей, отделить критические события от шт
Цель: определить ошибки файловых систем и физических носителей, отделить критические события от штатных сообщений и понять, когда дальнейшую нагрузку на устройство необходимо прекратить.
Все команды в заметке выполняют чтение состояния. Исправление файловых систем здесь не рассматривается.
Быстрая проверка
Определить устройства и файловые системы:
lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS
Проверить режим монтирования:
findmnt -rn -o TARGET,SOURCE,FSTYPE,OPTIONS
Проверить заполненность:
df -hT
df -ih
Показать предупреждения и ошибки ядра текущей загрузки:
journalctl -k -b -p warning..alert --no-pager
Показать типовые ошибки хранения:
journalctl -k -b --no-pager | grep -Ei \
'I/O error|Buffer I/O|critical medium|uncorrectable|blk_update_request|reset|timeout|offline device|read-only|EXT4-fs error|JBD2|XFS.*error|XFS.*corrupt|BTRFS.*error|FAT-fs error|ntfs3.*error|md.*degraded|multipath'
Проверить предыдущую загрузку:
journalctl -k -b -1 -p warning..alert --no-pager
Список доступных загрузок:
journalctl --list-boots
Примечание
Сначала фиксируется устройство и уровень ошибки. Сообщение о /dev/sda относится к физическому или виртуальному диску, /dev/sda2 — к разделу, /dev/mapper/* — к уровню Device Mapper, LVM, шифрования или Multipath.
Уровни реакции
Критично — реагировать немедленно
Признаки:
- повторяющиеся ошибки чтения или записи;
I/O error,Buffer I/O error,critical medium error;- файловая система неожиданно перешла из
rwвro; EXT4-fs error, остановка журнала JBD2;XFS ... Corruption detected;XFS ... Filesystem has been shut down;BTRFS error, ошибки контрольных сумм илиuncorrectable_errors;- SMART сообщает
FAILED; - есть ожидающие или неисправимые сектора;
- NVMe выставил
critical_warning; - RAID деградирован и потерял допустимое количество устройств;
- Multipath потерял все рабочие пути;
- файловая система или thin pool заполнены на 100%.
Действия:
- Не создавать дополнительную нагрузку.
- Не запускать восстановление файловой системы.
- Не выполнять длительный SMART-тест или scrub до оценки возможности копирования данных.
- Зафиксировать журналы и состояние устройства.
- Определить, доступны ли важные данные для чтения.
- Перейти к отдельному сценарию сохранения данных или замены носителя.
Требует наблюдения и дополнительной проверки
Признаки:
- единичный сброс SATA, SCSI, USB или NVMe без повторения;
- ненулевой, но не растущий счётчик переназначенных секторов;
- ненулевой
UDMA_CRC_Error_Count; - единичная исправленная ошибка Btrfs;
- один неактивный путь Multipath при наличии других исправных;
- RAID выполняет штатный
resync,recoveryилиcheck; - заполнение файловой системы выше 90%;
- заполнение inode выше 90%;
- высокая температура без выхода за пределы, указанные накопителем.
Действия:
- Проверить, повторяется ли событие.
- Сравнить счётчики после рабочей нагрузки.
- Проверить кабель, порт, питание или путь до СХД, если ошибка транспортная.
- Запланировать устранение до перехода состояния в критическое.
Информационно — обычно можно пропустить
Примеры:
- обнаружение диска при загрузке;
- штатное монтирование файловой системы;
- успешное восстановление журнала после аварийного выключения;
clean,recovery complete, если после них нет ошибок;- исторический счётчик включений или часов работы;
- единичное сообщение о небезопасном выключении;
roдляsquashfs,iso9660, установочного образа или специально подключённой файловой системы;- loop-устройства от образов и пакетов;
- завершённый без ошибок RAID resync;
- SMART
PASSED, если одновременно отсутствуют критические атрибуты и ошибки ядра.
Предупреждение
Строка SMART PASSED не доказывает отсутствие повреждённых секторов, транспортных ошибок или проблем файловой системы. Проверяется весь отчёт и системный журнал.
Проверка системного журнала
Текущая загрузка
journalctl -k -b --no-pager
Только предупреждения и ошибки:
journalctl -k -b -p warning..alert --no-pager
Предыдущая загрузка
journalctl -k -b -1 --no-pager
Это важно, если система была перезагружена после зависания или перехода файловой системы в read-only.
По конкретному устройству
Для диска:
journalctl -k -b --no-pager | grep -i 'sda'
Для NVMe:
journalctl -k -b --no-pager | grep -i 'nvme0'
Для LVM или Multipath:
journalctl -k -b --no-pager | grep -Ei 'dm-[0-9]+|mapper|multipath'
Примечание
Имя устройства в журнале может отличаться от привычного пути. Связать dm-0 с /dev/mapper/* можно командой:
lsblk -o NAME,KNAME,PATH,TYPE,FSTYPE,MOUNTPOINTS
Критические сообщения блочного уровня
Наиболее опасные сообщения:
I/O error
Buffer I/O error
critical medium error
uncorrectable error
blk_update_request
rejecting I/O to offline device
device offline
end_request: I/O error
Они означают, что операция ввода-вывода не была выполнена нижележащим устройством или путём.
Повторяющиеся сбросы и тайм-ауты
SATA/SAS/SCSI:
hard resetting link
link is slow to respond
failed command
timing out command
DID_NO_CONNECT
DID_TIME_OUT
NVMe:
I/O timeout
reset controller
Device not ready
controller is down
CSTS=0xffffffff
USB:
reset SuperSpeed USB device
device descriptor read error
USB disconnect
Единичный сброс не всегда означает повреждение носителя. Повторение под нагрузкой, потеря устройства или появление I/O-ошибок требует немедленной реакции.
Как различать тип проблемы
| Событие | Вероятный уровень |
|---|---|
critical medium error, uncorrectable |
Поверхность или память накопителя |
UDMA CRC, повторный SATA link reset |
Кабель, порт, питание, контроллер |
| SCSI timeout, path offline | SAN, HBA, коммутатор, СХД или Multipath |
| NVMe controller reset | NVMe, PCIe, питание, прошивка или перегрев |
| Ошибка ФС без I/O-ошибок | Метаданные ФС, память или прежнее аварийное выключение |
| Ошибка ФС вместе с I/O-ошибками | Сначала подозревать нижележащий носитель или путь |
Состояние точек монтирования
Проверить фактические параметры:
findmnt -rn -o TARGET,SOURCE,FSTYPE,OPTIONS
Найти файловые системы в режиме ro:
findmnt -rn -o TARGET,SOURCE,FSTYPE,OPTIONS | grep -E '(^|,)ro(,|$)'
Проверить конкретную точку:
findmnt --target <путь>
Реагировать
Нужно реагировать, если рабочая файловая система, ранее доступная на запись, неожиданно стала ro.
Типовые последствия:
Read-only file system
EROFS
Одновременно проверить журнал:
journalctl -k -b --no-pager | grep -Ei \
'read-only|remount|EXT4-fs error|JBD2|XFS|BTRFS|I/O error'
Можно пропустить
Режим ro является штатным для:
squashfs;iso9660;- установочных образов;
- некоторых snapshot;
- файловых систем, специально указанных в
/etc/fstabс параметромro.
Заполненность и inode
Проверить объём:
df -hT
Проверить inode:
df -ih
Критические состояния
Use% = 100%
IUse% = 100%
Наиболее опасно заполнение:
/;/var;/tmp;/home;- каталогов баз данных;
- каталогов журналов;
- файловых систем приложений.
Требует реакции заранее
Use% > 90%
IUse% > 90%
Это не означает повреждение файловой системы, но создаёт риск отказа служб, невозможности записи журналов и остановки приложений.
Проверить место без перехода на другие файловые системы:
sudo du -xhd1 <точка_монтирования> | sort -h
Если df показывает занятое место, которого не видно через du, проверить удалённые, но открытые файлы:
sudo lsof +L1
lsof может отсутствовать в минимальной установке.
Диагностика ext4
Показать сообщения ext4 и журнала JBD2:
journalctl -k -b --no-pager | grep -Ei 'EXT4-fs|JBD2'
Реагировать немедленно
EXT4-fs error
Aborting journal
Journal has aborted
Remounting filesystem read-only
I/O error while writing superblock
unable to read superblock
Переход ext4 в read-only может быть штатной защитной реакцией на обнаруженную ошибку, если задан режим errors=remount-ro.
Требует проверки
warning: mounting fs with errors
orphan cleanup
orphan cleanup сам по себе возможен после нештатного выключения. Опасность подтверждается, если далее появляются ошибки, остановка журнала или переход в read-only.
Обычно штатно
recovery complete
mounted filesystem
Штатное восстановление журнала без последующих ошибок не является доказательством повреждения.
Осторожно
Не запускать fsck, e2fsck или tune2fs с изменяющими параметрами на смонтированной файловой системе.
Диагностика XFS
Показать сообщения XFS:
journalctl -k -b --no-pager | grep -i 'XFS'
Показать геометрию без изменения:
xfs_info <точка_монтирования>
Реагировать немедленно
XFS ... Corruption detected
XFS ... Metadata corruption detected
XFS ... metadata I/O error
XFS ... Log I/O Error
XFS ... Filesystem has been shut down
XFS ... Please unmount the filesystem and rectify the problem
При shutdown XFS прекращает обычные операции, чтобы не продолжать изменение повреждённых метаданных.
Обычно штатно
Mounting V5 Filesystem
Ending clean mount
Starting recovery
Ending recovery
Восстановление журнала после некорректного завершения работы допустимо, если далее нет corruption, I/O error или shutdown.
Осторожно
Не запускать xfs_repair на смонтированной файловой системе. Не применять xfs_repair -L без отдельного плана восстановления: этот режим удаляет журнал и может привести к потере последних изменений метаданных.
Диагностика Btrfs
Показать сообщения:
journalctl -k -b --no-pager | grep -i 'BTRFS'
Проверить счётчики ошибок устройств:
sudo btrfs device stats <точка_монтирования>
Проверить состояние ранее запущенного scrub:
sudo btrfs scrub status <точка_монтирования>
Счётчики btrfs device stats
write_io_errs
read_io_errs
flush_io_errs
corruption_errs
generation_errs
Ненулевые значения требуют проверки. Рост счётчиков означает продолжающуюся проблему.
Реагировать немедленно
BTRFS error
parent transid verify failed
checksum verify failed
csum failed
unable to read tree root
forced readonly
uncorrectable_errors > 0
uncorrectable_errors после scrub означает, что Btrfs не смог восстановить данные из доступной избыточной копии.
Требует проверки
corrected_errors > 0
Ошибка была исправлена из другой копии, но причина повреждения остаётся: носитель, кабель, путь, память или прежний сбой записи.
Предупреждение
Не запускать новый scrub на явно отказывающем носителе до сохранения важных данных. Scrub читает все данные и создаёт существенную нагрузку.
Осторожно
Не использовать btrfs check --repair как обычное средство лечения. Этот режим применяется только в отдельном сценарии после резервного копирования и анализа повреждения.
Диагностика FAT и NTFS
Показать сообщения:
journalctl -k -b --no-pager | grep -Ei 'FAT-fs|VFAT|NTFS|ntfs3'
Реагировать
FAT-fs error
Directory bread(block ...) failed
unable to read boot sector
ntfs3 ... error
failed to load $MFT
I/O error
Требует проверки
Volume was not properly unmounted
filesystem is dirty
Windows is hibernated
Такие сообщения не всегда означают физическое повреждение. Они могут быть результатом:
- аварийного отключения;
- Windows Fast Startup;
- гибернации Windows;
- извлечения накопителя без безопасного отключения.
Не принуждать подключение на запись до определения причины.
SMART для SATA SAS и USB-накопителей
Проверить наличие smartctl:
command -v smartctl
Показать полный отчёт:
sudo smartctl -x /dev/<диск>
Пример:
sudo smartctl -x /dev/sda
Для USB-моста может потребоваться указание типа устройства:
sudo smartctl --scan-open
Примечание
SMART проверяется у физического диска /dev/sda, а не у раздела /dev/sda1. За аппаратным RAID-контроллером может требоваться специальный параметр -d, зависящий от контроллера.
Реагировать немедленно
SMART overall-health self-assessment test result: FAILED
SMART Health Status: BAD
Для ATA-дисков опасны ненулевые или растущие значения:
Current_Pending_Sector
Offline_Uncorrectable
Reported_Uncorrect
Command_Timeout
Reallocated_Sector_Ct
Reallocated_Event_Count
Spin_Retry_Count
Особенно критичны:
- ожидающие переназначения сектора;
- неисправимые сектора;
- ошибки чтения важных данных;
- рост значений между проверками.
Требует проверки пути, а не поверхности
UDMA_CRC_Error_Count
Interface_CRC_Error_Count
Рост этих счётчиков чаще указывает на:
- кабель;
- разъём;
- порт;
- питание;
- контроллер;
- транспортный путь.
Само накопленное историческое значение не обязано уменьшаться после устранения причины. Важен дальнейший рост.
Не считать универсальным признаком отказа
Нельзя одинаково трактовать все vendor-specific атрибуты SSD. Названия, нормализованные значения и RAW-поля могут различаться по производителям и моделям.
Обычно информационны:
Power_On_Hours
Power_Cycle_Count
Start_Stop_Count
Unsafe_Shutdown_Count
Они используются как контекст, а не как самостоятельный диагноз.
Температура
Проверить текущую температуру и пределы в отчёте SMART.
Не применять единый порог ко всем моделям. Реагировать следует на:
- превышение предела, указанного устройством;
- SMART temperature warning;
- повторяющийся перегрев;
- связь перегрева с ошибками или сбросами устройства.
Диагностика NVMe
Проверить через smartctl:
sudo smartctl -x /dev/nvme0
Если установлен nvme-cli:
sudo nvme smart-log /dev/nvme0
Реагировать немедленно
critical_warning != 0
media_errors > 0
available_spare ниже порога
устройство перешло в read-only
Также критичны повторяющиеся сообщения ядра:
I/O timeout
reset controller
controller is down
Device not ready
Требует наблюдения
unsafe_shutdowns
error_log_entries
percentage_used
Особенности:
unsafe_shutdownsпоказывает историю аварийных отключений;error_log_entriesможет включать не только повреждение носителя;percentage_usedявляется оценкой износа, а не процентом свободного места;- достижение
percentage_used = 100означает исчерпание расчётного ресурса, но не гарантирует немедленную остановку устройства.
Основным аварийным признаком NVMe остаётся critical_warning вместе с media/data integrity errors и сообщениями ядра.
Linux Software RAID
Показать состояние:
cat /proc/mdstat
Подробности массива:
sudo mdadm --detail /dev/md0
Штатное состояние
Для массива из двух устройств:
[UU]
Каждая буква U означает активное устройство.
Деградация
[U_]
[_U]
Символ _ означает отсутствующее или неисправное устройство.
Идущая операция
resync
recovery
reshape
check
Эти состояния не обязательно являются ошибкой, но должны контролироваться до завершения.
Реагировать немедленно
- массив отмечен как
degraded; - число активных устройств меньше требуемого;
- операция recovery останавливается;
- появляются I/O-ошибки участника;
- RAID5/RAID6 одновременно находится в состояниях
dirtyиdegraded.
Предупреждение
Для RAID5/RAID6 сочетание dirty и degraded опасно возможной скрытой порчей данных: отсутствует часть данных, а согласованность паритета не гарантирована.
Multipath
Проверить службу:
systemctl is-active multipathd
Показать пути:
sudo multipath -ll
Нормальные обозначения
В зависимости от версии и устройства встречаются:
active
ready
running
Неисправный путь
failed
faulty
offline
shaky
ghost
ghost может быть штатным состоянием резервного пути на active/passive СХД. Оценивать его нужно по политике конкретной СХД.
Требует реакции
Один путь failed или faulty при наличии исправных путей:
- данные обычно продолжают передаваться;
- отказоустойчивость уже снижена;
- требуется проверка HBA, кабеля, SAN-коммутатора, контроллера и порта СХД.
Предупреждение
Тут требуется проверка (состояния HBA, SAN-коммутаторов, портов СХД и доступности LUN по каждому пути).
Критично
- все пути к LUN находятся в
failed,faultyилиoffline; - карта Multipath отсутствует, хотя отдельные SCSI-пути видны;
- процессы зависают в I/O;
- журнал содержит
no usable paths,all paths downили повторяющиеся SCSI timeout.
При включённом queue_if_no_path операции могут не завершаться ошибкой, а зависать до восстановления пути.
LVM Thin Pool
Проверить наличие thin pool и его заполнение:
sudo lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
Реагировать
Особое внимание:
Data% = 100
Meta% = 100
Заполнение metadata thin pool критично и может остановить операции записи.
Значения выше 90% требуют планового расширения или освобождения пространства.
Что можно пропустить
Обычно не требуют аварийных действий без дополнительных симптомов:
| Сообщение или состояние | Почему |
|---|---|
recovering journal, затем recovery complete |
Штатное восстановление после некорректного выключения |
mounted filesystem |
Обычное сообщение монтирования |
SMART PASSED |
Только итоговый индикатор, отчёт всё равно нужно проверить |
| Ненулевой старый CRC-счётчик без роста | Историческая транспортная ошибка |
Power_On_Hours, Power_Cycle_Count |
Статистика эксплуатации |
unsafe_shutdowns без других ошибок |
История отключений питания |
ro у squashfs или iso9660 |
Штатный режим |
RAID resync после замены диска |
Ожидаемая операция, но её завершение нужно проконтролировать |
Один резервный path в состоянии ghost |
Может быть нормой для active/passive СХД |
| Единичный reset без I/O-ошибок и повторения | Возможное кратковременное событие |
Когда прекратить работу с носителем
Прекратить обычную эксплуатацию и не запускать тяжёлые проверки, если обнаружено хотя бы одно состояние:
- повторяющиеся ошибки чтения;
Current_Pending_Sector > 0;Offline_Uncorrectable > 0;- SMART
FAILED; - NVMe
critical_warning; - исчезновение устройства во время работы;
- постоянные controller reset или link reset;
- XFS shutdown;
- ext4 abort journal;
- Btrfs
uncorrectable_errors; - ФС перешла в
read-onlyвместе с I/O-ошибками; - ошибки быстро растут при повторной проверке.
Не запускать до сохранения важных данных:
длительный SMART self-test
btrfs scrub
badblocks
fsck с исправлением
xfs_repair
btrfs check --repair
RAID rebuild на подозрительном комплекте дисков
Осторожно
Проверка поверхности и восстановление файловой системы создают дополнительное чтение и запись. Для умирающего носителя эта нагрузка может превратить частично читаемые данные в окончательно недоступные.
Что зафиксировать перед передачей проблемы
Сохранить общую схему:
lsblk -e 7 -o NAME,PATH,TYPE,SIZE,FSTYPE,MOUNTPOINTS
Сохранить журнал ядра:
journalctl -k -b --no-pager > /root/kernel-storage-current.txt
Предыдущая загрузка:
journalctl -k -b -1 --no-pager > /root/kernel-storage-previous.txt
SMART:
sudo smartctl -x /dev/<диск> > /root/smart-<диск>.txt
RAID:
cat /proc/mdstat > /root/mdstat.txt
Multipath:
sudo multipath -ll > /root/multipath.txt
Зафиксировать вручную:
Устройство:
Модель и серийный номер:
Файловая система:
Точка монтирования:
Режим rw/ro:
Когда появились ошибки:
Повторяются ли ошибки:
Есть ли важные данные:
Есть ли резервная копия: