この年の瀬に、なんとHDDが故障しました。仕方がないので交換した、という話です。
自宅サーバーのHDDが故障しました。2TB✕8のRAID6構成ですので、1台壊れるくらいではデータ喪失の可能性は無いんですが、うまくfailになってくれず、エラーを吐きまくってディスクアクセスが遅くなるという最悪な状態になってました。
Dec 25 13:02:08 ikaros kernel: ata1.00: exception Emask 0x50 SAct 0x0 SErr 0x280900 action 0x6 frozen Dec 25 13:02:08 ikaros kernel: ata1.00: irq_stat 0x08000000, interface fatal error Dec 25 13:02:08 ikaros kernel: ata1: SError: { UnrecovData HostInt 10B8B BadCRC } Dec 25 13:02:08 ikaros kernel: ata1.00: failed command: READ DMA Dec 25 13:02:08 ikaros kernel: ata1.00: cmd c8/00:60:80:27:35/00:00:00:00:00/e1 tag 10 dma 49152 in Dec 25 13:02:08 ikaros kernel: res 50/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x50 (ATA bus error) Dec 25 13:02:08 ikaros kernel: ata1.00: status: { DRDY } Dec 25 13:02:08 ikaros kernel: ata1: hard resetting link Dec 25 13:02:08 ikaros kernel: ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310) Dec 25 13:02:08 ikaros kernel: ata1.00: configured for UDMA/33 Dec 25 13:02:08 ikaros kernel: ata1: EH complete
仕方がないので、とりあえずはfail状態に落として、2TB✕7台構成に変更。これでとりあえず性能は戻りました。これ自動では切り離してくれないんだっけ・・・?あ、mdmonとか動かさないとダメなのかな。調べておこう。
[root@ikaros ~]# mdadm --manage /dev/md128 --fail /dev/sda2 mdadm: set /dev/sda2 faulty in /dev/md128 Personalities : [raid6] [raid5] [raid4] md128 : active raid6 sdf2[2] sde2[1] sdd2[0] sdc2[5] sda2[7](F) sdb2[6] sdh2[9] sdi2[8] 11719507584 blocks super 1.0 level 6, 64k chunk, algorithm 2 [8/7] [UUUUU_UU]
さて、HDDを確保しなければならないわけですが、面倒なので、毎度おなじみ、密林(amazon)で購入です。前回のHDD増設以来、味をしめています。
前回、9月に増設用に買ったときからは、若干型番が変わったような気がします。また保証が付いて、値段が上がっていると。他のサイズも見比べてみましたが、バイト単価で見ても、やはり全体に値段は9月より上がっています。なんだかタイミング悪かったかな。
さて、交換、となるわけですが、なんせ同じサイズ、同じメーカーのHDDが8台もあります。RAID構成もautoにしているため、どのポートにどのHDDが刺さってるかなんて、正直開けてみないと分からない状態。事前にsmartctlでシリアルまできちんと押さえて、交換するHDDを間違えないようにします。ほぼカオス。ってゆっか、mdの自動認識が優秀なので、甘えているという。
ついでにSMARTのデータも確認しましたが、経験則として「稼働時間が概ね1000日を超えると、壊れるHDDが出てくる」という傾向に見えます。そこから先は個体差かなという感じ。今回のHDDは概ね1000日、決して稼働時間が長いほうでは無いですが、idle3ctlをかけずに動かしていた時間があり、かなりスピンアップカウントが高い状態です。これが影響したかな、と想定します。最近導入したHDDは、入れた瞬間にidle3ctlでスピンダウンを抑止してしまうので、ほとんどカウントは上がりませんし、実際スピンダウンもしていません(これ調整しないと、稼働中もかなりカチカチ言って気になるので)。
というわけで、シリアル見て交換。raidへの組み込みを実施します。
まずはパーティションテーブルから。他のドライブを見て、セクタ数とかは合わせます。どうせ2TBなので、gptは使いません。msdos(MBR)でいい。
(parted) p モデル: ATA WDC WD20EZRX-00D (scsi) ディスク /dev/sda: 3907029168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 526335s 524288s primary 2 526336s 3907029167s 3906502832s primary raid
こんな感じ。raidフラグさえ付けてしまえば、此処から先は何も考えずにmdに組み込めば終わりです。
[root@ikaros ~]# mdadm --manage /dev/md128 --add /dev/sda2 mdadm: added /dev/sda2 [root@ikaros ~]# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md128 : active raid6 sda2[10] sdf2[2] sde2[1] sdd2[0] sdb2[6] sdc2[5] sdh2[9] sdi2[8] 11719507584 blocks super 1.0 level 6, 64k chunk, algorithm 2 [8/7] [UUUUU_UU] [>....................] recovery = 0.0% (165952/1953251264) finish=588.3min speed=55317K/sec
果報は寝て待て状態。やっぱ楽です。
流石に8台も動かしていると、故障率は上がります。要するに8倍。ただ、容量効率を考えると、なかなかアップグレードがしずらいです。
というのも、2TB✕8のRAID6で、HDD故障に備えるとすると、パリティ4TBで2台の故障に耐えられます。これをもし4TBのHDDで組むと、同じ12TBのRAID6を作るのに、4TB✕5になり、パリティは8TBになる。故障率は5/8になりますが、容量効率は12/16(75%)から3/5(60%)に落ちます。
もちろん、その後の拡張性等を考えると、4TBで組んだほうが有利になるのは間違いないのですが、それにはまだ、4TB HDDの値段(バイト単価)が高いのです。今最もバイト単価の効率が高いのは間違いなく3TBモデルなんですが、マイグレーションするとして、可用性1.5倍に対してかけるコストと考えるとちょっと勿体無い気がして、できれば4TB以上のストレージを狙いたいところです。
悩みは尽きないサーバーHDD事情ですが、今回の故障で、まずは今の構成の安定性が確認できたのは良かったです。あとはmdモニタの辺りの設定が残かな、と。
コメント