ZFS復旧は大詰めに

FreeBSD,NAS

バレンタインデー頃に、FreeBSD 9.1を10.0にアップグレードしようとした時、上手く行きませんでした。

調べてみると、どうもファイルシステムが壊れている様な…。

「バレンタインの悲劇」とでも申しましょうか…。そして、こんな状態です。

# zpool status upool
  pool: upool
 state: ONLINE
status: One or more devices has experienced an error resulting in data
	corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
	entire pool from backup.
   see: http://illumos.org/msg/ZFS-8000-8A
  scan: resilvered 1.20T in 11h51m with 59 errors on Sun Mar 30 14:57:14 2014
config:

	NAME           STATE     READ WRITE CKSUM
	upool          ONLINE       0     0    77
	  mirror-0     ONLINE       0     0   158
	    gpt/disk1  ONLINE       0     0   158
	    gpt/disk4  ONLINE       0     0   158
	  mirror-2     ONLINE       0     0    44
	    gpt/disk2  ONLINE       0     0    44
	    gpt/disk3  ONLINE       0     0    44
	logs
	  gpt/zil      ONLINE       0     0     0
	cache
	  gpt/l2arc    ONLINE       0     0     0

errors: 60 data errors, use '-v' for a list

その後、少しずつデータコピーを繰り返し、仮システムで安定的に動作する様になりました。それで、おかしくなっていたupoolをzpool destroy upoolで破壊しました。

その後、いままでupoolを作り上げて来た行程をやり直し、upoolを再構築しました。

# zpool create upool gpt/disk1
# zpool attach upool gpt/disk1 gpt/disk4
# zpool add upool mirror gpt/disk2 gpt/disk3
# zpool add upool cache gpt/l2arc
# zpool add upool log gpt/zil

その結果、次の様になりました。

# zpool status upool
  pool: upool
 state: ONLINE
  scan: resilvered 85K in 0h0m with 0 errors on Sun Mar 30 22:21:59 2014
config:

	NAME           STATE     READ WRITE CKSUM
	upool          ONLINE       0     0     0
	  mirror-0     ONLINE       0     0     0
	    gpt/disk1  ONLINE       0     0     0
	    gpt/disk4  ONLINE       0     0     0
	  mirror-1     ONLINE       0     0     0
	    gpt/disk2  ONLINE       0     0     0
	    gpt/disk3  ONLINE       0     0     0
	logs
	  gpt/zil      ONLINE       0     0     0
	cache
	  gpt/l2arc    ONLINE       0     0     0

errors: No known data errors

非常に奇麗な状態です。ここに、仮に立ち上げているypoolの内容をコピーします。

# zfs snapshot -r ypool@20140330
# zfs send -vRp ypool@20140330 | zfs receive -uvdF upool

順調にコピーが進んでいます。今は、コピーが終わるのを待っている状況です。

コピーが終わったら、シングルユーザモードで立ち上げ、ypoolのディスクをマウントしない様に設定し、今度はupoolのディスクをマウントする様にしてマルチユーザモードに移行すれば、元通りのはずです。

Posted by お市のかた