DegradeしていたRAID-5をRebuild
頻繁にする作業ではないのでその度にオロオロするこちです。HDDの一つが故障しRAID-5をリビルドした際に行ったことをメモします。
リビルドというのはとてもドキドキします。復旧が可能な段階ですんなりと新しいHDDを受け入れてくれればよいのですが、何らかの理由でうまくいかなかったら、結局すべてのデータを失うかもしれないからです。
はじめに
仕事で使用しているPCのFドライブは、AMCC社製RAIDカード「3ware 9550SX」を使用したRAID-5構成になっています。4台のHDD(700GB)を束ねており、見かけ上は3台分の容量、およそ2TBのドライブとなっています。
RAID-5では、残り1台分の容量はデータ冗長性を持たせるために使われます。このおかげで、4台のHDDのうちの任意の1台について異常が発生した場合でも、正常な残りの3台のデータを基に、元通りの状態に復元できるのが特長です。(ちなみに同時に2台で異常が起きると復元できません。)
1週間ほど前のことです。普段はPCの電源は24時間入れたままにしている私のPC。たまたま再起動した際にPOSTメッセージを見ていて、このRAID-5がデグレードしている(障害が発生してRAID-5の性能を確保できていない)ことに気づきました。
∞∞∞ Press <Alt-3> to access 3ware BIOS Manager ∞∞∞
3ware Serial ATA RAID Controller: 9550SXU-4LP
BIOS: BE9X 3.04.00.002 Firmware: FE9X 3.04.00.005 Slot:7
BBU Status: Not Present
Number of online units: 1, available drives: 0, hot spares:0, offline units: 0
Exportable Units:
4 drive 64K RAID 5 2.04 TB (F_Drive_Raid5) DEGRADED
Port 1 Hitachi HDS721075KLA330 698.63 GB
Port 1 Hitachi HDS721075KLA330 698.63 GB
Port 1 Hitachi HDS721075KLA330 698.63 GB
3ware BIOS installed successfully
_
デグレードして以降これに気づくまでにどれだけの期間があったのかは不明です。なぜ何かしらの警告も受けていないのか、など疑問はありましたが、とりあえず上司に報告し、替えのHDDの手配をしました。また、最悪このドライブが復旧できなくなった場合に備え、自前のNASに必要なデータはバックアップしました。
残り3台のHDDが壊れないことを祈りつつ仕事は続けていましたが、数日して替えのHDD(同型番、同容量)が用意できました。交換に先立ち、ひとまず現状を把握したいと思いました。
tw_cli.exeで確認してみる
以前このRAIDに問題が発生した時、webブラウザ経由で自機上のRAIDカードにアクセスし管理をした記憶があったのですが、それを思い出すのと同時にその方法が使えなくなった(セキュリティ的な理由?)ような気もしてきました。他に管理ツール的なものがあるのを期待してC:ドライブを眺めていたところ、コマンドラインでRAIDを操作するアプリケーションを見つけました。
C:\Program Files\AMCC\CLI\tw_cli.exe
起動するとウィンドウが開きます。
//VFX>
VFXは、自機の名称です。個々の環境で変わってきます。とりあえず「?」でヘルプを表示してみました。
//VFX> ?
Copyright (c) 2009 LSI
AMCC/3ware CLI (version 2.01.09.004)
Commands Description
----------------------------------------------------------------------
focus Changes from one object to another. For Interactive Mode Only!
show Displays information about controller(s), unit(s) and port(s).
.
.
.
上記はだいぶ省略しています。要は、focusで狙いを定めて、showすれば何か見えるのだろう、とだけ理解しました。このままshowしてみます。
//VFX> show
Ctl Model (V)Ports Drives Units NotOpt RRate VRate BBU
---------------------------------------------------------------------
c0 9550SXU-4LP 4 3 1 1 2 1 -
このとおり、自機に搭載されているコントローラ(RAIDカード)一覧(といっても、今回は一つ)が表示されました。4ポートあるのにドライブ数は3。RAIDユニットが1つ組まれていることが分かります。このコントローラc0について詳しく見るために c0 にfocusし、さらにshowします。
//VFX> focus c0
//VFX>c0> show
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy
------------------------------------------------------------------------------
u0 RAID-5 DEGRADED - - 64K 2095.44 ON OFF
Port Statsu Unit Size Blockes Serial
--------------------------------------------------------------
p0 NOT-PRESENT - - - -
p1 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p2 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p3 OK u0 698.63 GB 1465149168 GTE200P8G3***E
これにより、コントローラ上で作られているRAID-5のユニットu0はDEGRADE状態であり、u0に属しているのはp1~p3の3台だけということが分かります。POST画面の情報と一致しています。
ちなみに、4台のHDDのうち1台がダメになっていることは理解できているとしても、POST画面を見ただけだと、ポート0~3のうちの0がダメなのか、1~4のうちの4がダメなのか迷ってしまいますが、この画面でハッキリしました。p0のStatusがNOT-PRESENTというのは…?HDDを認識していないのでしょうか?
さらにu0にfocusし、showしてみます。
//VFX>c0> focus u0
//VFX>c0>u0> show
Unit UnitType Status %RCmpl %V/I/M Port Stripe Size(BG)
---------------------------------------------------------------------
u0 RAID-5 DEGRADED - - - 64K 2095.44
u0-0 DISK DEGRADED - - - - 698.481
u0-1 DISK OK - - p1 - 698.481
u0-2 DISK OK - - p2 - 698.481
u0-3 DISK OK - - p3 - 698.481
u0/v0 Volume - - - - - 2095.44
見られる情報としてはこれまでと大差なさそうです。RAID-5として組まれているu0はいずれも698.481GBのDISK(u0-0~u0-3)で構成しているはずなのに、u0-0だけどのポート上にも見当たらず、DEGRADEDさせているよ、と。
HDDの準備と交換
さて、ここまでは交換作業の前の事前確認でした。ここから、HDDの交換作業です。なお、用意した交換用のHDDは新品ではなく、単体で仕事用データ保存用に使われていたものでした。(もちろん本来は新品であるべきでしょうが、同型番をすぐに用意できることを優先しました。)中身は空でしたが、NTFSでフォーマットされたボリュームを持っていました。念のため、あらかじめWindows上でボリュームを削除しておきました。(たぶん、リビルド時に中身は関係なくなっちゃうと思うので、必須の作業ではないと思います。)
PCの電源を落としサイドパネルを開け、4台のHDDのうちポート0につながっているHDDを探し、交換します。過去の交換作業で苦労した経験から、SATAケーブル上にサインペンで0~3の数字を書き込んでいたので、コントローラ基板上に印刷されているポート番号の小さな表示を探さずに済みました。
BIOS画面でリビルド
PCの電源を入れ、前述のPOST画面のタイミングでAlt+3キーを押し、3ware BIOS Manager画面に入ります。
Exportable Units :
+ 4 drive 64K RAID 5 2.04 TB (F_Drive_Raid5) DEGRADED
Unusable Arrays :
+ ? drive ???...
---------------------------------------------------------------------------------
[ Create Unit ][ Delete Unit ][ Maintain Unit ][ Settings ][ Information ]
と表示されます。(すみません?の部分はどう表示されていたか記録がなく。)Exportable Unitというのが対象のRAID-5のユニットであるのは間違いないと思われますが、交換したHDD1台がUnusable Arraysとして表示されているようです。Unusableでは困るし、Arrayでもないはずなのに…。
不要なArray状態をバラして再構成
このままでは、交換したHDDをRAID構成に参加させてリビルドすることができません。
上下キーで画面上のカーソルをUnusable Arrays:の中の + ? drive ???...まで動かし、Enterキーを押すことで選択状態にします。
+ *? drives ???...
と、行頭に*が付いて、選択状態であることを示しています。ここでtabキーを押して画面下部のメニューをフォーカスし、[ Delete Unit ]をハイライトさせた状態でEnterキーを押します。確認画面で[ OK ]を選択することで、このArrayをバラします。
Available Drives :
Port 0 Hitachi HDS721075KLA330 698.63 GB
Exportable Units :
+ 4 drive 64K RAID 5 2.04 TB (F_Drive_Raid5) DEGRADED
となり、ポート0上の”素”のHDDが1台と、既存のRAIDユニットという状態になりました。そこで、既存のRAIDユニットとバラした単体HDDの両方に*を付けてどちらも選択状態にし、[ Maintain Unit ]を選択します。
┌─── Maintain ───┐
│ │
│ Rebuild │
│ Verify │
│ Configure │
│ Remove │
│ -------------- │
│ Exit │
└────────────────┘
表示されたポップアップメニューからRebuildを選択、Enterキーを押します。
「F8で3ware BIOS Managerを閉じるとリビルドを行う状態になります」という内容のメッセージとともに、RAIDを構成する各ポートのHDD一覧が表示されるので、[ OK ]で閉じます。
さて、必要な操作は終了です。F8キーを押して、3ware BIOS Managerを閉じます。その際「ポート0のドライブの中身は消滅します」という内容の警告がでるので Yキーを押します。その後、通常通りWindows10が起動しました。
以降はコントローラがひたすらリビルドしてくれます。HDD全域にわたって読み書きが続くことになるので発熱が心配です。リビルドによって負荷がかかり、別のHDDが故障したという話を聞くこともありますね。気休めですが、100円ショップで200円で売っていた、USB電源で動く小さな扇風機をPC前に置いておきます。
再びtw_cli.exeで確認
Windows10起動後、改めてtw_cli.exeで状況を見てみます。
//VFX>c0> show
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy
------------------------------------------------------------------------------
u0 RAID-5 REBUILDING 20% - 64K 2095.44 ON OFF
Port Statsu Unit Size Blockes Serial
--------------------------------------------------------------
p0 DEGRADED u0 698.63 GB 1465149168 GTA200P8G2***A
p1 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p2 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p3 OK u0 698.63 GB 1465149168 GTE200P8G3***E
(すみません、明確な記録がなく、上記はある程度の記憶で書いています。)リビルドが進んでいることを確認できたのであとは放置です。さらに念のため、リビルドが完了した翌日では、
//VFX/c0> show
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy
------------------------------------------------------------------------------
u0 RAID-5 OK - - 64K 2095.44 ON OFF
Port Status Unit Size Blocks Serial
---------------------------------------------------------------
p0 OK u0 698.63 GB 1465149168 GTA200P8G2***A
p1 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p2 OK u0 698.63 GB 1465149168 GTE200P8G3***E
p3 OK u0 698.63 GB 1465149168 GTE200P8G3***E
こんな感じでした。問題ないですね。
まとめと追記
・Windows上からはtw_cli.exeが使用できる。show、focusコマンドでRAIDの状態を確認できる。
・空のHDDへ交換した場合でも、BIOS上で謎のアレイとして見えることがある。(おそらくこれは、このHDDが以前に他のRAIDの一部に使用されていたことがあるため?)その場合、このアレイについて一旦「Delete Unit」することで単体のHDDとして扱えるようになる。
・デグレードしているユニットと単体HDDを選択した状態で「Maintain Unit」>「Rebuild」でリビルドできる。
・ひょっとして。tw_cliからの操作で、異常が起きているポートについてremoveなり、何か”切り離す”処置をした上で、PCの電源をONのままHDDを差し替えるホットスワップ的なことができるのだろうか?