Uncorrectable parity/CRC error

FreeNASのNASで特定のHDDについてUncorrectable parity/CRC errorが出る。

Uncorrectable parity/CRC errorとは

S.M.A.R.TにおけるUDMA_CRC_Error_Countに相当するエラーらしい。

エラーといっても,HDDとマザーボードとの通信で発生するエラーで,HDDの記録自体の問題ではない。

このエラーが検出されると自動的に再送がかかるから,データの破損等は発生していないと考えてよい。(よっぽど酷い状態になっていない限り)

原因

HDDとマザーボードの間の転送エラーなので,その間のどこかが原因ということである。

SATAコントローラーが悪いという可能性も否定できないが,基本的にはSATAケーブルかSATAコネクタの問題らしい。

SATAの端子部の酸化などによる信号品質の劣化,ケーブルの折り曲げストレスによるダメージによる信号品質の劣化が発生しているということである。

これまで意識したことはなかったのだが,SATAのケーブルは使用状況によって3年やら4年程度で前述のような問題が出てくることがままあるらしい。

対処

まずはSATAケーブルを抜き差ししてみる,それでもだめならSATAケーブルを交換するという順で対処する。

端子部の酸化,もしくは単純な接触不良が原因である場合,ケーブルの抜き差しで改善する可能性が高い。

端子部の状態が非常に悪いか,ケーブル内部のダメージが原因である場合,抜き差しでは改善せず,ケーブルを交換することとなる。

処置

当該のNASは組み立ててから5年弱になるので,SATAケーブルに問題が発生しておかしくない時期ということになる。

ただ,分解してケーブルを交換するのが面倒だったため,HDDを挿入する位置を変更して様子を見ることとした。

このNASではiStar USAのリムーバブルラックを使用しているため,これの問題である可能性もあるわけである。

センチュリー iStarUSA リムーバブルラック 4Bayモデル ブラック BPN-DE340SS-BK

センチュリー iStarUSA リムーバブルラック 4Bayモデル ブラック BPN-DE340SS-BK

これで改善しなかったらSATAのケーブルを交換しようかとなるのだが,悩ましいのはどこのケーブルを買おうかということである。

PC,サーバのメーカーは品質のよいケーブルを仕入れていると予想されるが,一般のパソコンショップ等で販売されているSATAケーブルがそう品質のいいものであるとは思えない。

調べた感じではミヨシのケーブル良さそうだったが,コネクタ部が大きすぎて2段重ねのSATAポートに入らないということなのでNG。

  

次点でオウルテックという感じだろうか。ハイグレードシールド採用 ラッチ付き ストレートタイプ SATAケーブル - オウルテック


頻度としては1TB転送に1回ぐらいのペースで発生していた。

(ada8:ahcich16:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 40 10 6d b5 40 b0 02 00 00 00 00 (ada8:ahcich16:0:0:0): CAM status: Uncorrectable parity/CRC error (ada8:ahcich16:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 20 a0 d6 7c 40 cd 01 00 00 00 00 (ada8:ahcich16:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 e0 a0 00 e1 40 b0 02 00 00 00 00 (ada8:ahcich16:0:0:0): CAM status: Uncorrectable parity/CRC error (ada8:ahcich16:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 88 90 78 e9 40 b0 02 00 00 00 00 (ada8:ahcich16:0:0:0): CAM status: Uncorrectable parity/CRC error (ada8:ahcich16:0:0:0): Retrying command (ada8:ahcich16:0:0:0): WRITE_FPDMA_QUEUED. ACB: 61 08 68 40 f1 40 b0 02 00 00 00 00 (ada8:ahcich16:0:0:0): CAM status: Uncorrectable parity/CRC error (ada8:ahcich16:0:0:0): Retrying command