!!!設定・コマンドサンプル !コピー増加 *特定のzfsの領域について、データのコピー数を増加させることでデータの安全性を増加させる。 *使用領域の消費が増える。 *スピードが減少する。 zfs create -o copies=3 zfsname/dirname !!FreeBSD ZFS RAIDZ 拡張 !概要 *FreeBSD-8-stable *作業前 2T 5本 RAIDZ1 総容量8T *作業後予定 2T 10本 RAIDZ2 総容量16T *最低HDD1本の冗長度を維持する *移行元 zpool 確認: tank raidz1 ad6 ad10 ad16 ad22 ad26 (すべて2Tの RAIDZ1) *移行先ディスクの追加: ad4(1T) ad8(1T) ad12(500G) ad20(1T) ad24(1T) +新規追加 HDD4本 (DEGRADED RAIDZ2) !作業記録 *RAIDZ2 ダミーファイルの準備(sparse ファイルの作成、見かけは1T 実質64k) # dd if=/dev/zero of=/tmp/file1T count=0 bs=65536 seek=16777216 # ls -l /tmp/file1T -rw-r--r-- 1 root wheel 1099511627776 Oct 11 16:59 /tmp/file1T # du /tmp/file1T 64 /tmp/file1T !作業予定 *1HDD破損の RAIDZ2 作成 zpool create newtank raidz2 ad4 ad8 ad12 ad20 ad24 .. .. .. .. /tmp/file1T *ダミーファイルの raidz2 からの除去 zpool offline newtank /tmp/file1T *zfs send のための snapshot 作成 zpool snapshot -r tank 20112233 *zfs send+receive で内容コピー zfs send -R tank@20112233 | zfs recv -F -d newtank *zfs 破棄 zfs destroy tank *ダミーファイル分の修復 zfs replace newtank /tmp/file1T ad6 *500G と 2T のHDD入れ替え zfs replace newtank ad12 ad10 * !!!参考サイト !ZFS ソースツアー / BigAdmin System Administration Portal / Sun *http://www.sun.com/bigadmin/hubs/multilingual/japanese/content/zfs-source.jsp !ZFSでmirror→RAID-Zに変更する手順の作業ログ / とある技術屋の戯言 *http://www.sonorilo.net/2010/07/07/2735 *opensolaris *以下は主要部分のみ抽出、オリジナルには重要なエラーや対応方法が存在 ""ディスク代わりに使うsparse fileを作って # mkfile -n 2g /tank/file ""RAID-Zの"newtank"を作成。サイズが違うと怒られるので-fを使う。 # zpool create -f newtank raidz c8t3d0 c8t4d0 /tank/file ""すぐにディスク代わりのファイルはオフラインにする # zpool offline newtank /tank/file ""zfs sendのためのsnapshot作成 # zfs snapshot -r tank@a ""zfs send/recvで転送。 # zfs send -R tank@a | zfs recv -F -d newtank ""tankを削除 # zpool destroy tank ""ミラーの片割れだったc8t2d0をnewtankに組み込み。データがいっぱいあったらリビルドに時間がかかるでしょう # zpool replace newtank /tank/file c8t2d0 ""newtank→tankに名前を変更。 # zpool export newtank # zpool import newtank tank !2011年9月20日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb版) / FreeBSD Daily Topics *後藤大地さん *http://gihyo.jp/admin/clip/01/fdt/201109/20 ""実証実験をしていないので確かなことはわかりませんが,前回のような問題が発生したようなケースは「zdb -AAA プール」で修正が可能なようです。 !2011年9月21日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 状況調査編) / FreeBSD Daily Topics *http://gihyo.jp/admin/clip/01/fdt/201109/21 ""対象となるプールがパニックを誘発する状態にあるかどうかは次のように「zdb -e プール」で調査することができます。 !2011年9月22日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 修復編)/ FreeBSD Daily Topics *http://gihyo.jp/admin/clip/01/fdt/201109/22 ""「-AAA」はすべての処理を実施しようとします。通常は次のようにデータブロックとメタデータプロック,メタラベル,ブロック統計データあたりをチェックするようにするだけで十分でしょう。 # zdb -cc -b -m -e zpool !優雅な生活の設計と実装 *http://www.allbsd.org/~hrs/diary/201109.html#d2301 *zfs についての詳細 !ZFS Internals (part #11) / Marcelo Leal blog *http://www.eall.com.br/blog/?tag=zdb !zdb: Examining ZFS At Point-Blank Range / Cuddletech by Ben Rockwood *http://cuddletech.com/blog/pivot/entry.php?id=980 *zdb を利用したデータの抽出法 *zdb -dddd でオブジェクトIDを把握 zdb -dddd [pool] *zdb -ddddd で DVA とサイズを把握 zdb -ddddd [pool] [objID] *zdb -R でデータを確認 zdb -R [DVA] *zdb -R :r でデータを抽出 zdb -R [DVA]:r 2>[output] !Troubleshooting ZFS Issues and Recovering ZFS Data / Oracle Solaris 10 ZFS Administration *http://solaris-training.com/classp/2290_HTML/mod07.htm *zfs に関するリンク集