NCQ в Linux: как проверить, включить и отключить
Обновлено 8 ноября 2026
NCQ (Native Command Queuing) позволяет отправить диску до 32 команд сразу. Диск сам выбирает порядок выполнения, и у жёстких дисков меньше лишних движений головок.
Как проверить
При загрузке libata пишет в журнал глубину очереди для каждого диска:
dmesg | grep -i ncq
ata1.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 32), AA
Текущая глубина очереди для диска:
cat /sys/block/sda/device/queue_depth
Значение больше единицы означает, что NCQ работает. Единица означает, что он выключен или не поддерживается контроллером. Какие контроллеры умеют NCQ, смотрите в таблице поддержки.
Как отключить
Для одного диска до перезагрузки:
echo 1 | sudo tee /sys/block/sda/device/queue_depth
Постоянно, через параметр ядра в загрузчике:
# для всех дисков
libata.force=noncq
# только для порта 2, устройство 0
libata.force=2.00:noncq
Номер порта виден в журнале: строки вида ata2.00 относятся ко второму порту.
Когда отключать
Типичный признак проблем с NCQ: ошибки в журнале с командами READ FPDMA QUEUED или WRITE FPDMA QUEUED, после которых идёт сброс линка. FPDMA QUEUED это и есть команды NCQ. Причиной бывает прошивка диска, кабель или сам контроллер.
- Сначала замените кабель SATA. Ошибки кабеля видны по росту атрибута SMART 199 (UDMA_CRC_Error_Count), подробнее в статье про SMART.
- Обновите прошивку диска, если производитель её выпускал.
- Если ошибки остались, отключите NCQ для этого порта и проверьте, пропали ли сбросы.
libata.force=noncqtrim.