トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

zfs

設定・コマンドサンプル

コピー増加

  • 特定の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 destroy tank
  • ダミーファイル分の修復
zfs replace newtank /tmp/file1T ad6
  • 500G と 2T のHDD入れ替え
zfs replace newtank ad12 ad10

参考サイト

ZFS ソースツアー / BigAdmin System Administration Portal / Sun

ZFSでmirror→RAID-Zに変更する手順の作業ログ / とある技術屋の戯言

  • 以下は主要部分のみ抽出、オリジナルには重要なエラーや対応方法が存在

ディスク代わりに使う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

実証実験をしていないので確かなことはわかりませんが,前回のような問題が発生したようなケースは「zdb -AAA プール」で修正が可能なようです。

2011年9月21日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 状況調査編) / FreeBSD Daily Topics

対象となるプールがパニックを誘発する状態にあるかどうかは次のように「zdb -e プール」で調査することができます。

2011年9月22日 ZFS活用シリーズ - scrubで直らない問題の修正(zdb - 修復編)/ FreeBSD Daily Topics

「-AAA」はすべての処理を実施しようとします。通常は次のようにデータブロックとメタデータプロック,メタラベル,ブロック統計データあたりをチェックするようにするだけで十分でしょう。

# zdb -cc -b -m -e zpool

優雅な生活の設計と実装

ZFS Internals (part #11) / Marcelo Leal blog

zdb: Examining ZFS At Point-Blank Range / Cuddletech by Ben Rockwood

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