Что означает ошибка EIO / I/O Error
Ошибка ввода-вывода (Input/Output Error) в Linux проявляется как системный код EIO или сообщения I/O error в логах. Операционная система получает этот сигнал от драйвера диска, когда не может прочитать или записать данные в указанный блок.
На практике это выглядит так: система «зависает» при обращении к файлам, файловая система автоматически переходит в режим «только для чтения» (read-only), а в терминале появляются предупреждения kernel: EXT4-fs error или Buffer I/O error. Система не обязательно упадёт сразу, но дальнейшее использование повреждённого раздела без диагностики ведёт к потере файлов.
Причины возникновения
- Физический износ накопителя. На HDD появляются битые сектора из-за царапин на пластинах или деградации магнитного слоя. На SSD заканчивается ресурс ячеек NAND-памяти или происходит сбой контроллера.
- Плохой контакт или повреждение кабелей. Расшатанный SATA-кабель, перегиб M.2-карты или проблема с разъёмом питания приводят к прерыванию передачи данных на уровне железа.
- Резкое отключение питания. Внезапный сбой электропитания или принудительная перезагрузка не дают системе корректно закрыть дескрипторы файлов, что ломает метаструктуру файловой системы (суперблок, журнал).
- Конфликт драйверов или ядра. Устаревший или несовместимый драйвер контроллера
ahci/nvmeможет некорректно обрабатывать команды DMA, вызывая ложные срабатывания ошибок.
Способы решения
Способ 1: Диагностика через системные логи
Прежде чем предпринимать активные действия, узнайте, какой именно накопитель вызывает проблему. Журнал ядра хранит историю обращений к оборудованию.
- Откройте терминал и выполните:
dmesg | grep -iE 'error|fail|bad|sector' | tail -n 50
Команда выведет последние 50 строк, содержащих ключевые слова ошибок. Обратите внимание на имя устройства, например sda1, nvme0n1p2 или mmcblk0.
- Проверьте текущие ошибки диска через утилиту
smartctl:
sudo smartctl -l error /dev/sdX
Замените /dev/sdX на ваш диск. Если вывод пуст или содержит только старые записи, причина, скорее всего, в программном повреждении ФС.
💡 Совет: Используйте
lsblk -f, чтобы быстро сопоставить имена устройств (/dev/sda) с точками монтирования (/home).
Способ 2: Проверка физического состояния (SMART)
Атрибуты S.M.A.R.T. дают чёткое представление о здоровье накопителя. Установите пакет, если он отсутствует:
sudo apt install smartmontools # Debian/Ubuntu
sudo dnf install smartmontools # RHEL/Fedora
Запустите полную диагностику:
sudo smartctl -a /dev/sdX
Внимательно изучите строки SMART overall-health self-assessment test result. Если статус PASSED, диск физически исправен. Критические атрибуты:
Reallocated_Sector_Ct: количество переназначенных секторов. Значение выше 100 требует внимания.Current_Pending_Sector: сектора, которые ждут переназначения. Указывает на начинающуюся деградацию.UDMA_CRC_Error_Count: ошибки передачи по кабелу SATA. Если счётчик растёт — замените кабель.
Способ 3: Проверка и исправление файловой системы
Если SMART в норме, проблема заключается в логической структуре. Утилита fsck (File System Consistency Check) исправляет несоответствия метаданных.
- Размонтируйте раздел. Проверять смонтированную файловую систему опасно:
sudo umount /dev/sdXY
Если диск является системным и не размонтируется, загрузитесь с LiveUSB или дождитесь автоматической проверки при следующей перезагрузке.
- Запустите проверку с автоматическим подтверждением:
sudo fsck -y /dev/sdXY
Флаг -y подтверждает все предложения по исправлению. Процесс может занять от нескольких секунд до часа в зависимости от объёма и скорости диска.
- Проверьте результат:
echo $?
Код выхода 0 означает, что ошибок не найдено. Код 1 или 2 указывает на успешно исправленные проблемы. Коды выше 4 требуют ручного вмешательства или замены накопителя.
- Смонтируйте раздел обратно или перезагрузите систему:
sudo mount -a
Профилактика
- Регулярно проверяйте SMART. Настройте автоматические тесты через
smartd. Включите службу и добавьте в/etc/smartd.confправило для мониторинга критических атрибутов. - Используйте ИБП. Внезапные скачки напряжения — главная причина повреждения журнала транзакций на ext4/btrfs.
- Контролируйте температуру. Перегрев HDD выше 50°C ускоряет износ магнитных головок. Организуйте продув корпуса и следите за показаниями
hddtempилиsmartctl -A. - Резервное копирование. Ошибки диска часто развиваются лавинообразно. Храните критичные данные на отдельном носителе или в облаке с использованием
rsyncилиborgbackup.