TL;DR
RAIDZ2で組んでいたNASストレージが環境を変えてからエラーを吐くようになった。
その修理の顛末
事の起こり
3TBx5台のHDDをZFS、RAIDZ2で組み上げたNASサーバをHDDケース+ノートPCという構成で運用していた。
HDDを追加したりしたいなーと思い、ノートPCから自作PC(+PCI接続のSATA拡張ボード)にHDDを移した。
すると5台のうち2台でエラーが出るといってきた。
May 6 01:12:42 heteropoda kernel: [109551.991108] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
May 6 01:12:42 heteropoda kernel: [109551.997990] ata3.00: failed command: WRITE DMA EXT
May 6 01:12:42 heteropoda kernel: [109552.002555] ata3.00: cmd 35/00:03:d8:39:68/00:00:36:00:00/e0 tag 7 dma 1536 out
May 6 01:12:42 heteropoda kernel: [109552.002555] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
May 6 01:12:42 heteropoda kernel: [109552.011631] ata3.00: status: { DRDY }
May 6 01:12:42 heteropoda kernel: [109552.014974] ata3: hard resetting link
May 6 01:12:42 heteropoda kernel: [109552.334564] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
May 6 01:12:42 heteropoda kernel: [109552.336507] ata3.00: configured for UDMA/33
May 6 01:12:42 heteropoda kernel: [109552.336520] ata3.00: device reported invalid CHS sector 0
May 6 01:12:42 heteropoda kernel: [109552.336544] sd 2:0:0:0: [sdc] tag#7 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
May 6 01:12:42 heteropoda kernel: [109552.336553] sd 2:0:0:0: [sdc] tag#7 Sense Key : Illegal Request [current] [descriptor]
May 6 01:12:42 heteropoda kernel: [109552.336561] sd 2:0:0:0: [sdc] tag#7 Add. Sense: Unaligned write command
May 6 01:12:42 heteropoda kernel: [109552.336569] sd 2:0:0:0: [sdc] tag#7 CDB: Write(16) 8a 00 00 00 00 00 36 68 39 d8 00 00 00 03 00 00
May 6 01:12:42 heteropoda kernel: [109552.336575] blk_update_request: I/O error, dev sdc, sector 912800216
May 6 01:12:42 heteropoda kernel: [109552.341175] ata3: EH complete
#これは1台分のログだが、もう一台においても同様のログが出た
HDDが死んでるのではないか
ここで私はHDDがクラッシュしたのかと思い、S.M.A.R.T.を確認。
ログは保存してなかったよ
が、エラーらしきログは出ていなかった。
そこで予備のHDDがあったため、該当するHDDを入れ替えてみた。
(HDDは /dev/disk/by-path/
以下を ls -la
して見つける)
しかし、HDDを入れ替えても同様のエラーが発生した。
となると、HDDで問題が起きているのではなさそうだ。
エラー箇所の考察
SATA通信時にエラーが起きている可能性が高い。
SATA通信にはPCIe x2接続のSATA10ポート増設ボードを使っている。
ただ、10ポートのうち3ポートはエラーが出ていないため、SATAボードとマザーボードの相性、といった問題は考えづらい。(しかしこの判断は間違いだった)
ここで構成についてより詳しく書くと、マザーボードにはPCI接続のSATA増設ボード刺さっており、その増設ボードからPCケースに付属しているSATAアダプタにSATAケーブルでつながっている。
PCケースにSATAアダプタがあるのはホットスワップ対応のケースであるためだ。
マザーボード <--(a)--> PCI-SATA増設ボード <--(b)--> SATAケーブル <--(c)--> PCケースのSATAアダプタ <--(d)--> HDD
同時にすべてのHDDがエラーになるわけではないので、上記でいう(a)が問題になっている可能性は低い(この判断は間違いである)
残るは(b),(c),(d)のいずれかになる。
SATAケーブルが死んでいるのではないか
すぐできる検証として、SATAケーブルを別のものに変えてみた。
しかし依然としてエラーは出ていた。
となると
(b) PCI-SATA増設ボードのコネクタが死んでる
(d) PCケースのSATAアダプタが死んでる
のどちらかになる。
SATA増設ボードが死んでいるのではないか
そこで(b)を潰すためにPCI-SATA増設ボードを買い替えてみる
→エラーは出続ける
ここで気づいたが、これまで出ていたポートと別のポートでも同様のエラーが出ている
PCケースのSATAアダプタが死んでるのではないか
ここまで来てもう残りはPCケースのSATAが死んでいることで決定なので、HDDと増設ボードを直接ケーブルで繋いでみたが、だめ。
正直、もうエラーになりそうな箇所はもう見当たらないので、途方にくれていた。
答えは意外なところからわかる
PCI-SATA増設ボードは玄人志向の製品だったので、半ばあきらめつつ、何か情報はないかとユーザBBSを見てみる。
すると全く同一ではないものの、ドライブが認識されなくなる、ブルースクリーンエラーが出る、といった現象が出ているらしい。
特にこれ。
そしてこのユーザはマザーボードのBIOSを上げると改善したというではないか。
これはどうやらマザーボードとの相性が悪かったのでは無いかと疑い始める。
マザーボードを別のものに変える
マザーボードを交換したら正常に動作するようになった。
マザーボードの仕様としてPCI-Express x16 (内部はPCI-Express x1)
というのがあって、おそらくPCI-Expressの帯域がx1で足りなくなった場合にエラーが発生したとみられる
マザーボードを変えるのはなかなか勇気のいる決断だったが、正直遠回りした感は否めない。
結論
パーツの互換性はきちんと確認しようという話だった。
しかしまあこんなにも自分の推論が当てずっぽうだとはなあ。。。