SSDのディスクで「kernel: ata1.00: failed command」のエラー

SSDを使用しているサーバーで2~3日に数回ほど下記の「www01 kernel: ata1.00: failed command: WRITE FPDMA QUEUED」エラーが発生するようになりました。

Aug 31 07:15:39 www01 kernel: ata1.00: exception Emask 0x0 SAct 0x6 SErr 0x0 action 0x6 frozen
Aug 31 07:15:39 www01 kernel: ata1.00: failed command: WRITE FPDMA QUEUED
Aug 31 07:15:39 www01 kernel: ata1.00: cmd 61/08:08:d8:d9:d4/00:00:1c:00:00/40 tag 1 ncq 4096 out
Aug 31 07:15:39 www01 kernel:         res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
Aug 31 07:15:39 www01 kernel: ata1.00: status: { DRDY }

ネットで調べてみるとHDD故障かSATAケーブルの故障の記事が何個あったので、違うSATAケーブルに交換してもエラーが発生しているので違う原因も調べてみました

SSD や SATA チップセットによっては Linux Native Command Queueing (NCQ)が正しく動作しない場合にエラーが発生するみたいです
NCQは、ディスクのパフォーマンスを向上する為に、複数のコマンドを連続で受け取り、それと同時にコマンド処理を行いより高速なコマンド処理が可能となる機能です

この機能を下記のコマンドで無効化できるので無効化して1週間ほど経過しましたが、エラーが解消したのでディスク故障やSATAケーブルの不良とかではなかったようです

$ sduo echo 1 > /sys/block/sdX/device/queue_depth

スポンサーリンク