Linux EIOСредняя

Ошибка ввода-вывода Linux: диагностика и устранение E/I ошибок

Статья описывает ошибки ввода-вывода в Linux, их причины и предоставляет практические методы диагностики и исправления с помощью стандартных утилит.

Обновлено 16 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+RHEL 8+Arch Linux

Что такое ошибки ввода-вывода (I/O errors) в Linux

Ошибки ввода-вывода (Input/Output errors) в Linux возникают, когда система не может прочитать или записать данные на диск. Они обычно проявляются как сообщения "Input/output error" в логах или при попытке доступа к файлам. Например, при выполнении команды cat на файле с повреждёнными секторами может появиться:

cat: file.txt: Input/output error

Эти ошибки указывают на проблемы на уровне аппаратного диска, файловой системы или драйверов. Код ошибки EIO (Error I/O) часто фигурирует в системных логах и может быть вызван как временными сбоями, так и необратимыми повреждениями носителя.

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

  1. Физические повреждения диска — сбойные сектора, износ механических частей (для HDD), проблемы с электроникой или деградация NAND-ячеек (для SSD).
  2. Повреждение файловой системы — некорректное завершение работы, сбои в ядре, ошибки при записи, например, из-за внезапного отключения питания.
  3. Проблемы с кабелями или контроллерами — плохие SATA/IDE кабели, неисправные порты на материнской плате, сбои в RAID-контроллере или драйвере.
  4. Недостаток системных ресурсов — переполнение памяти, проблемы с подкачкой (swap), что приводит к ошибкам при доступе к диску при высокой нагрузке.
  5. Устаревшие или конфликтующие драйверы — особенно для RAID-массивов, специализированного оборудования или новых дисков в старых системах.
  6. Перегрев диска — может вызывать временные ошибки I/O, особенно в условиях плохой вентиляции.
  7. Повреждение разделов или таблицы разделов — ошибки в MBR/GPT приводят к невозможности корректного доступа к данным.

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

Способ 1: Проверка системных логов

Первым делом определите, какие диски и разделы вызывают ошибки, изучив системные логи. Это поможет локализовать проблему и понять её характер.

Выполните команду для фильтрации сообщений об ошибках:

sudo dmesg | grep -i "error\|io"

Или просмотрите основной файл логов:

sudo grep -i "input/output error" /var/log/syslog

В выводе ищите упоминания устройств (например, sda, nvme0n1, hdX) и контекст ошибок. Например:

[ 1234.567890] sd 0:0:0:0: [sda] FAILED RESULT
[ 1234.567895] sd 0:0:0:0: [sda] Sense Key : Medium Error [current] 
[ 1234.567900] sd 0:0:0:0: [sda] Add. Sense: Unrecovered read error

Такой вывод указывает на физические повреждения диска sda. Запишите имя устройства для дальнейших действий.

Способ 2: Запуск проверки файловой системы (fsck)

Если логи указывают на повреждение файловой системы (например, ошибки суперблока, inode), используйте fsck. Важно: раздел должен быть отмонтирован, иначе возможна потеря данных.

  1. Определите раздел с ошибками через lsblk или df -h. Например:
    lsblk -f
    

    Найдите точку монтирования и устройство (например, /dev/sda1).
  2. Отмонтируйте раздел:
    sudo umount /dev/sdX1
    

    Если раздел корневой (/) или используется, загрузитесь с Live-USB (например, Ubuntu Live) или используйте режим восстановления.
  3. Запустите fsck с автоматическим исправлением:
    sudo fsck -y /dev/sdX1
    

    Для ext4 это безопасно, но для других файловых систем (например, XFS) fsck не поддерживается — используйте xfs_repair.
  4. После завершения перемонтируйте раздел:
    sudo mount /dev/sdX1 /mount/point
    

    Проверьте, исчезли ли ошибки при доступе к файлам.

Способ 3: Диагностика диска с помощью SMART

Утилита smartctl из пакета smartmontools анализирует атрибуты SMART, предсказывающие отказ диска.

  1. Установите smartmontools:
    # Для Debian/Ubuntu
    sudo apt update && sudo apt install smartmontools
    
    # Для RHEL/CentOS
    sudo yum install smartmontools
    
    # Для Arch
    sudo pacman -S smartmontools
    
  2. Проверьте общий статус здоровья диска:
    sudo smartctl -H /dev/sdX
    

    Пример вывода:
    SMART overall-health self-assessment test result: PASSED
    

    Если FAILED, диск требует замены.
  3. Получите детальную информацию об атрибутах:
    sudo smartctl -A /dev/sdX
    

    Ключевые атрибуты для анализа:
    • Reallocated_Sector_Ct — количество переназначенных секторов. Ненулевые значения указывают на износ.
    • Current_Pending_Sector — сектора, ожидающие переназначения. Любое значение — тревога.
    • UDMA_CRC_Error_Count — ошибки передачи данных, часто из-за плохого кабеля.
    • SMART 5 (Reallocated Sectors Count) и SMART 187 (Reported Uncorrectable Errors) — критические для HDD.
  4. Запустите расширенный самодиагностический тест (может занять несколько часов):
    sudo smartctl -t long /dev/sdX
    

    Отслеживайте прогресс:
    sudo smartctl -a /dev/sdX | grep "Self-test"
    

    После завершения проверьте результаты:
    sudo smartctl -l selftest /dev/sdX
    

    Ошибки в тесте подтверждают hardware-проблему.

