内蔵HDD構成では5本以上の構成ではケースの選択肢が限られるので、HDD本数を3TiB×5本から3TiB×7構成に変更するのに合わせて見直しを行った。
[変更前]
M/B: ASUSTek P8H77-I
HBA: HighPoint RocketRAID 2720SGL + SFF-8087 miniSAS->SATA(4分岐)ケーブル
HDD: Seagate ST3000DM001 3TiB × 5本 raidz2
[変更後]
M/B: Intel Desktop Board DQ77MK
HBA: LSI SAS 9200-8e + SFF-8088 miniSAS
HDD: Seagate ST3000DM001 3TiB × 7本 raidz2
HDD Enclosure: STARDOM ST8-U5
CPUやメモリ、電源はそのまま流用するためちょっとストックしていたM/Bを引っ張り出して再利用。
RR2720の時と違い、SAS9200-8eは特に何もしないでもFreeBSDで認識し使用できるのだけど、肝心のM/BがBIOS画面に行く前の段階で固まってしまい認識しない。
Intelのサポートサイトからファームウェアのバージョンをチェックしてみたら、搭載しているF/Wバージョンは一番最初の0034。最新は064で相当古い。
しかし、最新064には起動時にF7キーを押す方法では容量が足りないとエラーが表示されてアップデートが行われない。仕方ないのでマザーボード上のジャンパーピンを外して行うリカバリーアップデートを実行。問題なく認識するようになった。
リカバリーアップデートの詳しい手順はPDFに記載してありますが英語なので簡単に書いておくと。
- PDFの2ページ目に載ってる”Image 2: Jumper in place(BIOS Recovery Mode) (Normal Mode)”の様な目立つジャンパーピンを抜く。(電源コンセントを抜いた状態で!)
- あらかじめダウンロードしたファームウェアファイル(*.BIO)をコピーしておいたUSBメモリを挿す。
- 電源を入れて立ち上げる。
- F/Wのアップデートが始まるので、成功することを適切な神様に祈りながら待つ。
- アップデートが終了したら電源を切って電源プラグを抜きUSBメモリを外す。
- ジャンパーピンを元に戻す。
- 再起動がうまくいけば成功。
今度はあっさりとSAS9200-8eの認識成功。zpoolの作成は以前の手順と同じなので省略。
SAS9200-8e + ST8-U5の構成にして一つ困ったことはHDDに割り当てられるデバイス名が認識順のため、HDDが故障して交換等があると番号が変わってくる。
先日、da4に割り当てられていたHDDが故障したので又々(何回目だろう)RMAを使用して交換した。
Seagate ST3000DM001は耐久性が今一と言われており実際によく故障してる。しかし、RMAの返送先がSeagateは国内(千葉)にあるので手続きが非常に簡単で早いのと、WesternDigitalのコンシューマ向けHDDに搭載されているIntelliParkが嫌なので相変わらずSeagate。
交換用HDDが届いたので早速交換。その際のログがこちら。
Script started on Thu Mar 6 21:18:48 2014 # gpart create -s gpt da4 da4 created # gpart add -a 4k -s 2780g -t freebsd-zfs da4 da4p1 added # gpart show da4 => 34 5860533101 da4 GPT (2.7T) 34 6 - free - (3.0K) 40 5830082560 1 freebsd-zfs (2.7T) 5830082600 30450535 - free - (15G) # zpool replace data da4p1 # zpool status data pool: data state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Thu Mar 6 21:20:55 2014 812M scanned out of 8.80T at 54.1M/s, 47h19m to go 110M resilvered, 0.01% done config: NAME STATE READ WRITE CKSUM data DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 da0p1 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 replacing-4 OFFLINE 0 0 0 7465146473037877488 OFFLINE 0 0 0 was /dev/da4p1/old da4p1 ONLINE 0 0 0 (resilvering) da5p1 ONLINE 0 0 0 da6p1 ONLINE 0 0 0 errors: No known data errors # zpool status data pool: data state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Thu Mar 6 21:20:55 2014 598G scanned out of 8.80T at 304M/s, 7h52m to go 81.9G resilvered, 6.64% done config: NAME STATE READ WRITE CKSUM data DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 da0p1 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 replacing-4 OFFLINE 0 0 0 7465146473037877488 OFFLINE 0 0 0 was /dev/da4p1/old da4p1 ONLINE 0 0 0 (resilvering) da5p1 ONLINE 0 0 0 da6p1 ONLINE 0 0 0 errors: No known data errors # zpool status data pool: data state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Thu Mar 6 21:20:55 2014 1.81T scanned out of 8.80T at 314M/s, 6h29m to go 253G resilvered, 20.55% done config: NAME STATE READ WRITE CKSUM data DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 da0p1 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 replacing-4 OFFLINE 0 0 0 7465146473037877488 OFFLINE 0 0 0 was /dev/da4p1/old da4p1 ONLINE 0 0 0 (resilvering) da5p1 ONLINE 0 0 0 da6p1 ONLINE 0 0 0 errors: No known data errors # zpool status data pool: data state: ONLINE scan: resilvered 1.20T in 9h0m with 0 errors on Fri Mar 7 06:21:16 2014 config: NAME STATE READ WRITE CKSUM data ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 da0p1 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 da4p1 ONLINE 0 0 0 da5p1 ONLINE 0 0 0 da6p1 ONLINE 0 0 0 errors: No known data errors # exit Script done on Fri Mar 7 07:24:12 2014
しかし、交換後再起動したら問題発生。
実はda4に割り当てられていたHDDが故障したのでHDDを抜き取り、送付、交換用HDDが届くまで1週間位かかっているのだが、その間、故障してからずっとPCは動作させっぱなしだったので新しくHDDを挿した時にも空いていたda4が再度割り当てられていた。ここで再起動すると認識の順番が変わりda4->da6, da5->da4, da6->da5にずれてしまった。
# zpool status pool: data state: ONLINE scan: resilvered 1.20T in 9h0m with 0 errors on Fri Mar 7 06:21:16 2014 config: NAME STATE READ WRITE CKSUM data ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 da0p1 ONLINE 0 0 0 da1p1 ONLINE 0 0 0 da2p1 ONLINE 0 0 0 da3p1 ONLINE 0 0 0 da6p1 ONLINE 0 0 0 da4p1 ONLINE 0 0 0 da5p1 ONLINE 0 0 0 errors: No known data errors
何かある度にデバイスがずれてしまうと作業ミスが発生しやすくなるし、なにより見た目が宜しくない(本音)なので、これを機会にGPTラベルでの管理に変更する事とした。
まずzfsに割り当てるパーティションにGPTラベルを設定する。単純にdata poolのメンバーだから先頭からdata01~data07を割り当てる。
# gpart show da4 => 34 5860533101 da4 GPT (2.7T) 34 6 - free - (3.0K) 40 5830082560 1 freebsd-zfs (2.7T) 5830082600 30450535 - free - (15G)
da4のパーティションインデックス”1″にラベル”data04″を割り当てるのは以下。
# gpart modify -i 1 -l data04 da4
同様にしてdata poolの全てのメンバーにラベルを設定する。
次に、GPTラベルを使える様にkern.geom.label.gpt.enableの値をFreeBSDデフォルトの”1″となる様、以前に”0″と設定していた/boot/loader.confの以下の記述を修正(コメントアウト)する。
## Disable gpt/gptid labels #kern.geom.label.gptid.enable=0
ここまで準備が出来たら設定を活かすために再起動する。
しかし、これだけではzpoolの表示は変わらない。有効とするためには以下の操作が必要。
# zpool export data # zpool import -d /dev/gpt data # zpool status data pool: data state: ONLINE scan: resilvered 1.20T in 9h0m with 0 errors on Fri Mar 7 06:21:16 2014 config: NAME STATE READ WRITE CKSUM data ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 gpt/data01 ONLINE 0 0 0 gpt/data02 ONLINE 0 0 0 gpt/data03 ONLINE 0 0 0 gpt/data04 ONLINE 0 0 0 gpt/data05 ONLINE 0 0 0 gpt/data06 ONLINE 0 0 0 gpt/data07 ONLINE 0 0 0 errors: No known data errors
シリアルNo.はSeagateではHDD表面のS/Nの箇所で確認できる。
また、diskinfoコマンドでも確認できるのでHDDが故障したときのために、GPTラベルに対応するHDD毎のシリアルNo.を記録しておく。
# diskinfo -v /dev/gpt/data04 /dev/gpt/data04 512 # sectorsize 2985002270720 # mediasize in bytes (2.7T) 5830082560 # mediasize in sectors 4096 # stripesize 0 # stripeoffset 362905 # Cylinders according to firmware. 255 # Heads according to firmware. 63 # Sectors according to firmware. Z1******s0 # Disk ident.
いざというときに慌てないためにも、一覧にして印刷した紙をST8-U5の側に貼っております。