48TBファイルサーバに起こった異変から大修理に(1) 機材購入編

この2週間ほどは2年前ほどに環境を構築したファイルサーバにとんでもない異変が発生したため、機材を集めたり修復用の処理をかけていました。これにかなりの時間がかかった(といっても原因がデータ量が大きすぎて環境の再構築作業に時間がかかった+その作業がとある理由で失敗続きだった)ということで教訓の意味も含めて書いておきたいと思います。

 

まずは現象から

確認したのは本当に些細なことでした。この48TBファイルサーバはZFSのRAID-Z2で構築されているので、時々手動で健康状態を確認しています。その中でちょっとやばい状態を見てしまったのですね。それがこれ。途中のscrubでの状態です。

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          raidz2-0  DEGRADED     1     0     0
            zfs1    ONLINE       2     0     0
            zfs2    ONLINE       0     0     0
            zfs3    ONLINE       0     0     0
            zfs4    FAULTED     13     0     0  too many errors
            zfs5    ONLINE       2     0     0
            zfs6    ONLINE       0     0     0
            zfs7    ONLINE       0     0     0
            zfs8    ONLINE       0     0     0

…これ、絶対にやばすぎでしょ。

ReadErrorを3台同時に出すという事態なんです。ちなみにRAID-Z2はRAID-6の仲間であり2台までの故障に耐えられるように設計されているのですが、今回は同時に3台なんですよ。どう見ても何かがおかしい。そのためにRAID-Z2の管理本体にも影響が出ている状態なんですよね。問題は何が故障したか、です。即座に見て危なそうなのはzfs4と名前をつけてあるHDDなんですが…。dmesgより何がエラーを起こしたのかをちょっと拾ってみるとこんな感じ。同じネタが大量に出ていたので今回のエラーに関わる部分だけ残しています。

[53020.294315] sd 11:0:0:0: [sdf] tag#23 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[53020.294317] sd 11:0:0:0: [sdf] tag#23 Sense Key : Illegal Request [current]
[53020.294319] sd 11:0:0:0: [sdf] tag#23 Add. Sense: Unaligned write command
[53020.294321] sd 11:0:0:0: [sdf] tag#23 CDB: Read(16) 88 00 00 00 00 00 e3 d6 b3 18 00 00 08 00 00 00
[53020.294322] blk_update_request: I/O error, dev sdf, sector 3822498584 op 0x0:(READ) flags 0x700 phys_seg 32 prio class 0
[53097.541816] sd 12:0:0:0: [sdg] tag#27 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[53097.541817] sd 12:0:0:0: [sdg] tag#27 Sense Key : Illegal Request [current]
[53097.541818] sd 12:0:0:0: [sdg] tag#27 Add. Sense: Unaligned write command
[53097.541819] sd 12:0:0:0: [sdg] tag#27 CDB: Read(16) 88 00 00 00 00 00 e4 85 00 f0 00 00 01 58 00 00
[53097.541820] blk_update_request: I/O error, dev sdg, sector 3833921776 op 0x0:(READ) flags 0x700 phys_seg 6 prio class 0
[53097.894271] sd 6:0:0:0: [sdc] tag#2 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[53097.894273] sd 6:0:0:0: [sdc] tag#2 Sense Key : Illegal Request [current]
[53097.894274] sd 6:0:0:0: [sdc] tag#2 Add. Sense: Unaligned write command
[53097.894275] sd 6:0:0:0: [sdc] tag#2 CDB: Read(16) 88 00 00 00 00 00 e4 85 00 f0 00 00 01 58 00 00
[53097.894276] blk_update_request: I/O error, dev sdc, sector 3833921776 op 0x0:(READ) flags 0x700 phys_seg 43 prio class 0

DRIVER_SENSEといっているならばエラーの原因はストレージ側ではなくインタフェースカードでは?と思い、念のためにすべてのドライブのSMARTステータスを見てみると、不良セクタ関係の問題が見つかったはなんとzfs3という事態に。つまり今回のエラーにかかっていないドライブだったわけです。ちなみに、RAIDのHDDを接続しているSATAインターフェースカードはこの記事でも書いているとおりこの段階まではSATA3I10-PCIEというもの。これがかなりのキワモノで、対象記事でも書いてあるとおり

SATA2PortのASM1062からSATAを取り出し、各ポートをポートマルチプライヤのチップであるJMB575で5Portずつ分割することで10Port確保しています。ネットワークで例えるならルータが外部1Port内部2Portで内部ポートをハブで10Portに分割しているようなものです。

今回の読み込みエラーが出たドライブにつながっているzfs1,(3,)4,5はBIOSの認識順とコネクタの実装場所の関係から予測するとすべて同じポートマルチプライヤのチップから出ている(と推測される)ことから、原因はSATA3I10-PCIEに実装されているJMB575に異常が発生したのでは?という結論になりました。

 

SATAインタフェースカードなんて今はあまりない…

SATA3I10-PCIEはすでに発売されてから8年経過しているものですので市場在庫もほとんどなさそうで入手性が非常に悪いことと、同じものを買って負荷をかけるのがなんとなくいやになったので、値段が多少高くなってもポート数が多いカードを探したのですが、簡単にあるわけないですね。PCのストレージはM.2が主流になっている以上作っても売れませんので。値段が6桁円にならずにこの用途でギリギリ使えそうだった製品がこちら。

SATA3-I6-PCIE

SATAの管理チップが最新版になったモデルです。ポートマルチプライヤのチップを使わずに6ポート出せるという今となってはなかなかなボードです。が、10台を1枚で支えることができませんので「1枚+MBのポートを使う」or「2枚使いにする」で少し迷いました。結局同じような環境で動かした方がよいと思いますので2枚使いにすることにしました。

 

HDDが微妙な値上がり…

というわけでHDDは依然と同じこれです。

ST8000DM004

ちなみに、2~3ヶ月前に見たときからkakaku.comベースですが、1000円ほど最安値が値上がりしているようです。こんなところに円安の影響か…とちょっと考え込んでしまいました。

 

一度エラーをクリアしようとしてちょっとまずい事態に

とりあえず、ReadErrorが残っていると付け替えしたときにまずいことにならないか?と思いいったんzpool clearでエラーをクリアしようとしたら、こんな状態に…。

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            zfs1    ONLINE       0     0     2
            zfs2    ONLINE       0     0     0
            zfs3    ONLINE       0     0     1
            zfs4    ONLINE       0     0     0
            zfs5    ONLINE       0     0     1
            zfs6    ONLINE       0     0     0
            zfs7    ONLINE       0     0     0
            zfs8    ONLINE       0     0     0

やばいドライブすべてでCHECKSUMエラーを出すという状態に。もしかしてRAID崩壊の危機が間近に?この作業の影響が後々危ない形で出てきます。結論から言うとエラークリアできていないと最終的な再構築作業がうまくいかない、という状態になるようです。とりあえずSATAインタフェースカードを交換する前にもう一度zpool clearでCHECKSUMエラーをなかったことにしました。

 

次回はzpoolの再構築作業

これでかなり時間がかかりました。どういうことかというとエラー状態がのこったっままで再構築をしようとするとなぜか再構築が終わらない、という現象になるようです。理由がわからない上に解決方法もかなり難しいものですので…さすがにRAIDが崩壊するかも、の危険との戦いとなり、厳しかったです。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この記事のトラックバック用URL