ZFS復旧は大詰めに
バレンタインデー頃に、FreeBSD 9.1を10.0にアップグレードしようとした時、上手く行きませんでした。
- FreeBSD 9.1を10.0にアップグレード中: プラスα空間 (2014年2月14日)
調べてみると、どうもファイルシステムが壊れている様な…。
- ZFSでディスクエラー: プラスα空間 (2014年2月17日)
- ZFSのディスクエラー回復せず: プラスα空間 (2014年2月19日)
- ZFSのディスクエラーはかなり深刻な状況かも: プラスα空間 (2014年2月21日)
- ZFSでのディスクエラー、回復できません: プラスα空間 (2014年3月7日)
- ZFSのファイルをコピー中: プラスα空間 (2014年3月10日)
- ZFS復旧の道は続く: プラスα空間 (2014年3月13日)
- ZFSの復旧ついでに/exportsから/exportに移動: プラスα空間 (2014年3月21日)
「バレンタインの悲劇」とでも申しましょうか…。そして、こんな状態です。
# 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のディスクをマウントする様にしてマルチユーザモードに移行すれば、元通りのはずです。
ディスカッション
コメント一覧
まだ、コメントがありません