ata1.00: failed to execute command (DRDY ERR / UNC status) — Решение ошибки диска в Linux
Архитектура ошибки и симптомы сбоя
Сообщение «ata1.00: failed to execute command (DRDY ERR / UNC status)» генерируется подсистемой ядра libata. Оно означает, что накопитель, подключенный к первому SATA-порту (ata1.00), не смог выполнить команду чтения/записи (обычно READ FPDMA QUEUED или WRITE FPDMA QUEUED). Флаг DRDY (Device Ready) подтверждает готовность контроллера диска к обмену, однако статус UNC (Uncorrectable Error) указывает на физическую невозможность прочитать данные из сектора даже с применением встроенных аппаратных алгоритмов ECC-коррекции накопителя.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| ata1.00 | Target Device (Port 1, Master) | Идентификатор контроллера и целевого SATA-накопителя в нумерации ядра. |
| DRDY (Device Ready) | ATA Status Register Flag | Устройство находится в рабочем состоянии и принимает входящие команды. |
| UNC (Uncorrectable) | ATA Error Register Flag | Контроллер накопителя зафиксировал повреждение данных в секторе (Unrecoverable Read Error). |
| res 51/40:... | Taskfile Registers | Детальный код ответа устройства, содержащий биты ошибки 0x40 (UNC) и состояние 0x51. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Экспресс-анализ SMART сбойного накопителя
Определите имя устройства и проверьте счетчики физических дефектов:
# Определение соответствующего имени блочного устройства (например, /dev/sda):
ls -l /sys/block/sd*
# Проверка атрибутов деградации пластин/чипов:
sudo smartctl -A /dev/sda | grep -E "(Current_Pending_Sector|Reallocated_Sector_Ct|Offline_Uncorrectable|UDMA_CRC_Error_Count)"Если значения Current_Pending_Sector или Offline_Uncorrectable превышают 0, на диске есть физические бэд-блоки.
Сценарий 2: Отключение NCQ (Native Command Queuing) для стабилизации связи
Если сбой вызван багами в прошивке контроллера диска или кабеле, временное отключение очереди команд NCQ предотвратит падение ядра:
# Временное снижение глубины очереди NCQ до 1 (отключение очередей):
echo 1 | sudo tee /sys/block/sda/device/queue_depth
# Перманентное отключение NCQ через параметры загрузки в /etc/default/grub:
GRUB_CMDLINE_LINUX="libata.force=noncq"
sudo update-grubСценарий 3: Локализация сбойного LBA и снятие посекторного образа
# Создание дампа диска через GNU ddrescue (без добивания битых секторов):
sudo ddrescue -d -n /dev/sda /mnt/backup/sda_rescue.raw /mnt/backup/sda_rescue.log
# Повторный проход только по проблемным блокам:
sudo ddrescue -d -r 2 /dev/sda /mnt/backup/sda_rescue.raw /mnt/backup/sda_rescue.logНе дожидайтесь окончательного разрушения магнитных головок или контроллера. Системные инженеры ITSTM оперативно снимут посекторный слепок, заменят накопитель в RAID-массиве и восстановят базы данных.
Частые вопросы (FAQ)
Что конкретно означает статус UNC (Uncorrectable Error) в ATA-терминологии?
Статус UNC означает, что контроллер диска обнаружил в запрашиваемом секторе математическую ошибку контрольной суммы ECC, которую внутренний процессор накопителя не смог восстановить. Для операционной системы это означает невозможность получить данные из сектора (I/O Error).
Поможет ли форматирование диска избавиться от ошибок UNC?
Полное низкоуровневое форматирование (или перезапись нулями через dd) заставит контроллер диска выполнить процедуру Remap (переназначение сектора из резервной области). Однако если деградация поверхности продолжится, новые UNC ошибки появятся снова в ближайшее время.
Чем отличаются ошибки DRDY ERR от ошибок ICRC (Interface CRC)?
DRDY ERR с флагом UNC указывает на проблему чтения с самой поверхности диска или ячеек флеш-памяти. Флаг ICRC (Interface CRC Error) указывает на помехи и повреждение данных в процессе передачи по кабелю между диском и материнской платой.
Почему после ошибки libata ядро понижает скорость диска с SATA 6.0 Gbps до 3.0 или 1.5 Gbps?
Подсистема libata в ядре Linux использует ступенчатый механизм восстановления (Error Handling). При повторяющихся сбоях передачи ядро последовательно сбрасывает скорость линка (speed down) и отключает NCQ, пытаясь сохранить работоспособность устройства.