Désactiver le Native Command Queuing (NCQ)

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Système Mots clés : GRUB, kernel, NCQ, SATA
Rencontrant sur un serveur de fichiers des erreurs d'entrée/sortie perturbant fortement l'intégrité d'un RAID 5 logiciel, j'ai dû me résoudre à désactiver le NCQ pour tous les disques.
La technique NCQ permet à un disque SATA de recevoir plusieurs requêtes de entrée/sortie et de décider l'ordre dans lesquelles les accomplir.

En effet, les tests avec les outils du constructeur, badblocks et smartmontools indiquaient que les disques étaient sains, le changement de carte contrôleur et câbles SATA n'améliorait nullement la situation. Il ne restait donc plus qu'à jouer sur les paramètres gérant les entrées/sorties des disques.

Pour désactiver le NCQ sous Linux, plusieurs méthodes sont possibles.

Désactiver le NCQ pour l'ensemble des disques


Pour désactiver le NCQ, il faut passer le paramètre force=noncq au module libata, ce qui est faisable soit par le chargeur de démarrage GRUB, soit par les options des modules.

Passage par GRUB



  • éditer /etc/default/grub

  • rajouter libata.force=noncq aux paramètres par défaut :


 GRUB_CMDLINE_LINUX_DEFAULT="quiet libata.force=noncq"


  • mettre à jour GRUB avec update-grub


Passage par les options des modules



  • éditer /etc/modprobe.d/options.conf

  • rajouter :


options libata force=noncq

Désactiver NCQ uniquement pour certains disques


Il faut changer la profondeur de la queue de NCQ en la mettant à 1 au lieu de 31.
Par exemple, pour le disque /dev/sda:
 echo 1 > /sys/block/sda/device/queue_depth

Les commentaires sont fermés.