ZFS mirrorのプールがデグレードしていたでござる

サーバの共有フォルダに繋がらなくなってしまった。サーバ自体は見えておりpingも通るのだが、いざ繋ごうとするとタイムアウト。その時は家のネットワークを色々弄くっていたので、それが原因かな?と気にも留めなかった。

翌日になっても繋がらなかったので、原因を調べるべくsshしたが一向に応答が帰ってこない。pingは通るのに。コンソールから直接ログインを試みるも、ユーザー名入力後に応答が帰ってこずに撃沈。これはヤバい雰囲気。仕方なく電源リセット。

幸い、問題なく起動しsshも繋がったので調査開始。

まずは /var/log/messages を見てみる。

...
Apr 19 20:24:31 Freyja kernel: mpt0: request 0xffffff800082f3a0:16151 timed out for ccb 0xfffffe0007da2800 (req->ccb 0xfffffe0007da2800)
Apr 19 20:25:16 Freyja kernel: mpt0: attempting to abort req 0xffffff800082f3a0:16151 function 0
Apr 19 20:25:16 Freyja kernel: mpt0: mpt_wait_req(1) timed out
Apr 19 20:25:16 Freyja kernel: mpt0: mpt_recover_commands: abort timed-out. Resetting controller
Apr 19 20:25:16 Freyja kernel: mpt0: mpt_cam_event: 0x80
Apr 19 20:25:16 Freyja kernel: mpt0: mpt_cam_event: 0x80
Apr 19 20:25:16 Freyja kernel: mpt0: completing timedout/aborted req 0xffffff800082f3a0:16151
Apr 19 20:31:14 Freyja kernel: mpt0: request 0xffffff800082c460:17593 timed out for ccb 0xfffffe0007da2800 (req->ccb 0xfffffe0007da2800)
Apr 19 20:31:14 Freyja kernel: mpt0: attempting to abort req 0xffffff800082c460:17593 function 0
Apr 19 20:31:18 Freyja kernel: mpt0: completing timedout/aborted req 0xffffff800082c460:17593
Apr 19 20:31:18 Freyja kernel: mpt0: abort of req 0xffffff800082c460:0 completed
Apr 19 20:32:42 Freyja kernel: mpt0: request 0xffffff8000833720:17797 timed out for ccb 0xfffffe0007da2800 (req->ccb 0xfffffe0007da2800)
Apr 19 20:32:45 Freyja kernel: mpt0: attempting to abort req 0xffffff8000833720:17797 function 0
Apr 19 20:32:45 Freyja kernel: mpt0: completing timedout/aborted req 0xffffff8000833720:17797
Apr 19 20:32:45 Freyja kernel: mpt0: abort of req 0xffffff8000833720:0 completed
...

なんかヤバげなログががが。mptってことはHDDが逝っちゃった系・・・?

次にZFSプールの状態を見てみる。

$ zpool status
  pool: zroot
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
	the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-2Q
 scan: scrub repaired 0 in 3h41m with 0 errors on Fri Nov  2 00:13:33 2012
config:

	NAME                      STATE     READ WRITE CKSUM
	zroot                     DEGRADED     0     0     0
	  mirror-0                DEGRADED     0     0     0
	    12202321002681728230  UNAVAIL      0     0     0  was /dev/da0p3
	    da0p3                 ONLINE       0     0     0

errors: No known data errors

オフフ、ミラーの片割れがUNAVAILになっとる。本来あるべきada7p3が行方不明。

camcontrol devlistで見てもada7が出てこないので本格的にお亡くなりになった?と考えつつ、最後の望みをかけてマシン開腹&ケーブルチェック。なんか微妙にSATAケーブルが緩かった気がする。いざ起動アーンドzpool status!!

  pool: zroot
 state: ONLINE
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 Sun Apr 21 11:03:14 2013
    1.01G scanned out of 557G at 9.96M/s, 15h52m to go
    1.01G resilvered, 0.18% done
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada7p3  ONLINE       0     0     3  (resilvering)
	    da0p3   ONLINE       0     0     0

ktkr!!

とりあえず、ハードリセットもしてしまったことだし、他のプールも含めてscrub。問題のプールは560GBで4時間ほど掛かった。

errors: No known data errors

  pool: zroot
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
	attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
	using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scan: scrub repaired 384K in 4h8m with 0 errors on Sun Apr 21 15:38:59 2013
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada7p3  ONLINE       0     0     6
	    da0p3   ONLINE       0     0     0

errors: No known data errors

よしよし、無事修復出来たようなのでzpool clearでエラーカウントをクリアして完了っと。

しかしSATAケーブルが緩むなんて事あるんだねぇ。ラッチ付きじゃないとあかんな。