Linux EIOВысокая

Проверка диска на ошибки в Linux: диагностика и исправление

Узнайте, как самостоятельно найти и исправить ошибки жёсткого диска или SSD в Linux с помощью встроенных утилит. Гайд поможет предотвратить потерю данных и восстановить работоспособность накопителя.

Обновлено 6 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12CentOS/RHEL 9+Fedora 38+

Что означает ошибка EIO / I/O Error

Ошибка ввода-вывода (Input/Output Error) в Linux проявляется как системный код EIO или сообщения I/O error в логах. Операционная система получает этот сигнал от драйвера диска, когда не может прочитать или записать данные в указанный блок.

На практике это выглядит так: система «зависает» при обращении к файлам, файловая система автоматически переходит в режим «только для чтения» (read-only), а в терминале появляются предупреждения kernel: EXT4-fs error или Buffer I/O error. Система не обязательно упадёт сразу, но дальнейшее использование повреждённого раздела без диагностики ведёт к потере файлов.

Причины возникновения

  1. Физический износ накопителя. На HDD появляются битые сектора из-за царапин на пластинах или деградации магнитного слоя. На SSD заканчивается ресурс ячеек NAND-памяти или происходит сбой контроллера.
  2. Плохой контакт или повреждение кабелей. Расшатанный SATA-кабель, перегиб M.2-карты или проблема с разъёмом питания приводят к прерыванию передачи данных на уровне железа.
  3. Резкое отключение питания. Внезапный сбой электропитания или принудительная перезагрузка не дают системе корректно закрыть дескрипторы файлов, что ломает метаструктуру файловой системы (суперблок, журнал).
  4. Конфликт драйверов или ядра. Устаревший или несовместимый драйвер контроллера ahci/nvme может некорректно обрабатывать команды DMA, вызывая ложные срабатывания ошибок.

Способы решения

Способ 1: Диагностика через системные логи

Прежде чем предпринимать активные действия, узнайте, какой именно накопитель вызывает проблему. Журнал ядра хранит историю обращений к оборудованию.

  1. Откройте терминал и выполните:
dmesg | grep -iE 'error|fail|bad|sector' | tail -n 50

Команда выведет последние 50 строк, содержащих ключевые слова ошибок. Обратите внимание на имя устройства, например sda1, nvme0n1p2 или mmcblk0.

  1. Проверьте текущие ошибки диска через утилиту 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) исправляет несоответствия метаданных.

  1. Размонтируйте раздел. Проверять смонтированную файловую систему опасно:
sudo umount /dev/sdXY

Если диск является системным и не размонтируется, загрузитесь с LiveUSB или дождитесь автоматической проверки при следующей перезагрузке.

  1. Запустите проверку с автоматическим подтверждением:
sudo fsck -y /dev/sdXY

Флаг -y подтверждает все предложения по исправлению. Процесс может занять от нескольких секунд до часа в зависимости от объёма и скорости диска.

  1. Проверьте результат:
echo $?

Код выхода 0 означает, что ошибок не найдено. Код 1 или 2 указывает на успешно исправленные проблемы. Коды выше 4 требуют ручного вмешательства или замены накопителя.

  1. Смонтируйте раздел обратно или перезагрузите систему:
sudo mount -a

Профилактика

  • Регулярно проверяйте SMART. Настройте автоматические тесты через smartd. Включите службу и добавьте в /etc/smartd.conf правило для мониторинга критических атрибутов.
  • Используйте ИБП. Внезапные скачки напряжения — главная причина повреждения журнала транзакций на ext4/btrfs.
  • Контролируйте температуру. Перегрев HDD выше 50°C ускоряет износ магнитных головок. Организуйте продув корпуса и следите за показаниями hddtemp или smartctl -A.
  • Резервное копирование. Ошибки диска часто развиваются лавинообразно. Храните критичные данные на отдельном носителе или в облаке с использованием rsync или borgbackup.

Часто задаваемые вопросы

Можно ли продолжать работать с диском, на котором появились ошибки ввода-вывода?
Как проверить SSD на битые секторы?
Нужно ли размонтировать диск перед проверкой `fsck`?

Полезное

Анализ системных логов
Проверка SMART-статуса
Поиск повреждённых блоков
Исправление файловой системы