LinuxВысокая

Исправляем ошибку дискового ввода-вывода в Linux: полное решение

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

Обновлено 28 апреля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12CentOS Stream 8/9ядра Linux 5.x–6.x

Что означает ошибка disk I/O error

Ошибка disk I/O error (ошибка ввода-вывода диска) означает, что ядро Linux не смогло прочитать или записать данные на блочное устройство, например /dev/sda, /dev/nvme0n1 или их разделы. В логах и консоли обычно отображается текст вроде:

end_request: I/O error, dev sda, sector 12345678
Buffer I/O error on device sda1, logical block 123456

Ошибка появляется при доступе к файлам, монтировании разделов или запуске программ, требующих чтения/записи. Система может перевести файловую систему в режим «только чтение» или зависнуть при интенсивных операциях ввода-вывода.

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

  • Повреждённые сектора (bad blocks) на диске или SSD, из-за которых контроллер не может прочитать или записать данные.
  • Нарушение целостности файловой системы: повреждённые метаданные, битые иноды или разрушённые журналы (например, после внезапного отключения питания).
  • Проблемы с оборудованием: неисправный кабель SATA/USB, плохой контакт, перегрев диска или выход из строя контроллера.
  • Ошибки планировщика ввода-вывода или нехватка ресурсов (например, исчерпание очередей или тайм-ауты при работе по сети через iSCSI/NFS).
  • Некорректное извлечение съёмных носителей или принудительное размонтирование во время активных операций записи.

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

Способ 1: Собрать логи и определить проблемное устройство

Узнайте, с каким устройством связана ошибка. Просмотрите последние сообщения ядра:

dmesg | grep -i 'error\|I/O\|fail'
journalctl -k --since '1 hour ago' | grep -i 'error\|I/O'

Найдите строки с указанием устройства, например sda, nvme0n1 или их разделов. Это поможет точнее направить дальнейшие проверки.

Способ 2: Проверить состояние диска через SMART

Если диск поддерживает SMART, запросите его атрибуты:

sudo smartctl -a /dev/sdX
sudo smartctl -t short /dev/sdX

Обратите внимание на:

  • Reallocated_Sector_Ct — переназначенные сектора;
  • Current_Pending_Sector — сектора, ожидающие замены;
  • Offline_Uncorrectable — неисправимые ошибки.

Если счётчики растут, возможно, диск требует замены.

Способ 3: Проверить и восстановить файловую систему

Отмонтируйте раздел, если он был смонтирован:

sudo umount /dev/sdXY

Запустите проверку с автоматическим исправлением:

sudo fsck -y /dev/sdXY

Если fsck сообщает о повреждённом суперблоке, используйте резервный. Для ext2/3/4 сначала узнайте доступные суперблоки:

sudo mke2fs -n /dev/sdXY

Затем восстановите, указав резервный суперблок, например 32768:

sudo fsck -y -b 32768 /dev/sdXY

Способ 4: Проверить диск на битые сектора

Поиск и маркировка битых блоков может вернуть доступ к данным. Для ext2/3/4 используйте badblocks в режиме чтения (безопасно, но долго):

sudo badblocks -v /dev/sdXY > /tmp/badblocks.txt

Затем добавьте найденные блоки в таблицу плохих секторов файловой системы:

sudo fsck -l /tmp/badblocks.txt /dev/sdXY

Для других ФС используйте встроенные утилиты (например, xfs_repair для XFS), но учтите, что XFS не поддерживает badblocks напрямую — в первую очередь полагайтесь на замену диска при аппаратных сбоях.

Способ 5: Временно перемонтировать в режиме только чтения и спасти данные

Если диск нестабилен, но вам нужны данные, перемонтируйте раздел в режиме только чтения:

sudo mount -o remount,ro /dev/sdXY /точка/монтирования

Скопируйте важные данные на здоровый носитель:

sudo rsync -a /точка/монтирования/ /путь/к/резервному/диску/

После копирования отмонтируйте раздел и приступайте к проверке или замене диска.

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

  • Регулярно проверяйте SMART-атрибуты дисков с помощью smartctl и настраивайте уведомления при росте критических счётчиков.
  • Используйте ИБП или источники бесперебойного питания, чтобы избежать внезапных отключений, особенно для серверов.
  • Не отключайте питание или извлекайте съёмные носители во время активных операций записи.
  • Периодически создавайте резервные копии важных данных и проверяйте их на читаемость.
  • Следите за температурой дисков (через smartctl -A или hddtemp) и обеспечивайте достаточное охлаждение.

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

Почему появляется disk I/O error при попытке прочитать обычный файл?
Безопасно ли запускать fsck на смонтированном разделе?
Поможет ли перезагрузка, если ошибка disk I/O error стала постоянной?
Как отличить программный сбой от аппаратной поломки диска?

Полезное

Собрать логи и диагностику
Проверить SMART и состояние диска
Проверить и восстановить файловую систему