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]過去の構築ドキュメント>)) へ戻る]