IT pass HikiWiki - [Memo2011][ITPASS]HDD初期不良チェック Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
2011/03/28, 31, 04/04 に HDD の初期不良チェックを安東,黒田, 井谷で行った.(ロガー: 安東)
{{toc_here}}
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]
== 準備
チェックする HDD
* 内蔵3.5HDD 0S03191(3.5/2TB/72r) 3 台
== ハードウェアセットアップ
チェックする HDD を適当なマシン (joho02) に入れた.
== HDD の認識を確認する
df コマンドで sdc のマウント位置が / であることが分かった.
出力結果は以下のとおり.
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sdc1 96120588 5644808 85593044 7% /
tmpfs 4098924 0 4098924 0% /lib/init/rw
udev 4094180 228 4093952 1% /dev
tmpfs 4098924 0 4098924 0% /dev/shm
dmesg コマンドの出力結果から sdb はパーティションが設定されていないことがわかる.
[ 1.744319] sdb: unknown partition table
また, 以下の出力結果から sdb が 2.0TB であることが分かったので, これがチェックしたい HDD である.
[ 1.726682] sd 0:0:1:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
== 読みだし/書き込みテスト
読みだし/書き込みのテストには dd を使う.
まず, HDD の全ての領域からデータを読み出して,
エラーが出ないかどうか調べる.
#例えば, HDD を表すデバイスファイル名が /dev/hoge
#だった場合, 次のコマンドを実行する.
#
# # dd if=/dev/hoge of=/dev/null
#
#
#今回は,
# dd if=/dev/sdb of=/dev/null
null は, 入力したデータを全て捨てるデバイスファイルである.
書き込みのテストには,
# # dd if=/dev/zero of=/dev/hoge
#
#とする.
#
#今回は,
# dd if=/dev/zero of=/dev/sdb
とした.
zeroは, 読み出すとゼロを返すデバイスファイルである.
次のようなシェルスクリプトを使い, 読み出しテスト, 書き込みテストを
続けて実行する.
# ----ここから----
# #!/bin/sh
#
# DD=/bin/dd
# FILE=/dev/hoge
#
# dd if=$FILE of=/dev/null
# dd if=/dev/zero of=$FILE
# ----ここまで----
#
#今回は,
----ここから----
#!/bin/bash
FILE=/dev/sdb
dd if=$FILE of=/dev/null bs=100M
dd if=/dev/zero of=$FILE bs=100M
----ここまで----
#とした.
これを, diskiochk.sh などとして保存して,
# chmod u+x diskiochk.sh
# nohup ./diskiochk.sh &
として, 出力結果を nohup.out に出力した.
== 出力結果
以下のような結果が出力された.
----ここから----
19077+1 records in
19077+1 records out
2000398934016 bytes (2.0 TB) copied, 16338.9 s, 122 MB/s
dd: writing `/dev/sdb': デバイスに空き領域がありません
19078+0 records in
19077+0 records out
2000398934016 bytes (2.0 TB) copied, 16364.6 s, 122 MB/s
----ここまで----
また, 3/31 に確認したときに, 以下のようなメッセージが出ていた.
ata1.01: exception Emask 0x10 SAct 0x0 SErr 0x400100 action 0x0
ata1.01: SError: { UnrecovData Handshk }
ata1.01: failed command: WRITE DMA EXT
ata1.01: cmd 35/00:00:30:d3:68/00:04:8e:00:00/f0 tag 0 dma 524288 out
res 51/84:00:30:d4:68/84:03:8e:00:00/1e Emask 0x30 (host bus error)
ata1.01: status: { DRDY ERR }
ata1.01: error: { ICRC ABRT }
ata1.01: exception Emask 0x10 SAct 0x0 SErr 0x400100 action 0x0
... (以降繰り返し)
スクリーンショット((<写真|URL:../photo/diskchk.PNG>))
このエラーメッセージの意味を上から見ると,
エラーの概要. SErr が 0x400100 で生じている
SError は, データのエラーが発生
直接転送を行うコマンドが失敗した
コマンド送った
レスポンスが返ってきた -> host bus エラーが発生
HDD は ReaDY 状態であるがエラーになった
シリアル転送が途中で停止した
要するに, シリアル転送を行っていたが途中で停止してしまったらしい.
対応としては, SATA ケーブルを入れ替えること, といくつかのウェブサイトに書いてあったが, どの SATA ケーブルを使ったのかわからなくなってしまったが, (おそらく) 前回使用したものとは異なる SATA ケーブルを使って再度テストを行った.
前回のようなエラーは出なかった.
#== 初期不良がないことを確認した HDD について
#
#HDD 本体に「2008 年 4 月 初期不良チェック済み」と印刷したテプラを貼り, もとにあった場所に戻した.
== トラブルシューティング
=== OS が起動しない
* 問題
* 新しい HDD を接続した際
BUG: soft lockup - CPU#1 stuck for 61s
を含むメッセージが出力されて, OS が起動できなかった.
* 解決法
* 新しい HDD を接続しない状態で OS を起動し, アップデートを行った.
* その際, カーネルのアップデートが行われた.
* 再度新しい HDD を接続し, 電源を入れると OS が起動した.
* 参考 : ((<mindia(マインディア) セルンのブック|URL:http://mindia.jp/book/scg2/keyword/BUG%3A+soft+lockup+detected+on+CPU>))
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]
{{toc_here}}
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]
== 準備
チェックする HDD
* 内蔵3.5HDD 0S03191(3.5/2TB/72r) 3 台
== ハードウェアセットアップ
チェックする HDD を適当なマシン (joho02) に入れた.
== HDD の認識を確認する
df コマンドで sdc のマウント位置が / であることが分かった.
出力結果は以下のとおり.
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sdc1 96120588 5644808 85593044 7% /
tmpfs 4098924 0 4098924 0% /lib/init/rw
udev 4094180 228 4093952 1% /dev
tmpfs 4098924 0 4098924 0% /dev/shm
dmesg コマンドの出力結果から sdb はパーティションが設定されていないことがわかる.
[ 1.744319] sdb: unknown partition table
また, 以下の出力結果から sdb が 2.0TB であることが分かったので, これがチェックしたい HDD である.
[ 1.726682] sd 0:0:1:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
== 読みだし/書き込みテスト
読みだし/書き込みのテストには dd を使う.
まず, HDD の全ての領域からデータを読み出して,
エラーが出ないかどうか調べる.
#例えば, HDD を表すデバイスファイル名が /dev/hoge
#だった場合, 次のコマンドを実行する.
#
# # dd if=/dev/hoge of=/dev/null
#
#
#今回は,
# dd if=/dev/sdb of=/dev/null
null は, 入力したデータを全て捨てるデバイスファイルである.
書き込みのテストには,
# # dd if=/dev/zero of=/dev/hoge
#
#とする.
#
#今回は,
# dd if=/dev/zero of=/dev/sdb
とした.
zeroは, 読み出すとゼロを返すデバイスファイルである.
次のようなシェルスクリプトを使い, 読み出しテスト, 書き込みテストを
続けて実行する.
# ----ここから----
# #!/bin/sh
#
# DD=/bin/dd
# FILE=/dev/hoge
#
# dd if=$FILE of=/dev/null
# dd if=/dev/zero of=$FILE
# ----ここまで----
#
#今回は,
----ここから----
#!/bin/bash
FILE=/dev/sdb
dd if=$FILE of=/dev/null bs=100M
dd if=/dev/zero of=$FILE bs=100M
----ここまで----
#とした.
これを, diskiochk.sh などとして保存して,
# chmod u+x diskiochk.sh
# nohup ./diskiochk.sh &
として, 出力結果を nohup.out に出力した.
== 出力結果
以下のような結果が出力された.
----ここから----
19077+1 records in
19077+1 records out
2000398934016 bytes (2.0 TB) copied, 16338.9 s, 122 MB/s
dd: writing `/dev/sdb': デバイスに空き領域がありません
19078+0 records in
19077+0 records out
2000398934016 bytes (2.0 TB) copied, 16364.6 s, 122 MB/s
----ここまで----
また, 3/31 に確認したときに, 以下のようなメッセージが出ていた.
ata1.01: exception Emask 0x10 SAct 0x0 SErr 0x400100 action 0x0
ata1.01: SError: { UnrecovData Handshk }
ata1.01: failed command: WRITE DMA EXT
ata1.01: cmd 35/00:00:30:d3:68/00:04:8e:00:00/f0 tag 0 dma 524288 out
res 51/84:00:30:d4:68/84:03:8e:00:00/1e Emask 0x30 (host bus error)
ata1.01: status: { DRDY ERR }
ata1.01: error: { ICRC ABRT }
ata1.01: exception Emask 0x10 SAct 0x0 SErr 0x400100 action 0x0
... (以降繰り返し)
スクリーンショット((<写真|URL:../photo/diskchk.PNG>))
このエラーメッセージの意味を上から見ると,
エラーの概要. SErr が 0x400100 で生じている
SError は, データのエラーが発生
直接転送を行うコマンドが失敗した
コマンド送った
レスポンスが返ってきた -> host bus エラーが発生
HDD は ReaDY 状態であるがエラーになった
シリアル転送が途中で停止した
要するに, シリアル転送を行っていたが途中で停止してしまったらしい.
対応としては, SATA ケーブルを入れ替えること, といくつかのウェブサイトに書いてあったが, どの SATA ケーブルを使ったのかわからなくなってしまったが, (おそらく) 前回使用したものとは異なる SATA ケーブルを使って再度テストを行った.
前回のようなエラーは出なかった.
#== 初期不良がないことを確認した HDD について
#
#HDD 本体に「2008 年 4 月 初期不良チェック済み」と印刷したテプラを貼り, もとにあった場所に戻した.
== トラブルシューティング
=== OS が起動しない
* 問題
* 新しい HDD を接続した際
BUG: soft lockup - CPU#1 stuck for 61s
を含むメッセージが出力されて, OS が起動できなかった.
* 解決法
* 新しい HDD を接続しない状態で OS を起動し, アップデートを行った.
* その際, カーネルのアップデートが行われた.
* 再度新しい HDD を接続し, 電源を入れると OS が起動した.
* 参考 : ((<mindia(マインディア) セルンのブック|URL:http://mindia.jp/book/scg2/keyword/BUG%3A+soft+lockup+detected+on+CPU>))
[((<[ITPASS]過去の構築ドキュメント>)) へ戻る]