第72日目:【Firmware】('A`)/ 花子と綱渡りしました・・・【update】
|
どうも、('A`)です。
何でも関東の方では雨や雷が激しくて、飛行機も遅れたりと大変そうですが、
('A`)が住む札幌では今週になって急に暑くなり、昨日も30℃を超えました。
大通りでビール飲んでも寒くない季節がやってきました。短い夏ですけど・・・
と言いつつ、昨日は花子(banana3000)も('A`)も夜まで「綱渡り」状態でして、
結構ハラハラしていました。
8月になってから急きょ花子の「ラックのお引っ越し」が決まりました。
今まではデータセンター(PIE)のケージ3.5(ずいぶん中途半端ですが、ケージ3の
拡張部分です)という処にいたのですが、各ケージ内の整理を行なう過程で、
現在cサーバや雪だるまサーバが設置されているケージ1のラック5という処に
yutoriサーバ(tiger3501)とかと一緒に移す事になりました。
(リモートコンソールが利用できる環境に移るので、('A`)的にはうれしい限りです)
で、今週火曜日(8/5)にお引っ越ししたのですが、その前日花子はダウンしました。
どうもHDDの1つ(6番ポートのHDD)がタイムアウトになり(DEVICE ERRORと認識される)、
それが引き金になってサーバがダンマリになる、という状況でした。
で、お引っ越しの際中にBrian( ^ω^)にHDDを診てもらったのですが、電源を
つけるとちゃんと動いて認識されました。
(接続が甘かったのかなあ・・・)
で、夜までは順調に動いていたのです、夜までは・・・
花子が悲鳴を上げ始めたのは火曜日の夜でした。突然ダウン状態になったのです。
手動でサーバを立ち上げてfsck(HDDのチェック・修復)処理を実施して1度復旧を
したのですが、2時間も立たないうちにまたダウンしたのです。。。
花子(banana3000)は色んな意味で「特殊なサーバ」です。
HDDの修復についても、OS側ではfsckがあり、RAIDコントローラ(3ware)側では
Verifyがあります。
OS側ではどちらかというと「物理的な修復」を、RAIDコントローラ側はRAID構成を
踏まえた修復をおこないます。
(具体的に言うと、fsckと似たようなセクタ単位での修復をおこなうだけでなく、
パリティデータの再計算と修復もおこなったりします。流石にfsckではそこまで
修復されません。)
twa0: ERROR: (0x05: 0x210B): Request time out!: request = 0xc6f86c70
twa0: INFO: (0x16: 0x1108): Resetting controller...:
|
上記のメッセージが表示されましたが、再起動直後には6番ポートのHDDはOK
状態と認識されていました。
もしかするとVerify処理中にApacheを立ち上がっていたので、それで修復が
うまくいかなかったのかなあ? と思い、まずはfsck処理を行ないました。
・シングルユーザモードで立ち上げる
・/etc/fstab で /homeパーティション(/dev/da0p1 RAID 6本体)をコメント
・ルート(/)、/usr、/varを個別でfsck処理した後、/homeをfsckする
(fsck_ufs -y /dev/da0p1)
で、昨日の昼(8/6 12:00)にfsck処理が終わった後1度サーバをリブートして
(/homeはマウントしない状態で)、3wareの管理システムからRAIDの状態を調べると、
Verify処理が既に動いていました。
banana3000# tw_cli
//banana3000> info c0
Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache
AVrfy
---------------------------------------------------------------
u0 RAID-6 VERIFYING - 4%(A) 64K 6053.47 ON OFF
u1 SPARE OK - - - 465.753 - OFF
Port Status Unit Size Blocks Serial
---------------------------------------------------------------
p0 OK u0 465.76 GB 976773168 6QG15YS8
p1 OK u0 465.76 GB 976773168 6QG14N85
p2 OK u0 465.76 GB 976773168 6QG0T4RJ
p3 OK u1 465.76 GB 976773168 6QG0TLHT
p4 OK u0 465.76 GB 976773168 6QG16SGK
p5 OK u0 465.76 GB 976773168 6QG15EYR
p6 OK u0 465.76 GB 976773168 6QG16SAM
p7 OK u0 465.76 GB 976773168 6QG15DFL
p8 OK u0 465.76 GB 976773168 6QG12MYG
p9 OK u0 465.76 GB 976773168 6QG12NSB
p10 OK u0 465.76 GB 976773168 6QG15YP4
p11 OK u0 465.76 GB 976773168 6QG14N7G
p12 OK u0 465.76 GB 976773168 6QG10SS5
p13 OK u0 465.76 GB 976773168 6QG14N66
p14 OK u0 465.76 GB 976773168 6QG14N34
p15 OK u0 465.76 GB 976773168 6QG10PGX
//banana3000>
|
じゃあ、このままVerify処理が終わるのを待つかな、と思っていたら、突然
むむむさんからのメール&ICQが。何だろう・・・
あー、あー、今までの復旧作業は「ラッキー」な星の下でうまくいってたのですね。
こんな「危ない」状況だったとは・・・orz
とにもかくにも大急ぎでVerify処理を中止しました。
(2.8TBのデータを電子の藻屑にしたくないですから・・・)
で、ファームウェアのアップデート方法はどうやってやるのか調べました。
最初にもらった最新のファームウェアのURLでファイルを解凍したのですが、
これって・・・Windowsでの更新用じゃないか!
(中身は以下の3つで構成されていました。)
flash.exe (ファームウェアの更新プログラム本体)
prom0006.img (最新ファームウェアのイメージデータ)
upgrade.bat (ファームウェア更新の為のバッチファイル)
|
他に方法が無いか調べていたら、こんなページを見つけました。
http://www.3ware.com/KB/article.aspx?id=15003
なんか読んでみると、最新のドライバを入れる方法みたいです。
実は3wareのRAIDコントローラのマニュアルには「FreeBSDの場合ドライバをアップデート
するとファームウェアもアップデートされる」と書かれています。(P. 167)
ちなみに花子はFreeBSD 6.2R i386がインストールされています。
でもな、このページ、どこかで見たことあるなあ・・・ここに書かれているファイルも
なんか見覚えがあるし。
twa96SE.ko-32bit-freebsd_6.2.zip で検索してみよう。
・・・やっぱり、ダメだったかorz
この方法は最初に花子を構築した時に使った方法だし、ドライバもこれで作ったんだった。
(第2日目の日記に詳しく書いています、ハイ。)
googleで検索したら自分の日記が結果として出てくるなんて、うれしいのか、悲しいのか・・・
さて、他に方法が無いかなあ・・・と思って調べ続けましたが、どうも見つかりません(涙
どうしたものか、と途方に暮れながら3DM2の管理ページにあるヘルプのメニューを
調べてみたら・・・ありました!
tw_updateというツールを使って以下の方法で行えるようです。
[Updating the Firmware Under Linux and FreeBSD]
The following steps describe how to update the firmware under Linux and FreeBSD.
The PROM images that are installed when you update the firmware include any 3BM,
A-chip, P-chip, and BBU firmware updates.
To update the firmware under Linux and FreeBSD
1 Download and extract the firmware, as described under Updating the Driver and Firmware.
2 Backup any critical data prior to updating the 3ware firmware.
3 Change the directory to the location with the extracted files, which include tw_update.
4 Run the tw_update utility.
./tw_update fw=prom0006.img
The utility shows the version of the driver and firmware included in the utility,
the versions currently installed on your controller,
and recommends whether to upgrade the firmware or not.
Warning: We strongly recommend backing up your data before updating the firmware.
Updating the firmware can render the device driverand/or management tools incompatible.
It is recommended to have a copy of current firmware image for rollbacks.
Examining compatibility data from firmware image and /c0 ...
New-Firmware Current-Firmware Current-Driver Current-API
--------------------------------------------------------------------
FE9X 3.0x.xx.xxx FE9X 3.0x.xx.xxx 2.xx.xx.xxx 2.xx.xx.xxx
Both API and Driver are compatible with the new firmware.
Recommendation: proceed to update.
Given the above recommendation...
Do you want to continue ? Y|N [N]: y
5 If the firmware is newer and the recommendation is to proceed, type Y and press Enter.
Downloading the firmware from file /mnt/fw/9550sx/prom0006.img ... Done.
The new image will take effect after reboot.
6 Reboot your system to flash the firmware upgrade.
|
必要なものは以下の2つ
・tw_update (更新用スクリプト)
モジュールは以下のURLから入手します。
http://www.3ware.com/download/Escalade9690SA-Series/9.5.0.1/tw_update-freebsd-x86-9.5.0.1.tgz
で、適当な場所(/tmpとか)に解凍し (呪文は tar -zxvf tw_update-freebsd-x86-9.5.0.1.tgz)、
パーミッションは755に変更します。(chmod 755 tw_update)
・prom0006.img (最新ファームウェアのイメージデータ)
先ほど紹介したZIPファイル(9.4.2-9xxx-Upgrade.zip)を解凍すると入手できます。
このファイルは tw_update と「同じ場所」に設置します。
(そうでないと、正しく動きません。)
この2つのファイルが揃ったら、以下のコマンドを入力・実行します。
./tw_update fw=prom0006.img
すると以下のメッセージが表示されます。
banana3000# ./tw_update fw=prom0006.img
Warning: Updating the firmware can render the device driver and/or
management tools incompatible. Before you update the firmware,
it is recommended that you:
1) Back up your data.
2) Make sure you have a copy of the current firmware image so that
you can roll back, if necessary.
3) Close all applications.
Examining compatibility data from firmware image and /c0 ... Done.
New-Firmware Current-Firmware Current-Driver Current-API
--------------------------------------------------------
FE9X 3.08.00.016 FE9X 3.08.02.005 3.60.03.006 2.04.00.009
Both API and Driver are compatible with the new firmware.
Recommendation: proceed to update.
Given the above recommendation...
Do you want to continue ? Y|N [N]:
|
ここでキーボードから Y を入力しENTERキーを押すと、以下のメッセージが
表示されます。
Do you want to continue ? Y|N [N]: y
Downloading the firmware from file prom0006.img ... Done.
The new image will take effect after reboot.
banana3000#
|
このファームウェアを反映させる為にサーバを一度リブートします。
リブート後にdmesgでRAIDコントローラカード(twa0)のバージョンを確認すると
以下の内容になります。
[アップデート前]
Firmware FE9X 3.08.02.005, BIOS BE9X 3.08.00.002
[アップデート後]
Firmware FE9X 3.08.00.016, BIOS BE9X 3.08.00.004
うーん、、、BIOSの方はバージョンが上がりましたが、ファームウェアの方はむしろ
下がっているような気がします。
(まあ、必要なバージョンである 3.08.00.016 にはなりましたが。)
で、リリースノートとか他のドキュメントを見ると、3ware本家で提供されている
「正式リリース」のファームウェアのバージョンは 3.08.00.016 でした。
(これは2007年11月にリリースされています。)
一方、花子を構築した際にファームウェア生成で使用したソースは2007年6月が
最新更新日でした。
つまり、今まで花子が使用していたファームウェアはかなり特殊なものだったのです。
また、リリースノートには以下の報告がありました。
(最終的にアップデートした事が正しかったと判断された点です。)
The following issues have been resolved:
Intermittent system crashes with FreeBSD 6.x
(FreeBSD 6.x系で断続的なシステムクラッシュが発生するのを解決しました。)
ファームウェアの更新が確認されたので、3DM2の管理ページ画面からVerify処理を
もう一度実行しました。
(昨日の午後5時から開始して、終わったのが午後9時でした。)
Verify処理の結果、ポート番号 6番・11番のHDDにおいて一部のセクタ修復と
パリティデータの再作成・修復が行われました。
修復処理が終わった午後9時に /etc/fstabを修正し /homeのコメントアウトを外し
サーバを再起動して通常モードで花子を稼働させました。
(Apacheも立ち上がり、ブラウザからの表示も正常におこなえる事を確認しました。)
少なくとも花子については、とりあえず一安心です。。。
(あ、花代(banana3001)も同じ対応が必要なのですが、こちらは日を改めて対応する予定です。)
今週も色々とありましたが、なんとか乗り切りました。
で、明日から今週末までふだんお目にかかれない人たちと共に「強化合宿」に行ってきます。
それでは、また。
|
|
|
|