Способ 4: Проверка на bad blocks

Утилита badblocks ищет физически повреждённые блоки. Внимание: опция записи (-w) уничтожает все данные на диске! Используйте только на пустых или резервных дисках.

  1. Для безопасного сканирования только на чтение:
    sudo badblocks -sv /dev/sdX
    

    -s показывает прогресс, -v — подробный вывод. Для диска 1 ТБ это может занять 10+ часов.
  2. Если badblocks обнаруживает ошибки, создайте список и передайте его fsck для маркировки сбойных блоков:
    sudo badblocks -sv /dev/sdX > badblocks.txt
    sudo fsck -l badblocks.txt /dev/sdX1
    

    Это предотвратит использование повреждённых блоков файловой системой.
  3. Для полного стирания и проверки (опасно, данные удаляются безвозвратно):
    sudo badblocks -wsv /dev/sdX
    

    После этого пересоздайте файловую систему:
    sudo mkfs.ext4 /dev/sdX1
    

    Используйте только если диск новый или вы готовы потерять данные.

Способ 5: Проверка кабелей и контроллеров

Аппаратные проблемы часто вызывают I/O ошибки, особенно если они носят прерывистый характер.

  • Кабели: замените SATA/IDE кабели на новые, проверьте целостность коннекторов. Для NVMe убедитесь, что карта правильно вставлена в слот.
  • Порты: подключите диск к другому порту на материнской плате или используйте отдельный PCIe-контроллер (например, для SATA).
  • RAID-массивы: если используется software RAID (mdadm), проверьте состояние:
    cat /proc/mdstat
    sudo mdadm --detail /dev/mdX
    

    Для hardware RAID используйте утилиты производителя контроллера (например, storcli для LSI).
  • Питание: убедитесь, что диск получает стабильное питание. При использовании нескольких дисков проверьте мощность блока питания.

Способ 6: Замена диска при критических ошибках

Если диагностика (SMART, badblocks) показывает неисправность диска, а fsck не помогает, диск, скорее всего, физически повреждён. В этом случае:

  1. Срочно замените диск на новый аналогичный или большей ёмкости.
  2. Восстановите данные из последней резервной копии. Если её нет, попробуйте:
    • Смонтировать диск в read-only режиме на другой системе.
    • Использовать инструменты восстановления (testdisk, photorec), но успех не гарантирован при физических повреждениях.
  3. После замены:
    • Создайте новую файловую систему: sudo mkfs.ext4 /dev/sdX1.
    • Восстановите данные из бэкапа.
    • Настройте мониторинг SMART для нового диска.

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

Чтобы минимизировать риск ошибок ввода-вывода в будущем:

  • Регулярное резервное копирование: используйте rsync, borg или облачные сервисы. Храните копии на другом физическом носителе.
  • Мониторинг SMART: настройте демон smartd для ежедневных тестов и оповещений по email. Пример конфигурации в /etc/smartd.conf:
    DEVICESCAN -a -o on -S on -s (S/../.././02|L/../../6/03)
    
  • Качественные компоненты: выбирайте диски с высокой надёжностью (например, NAS- или серверные модели) и проверенные кабели.
  • Защита от сбоев питания: используйте ИБП (UPS) и настройте корректное завершение работы при отключении.
  • Контроль температуры: установите утилиты вроде hddtemp или smartctl для мониторинга. Температура HDD выше 50°C, SSD выше 70°C — повод для улучшения охлаждения.
  • Обновление системы: регулярно обновляйте ядро и драйверы, особенно для RAID-контроллеров и новых дисков.
  • Избегайте перегрузки диска: не запускайте одновременно множество интенсивных операций записи, особенно на старых HDD.

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

Что вызывает ошибки ввода-вывода в Linux?
Как проверить диск на bad blocks?
Можно ли исправить ошибки ввода-вывода без потери данных?
Что делать, если fsck не помогает?

Полезное

Проверка системных логов
Запуск проверки файловой системы (fsck)
Диагностика диска с помощью SMART
Проверка на bad blocks
Проверка кабелей и контроллеров
Замена диска при критических ошибках