参考文献: Oracle Solaris ZFS 管理ガイド http://download.oracle.com/docs/cd/E19253-01/819-6260/ Solaris ZFS 管理ガイド 第 11 章 ZFS のトラブルシューティングとデータの回復 http://docs.sun.com/app/docs/doc/819-6260/gavwg 第 11 章 Oracle Solaris ZFS のトラブルシューティングとプールの回復 http://download.oracle.com/docs/cd/E19253-01/819-6260/gavwg/index.html zpool(1M) 日本語マニュアル http://download.oracle.com/docs/cd/E19253-01/819-1211/zpool-1m/index.html zfs(1M) 日本語マニュアル http://download.oracle.com/docs/cd/E19253-01/819-1211/zfs-1m/index.html ZFSを使ってみる http://www2.shakemid.com/fswiki/wiki.cgi?page=ZFS%A4%F2%BB%C8%A4%C3%A4%C6%A4%DF%A4%EB ASCII .technologies 2009年9月号『ブートディスクの引っ越し大作戦 ZFS自由自在』 ZFS Tuning Guide http://wiki.freebsd.org/ZFSTuningGuide FreeBSD Daily Topics:2010年9月28日 ZFS v14からv15へアップグレードする方法 http://gihyo.jp/admin/clip/01/fdt/201009/28 ftp-adminの憂鬱: ZFSはRAIDと相性が悪い http://ftp-admin.blogspot.com/2009/10/zfsraid.html ftp-adminの憂鬱: ZFSの空き容量には気を付けよう http://ftp-admin.blogspot.com/2013/12/zfs.html ZFS Best Practices Guide - Siwiki http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide ZFS のトラブル続き http://www.allbsd.org/~hrs/diary/201109.html#d2301 ZFS 環境構築について FreeBSD では /etc/rc.conf で zfs_enable="YES" しないと、zfs はマウントされない。 ZFS プールの作成 # zpool create thumb da0 (マウントポイントを /thumb 以外にしたい場合には、 -m マウントポイント と指定する) # zpool destroy thumb (プール thumb を削除する) # zfs create test/filesystem した時に、/test/filesystem 以下のファイルが存在した場合には /test/filesystem がマウントされてしまい、見えなくなってしまう。 # zfs umount /test/filesystem すれば見えるようになる。 # zpool create thumb da0 の次に # zfs create thumb/(ファイルシステム名) を実行すると、thumb/(ファイルシステム名) をマウントできるようになる。 マウントポイントを指定した zfs create の方法 # zfs create -o mountpoint=/export/home -o sharenfs=on thumb/home # zfs create -o mountpoint=/backup/home yamajun_bkup/home ストライピング(RAID-0)されたプールの作成方法 # zpool create tank da0 da1 ※後からディスクを追加してストライピングさせるには、zpool add コマンドを使う。 # zpool create tank da0 # zpool add tank da1 ミラーされたデバイスを追加する場合(RAID1 -> RAID1+0) FIXME 要検証! # zpool add tank mirror da2 da3 1本のディスクで構成されたプールに対して mirror を追加するとエラーになる。 mirror で構成されたプールに mirror を追加しなければいけない。 # zpool add test mirror da0 da1 invalid vdev specification use '-f' to override the following errors: mismatched replication level: pool uses disk and new vdev is mirror FIXME -f オプションを付けた場合にはどうなる? 一度ストライピングされたら削除はできない # zpool remove test da0 cannot remove da0: only inactive hot spares or cache devices can be removed ミラーリング(RAID-1)されたプールの作成方法 # zpool create tank mirror /var/tmp/zfstest0 /var/tmp/zfstest1 または、 # zpool create tank /var/tmp/zfstest0 # zpool attach tank /var/tmp/zfstest0 /var/tmp/zfstest1 1バイト小さくても too small なので、ミラーできない。 # dd bs=256M count=1 if=/dev/zero of=/tmp/zfstest0 Password: 1+0 records in 1+0 records out 268435456 bytes transferred in 10.704422 secs (25077062 bytes/sec) # zpool create test /tmp/zfstest0 # dd bs=268435455 count=1 if=/dev/zero of=/tmp/zfstest1 1+0 records in 1+0 records out 268435455 bytes transferred in 0.561434 secs (478124660 bytes/sec) # zpool attach test /tmp/zfstest0 /tmp/zfstest1 cannot attach /tmp/zfstest1 to /tmp/zfstest0: device is too small ただ、Western Digital WD30EZRX http://www.wdc.com/global/products/specs/?driveID=927&language=6 と Seagate ST3000DM001 http://www.seagate.com/jp/ja/internal-hard-drives/desktop-hard-drives/barracuda/ (こんな generic な URL で今後も大丈夫なのか?) では、セクター数まで一致しているので、相互に attach/detach 可能だった。 3TByte ディスクは業界で統一が取れているのか? ada0 at siisch1 bus 0 scbus1 target 0 lun 0 ada0: ATA-8 SATA 3.x device ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes) ada0: Command Queueing enabled ada0: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada0: Previously was known as ad6 ada1 at siisch1 bus 0 scbus1 target 1 lun 0 ada1: ATA-8 SATA 3.x device ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes) ada1: Command Queueing enabled ada1: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada1: Previously was known as ad7 ただ、転送速度の違いは resilver 中の iostat に良く現れている。 SATA 1.x (Western Digital WD30EZRX) ada0 - - 0 216 148 24.7M SATA 2.x (Seagate ST3000DM001) ada1 - - 0 409 22 49.0M RAID1+0 なプールの作成方法 From: http://docs.sun.com/app/docs/doc/819-6260/gaypw ZFS ストレージプールを作成および破棄する http://download.oracle.com/docs/cd/E24845_01/html/819-6260/gaypw.html # zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0 ※注意! 対象となるディスクに gmirror によるラベル/ミラーリングを設定している場合には、 プールの作成に失敗する。 # zpool create testpool ada3 cannot create 'testpool': no such pool or dataset この場合には、gmirror の設定を削除してからプールを作成すること。 # gmirror remove testmirror ada3 # zpool create testpool ada3 zfs mount しなくても、プール作成直後には自動的にマウントされていることを確認。 # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT thumb 492M 73.5K 492M 0% ONLINE - # df Filesystem 1K-blocks Used Avail Capacity Mounted on (snip) thumb 470912 0 470912 0% /thumb # zfs list NAME USED AVAIL REFER MOUNTPOINT thumb 38.1M 422M 38.0M /thumb 後から任意のマウントポイントにマウントさせる為には、 zfs set コマンドを使う。 (ただし、"legacy" / "none" を設定すると /etc/rc.conf で zfs_enable="YES" していても、自動マウントされないため、「伝統的な」 /etc/fstab による マウント設定を行う必要がある。see also: zfs(1M)") # zfs set mountpoint=/mnt/thumb thumb もし、 thumb プールにファイルシステム thumb/home が追加されていた場合には、 thumb/home のマウントポイントも /mnt/thumb/home に変更される。 # zfs list NAME USED AVAIL REFER MOUNTPOINT thumb 38.1M 422M 38.0M /mnt/thumb # zfs thumb # df (snip) thumb 470912 39040 431872 8% /mnt/thumb # # zpool status pool: thumb state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM thumb ONLINE 0 0 0 da0 ONLINE 0 0 0 errors: No known data errors (da0を抜く) root@pcbsd-7595# zpool status pool: thumb state: UNAVAIL scrub: none requested config: NAME STATE READ WRITE CKSUM thumb UNAVAIL 0 0 0 insufficient replicas da0 REMOVED 0 0 0 errors: No known data errors # zpool clear thumb (プールのエラーを消去する) # zpool status pool: thumb 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://www.sun.com/msg/ZFS-8000-8A scrub: none requested config: NAME STATE READ WRITE CKSUM thumb ONLINE 0 0 0 da0 ONLINE 0 0 0 errors: 2 data errors, use '-v' for a list (プール容量拡張のためのミラーリング手順: da0 のミラーリング対象に新デバイス da1 を追加) # zpool attach -f thumb da0 da1 追記(2012-07-08): # zpool online -e thumb da1 しないと容量は拡張されない? (da1 は resilver 中でも構わない) ZFSのmirror/raidzの容量を増やす方法 http://d.hatena.ne.jp/fujisan3776/20101117/1289974096 ====ここから ちなみに、プールのプロパティにautoexpandがあります。これがonの場合、 zpool online -eを行わなくても、自動的に拡張します。 ====ここまで autoexpand=off の場合の容量拡張サンプル # zpool get autoexpand yamajun_home NAME PROPERTY VALUE SOURCE yamajun_home autoexpand off default # zpool iostat -v yamajun_home capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- yamajun_home 5.70T 675G 134 49 15.6M 475K mirror 3.56T 82.0G 6 8 88.5K 37.1K ada3 - - 2 9 46.6K 37.9K ada1 - - 1 9 46.1K 37.9K mirror 2.14T 593G 127 40 15.5M 438K ada8 - - 0 177 967 19.9M ada6 - - 27 100 3.35M 10.4M ---------- ----- ----- ----- ----- ----- ----- # zpool online -e yamajun_home ada8 # zpool iostat -v yamajun_home capacity operations bandwidth pool alloc free read write read write ---------- ----- ----- ----- ----- ----- ----- yamajun_home 5.70T 1.57T 134 49 15.6M 475K mirror 3.56T 82.0G 6 8 88.4K 37.1K ada3 - - 2 9 46.6K 37.9K ada1 - - 1 9 46.1K 37.9K mirror 2.14T 1.49T 127 40 15.5M 438K ada8 - - 0 177 970 19.8M ada6 - - 27 100 3.35M 10.4M ---------- ----- ----- ----- ----- ----- ----- # (ミラー中の状態: status / action / scrub に注目) # zpool status thumb pool: thumb 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. scrub: resilver in progress for 0h1m, 11.46% done, 0h10m to go config: NAME STATE READ WRITE CKSUM thumb ONLINE 0 0 0 mirror ONLINE 0 0 0 da0 ONLINE 0 0 0 191K resilvered da1 ONLINE 0 0 0 40.4M resilvered errors: No known data errors (ミラー完了時の状態) # zpool status thumb pool: thumb state: ONLINE scrub: resilver completed after 0h5m with 0 errors on Tue May 4 16:44:58 2010 config: NAME STATE READ WRITE CKSUM thumb ONLINE 0 0 0 mirror ONLINE 0 0 0 da0 ONLINE 0 0 0 1.34M resilvered da1 ONLINE 0 0 0 371M resilvered errors: No known data errors # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT thumb 492M 372M 120M 75% ONLINE - (旧デバイスの取り外し) # zpool detach thumb da0 (512M -> 1G へ容量が拡張されたため、SIZE/AVAIL/CAP が変化している) # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT thumb 976M 371M 605M 38% ONLINE - (1Gのプールに512Mのディスクをミラー対象に追加しようとした場合は拒否される) # zpool attach -f thumb da1 da0 cannot attach da0 to da1: device is too small http://www.atmarkit.co.jp/flinux/rensai/opensolaris04/opensolaris04d.html  異なるシステムに付け替える手順は簡単です。zpool exportコマンドで切り離した後に ストレージプールを取り外し、別のマシンに持っていき、接続した後にzfs importコマンドで インポートするだけです。 破損したデバイスを交換または修復する http://docs.sun.com/app/docs/doc/819-6260/gbbvf http://download.oracle.com/docs/cd/E19253-01/819-6260/gbbvf/index.html # zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT hgst2g 1.82T 265G 1.56T 14% ONLINE - thumb 976M 944M 31.7M 96% ONLINE - # zpool export thumb root@pcbsd-7595# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT hgst2g 1.82T 265G 1.56T 14% ONLINE - # (新しいマシンにて) # zpool import (プール名) 他のマシンで使用中(export していない)の zpool を import しようとすると、 警告が表示される。 強制インポートした場合、マシン同士のエンディアンが異なる場合に問題が発生する(多分)。 # zpool import thumb cannot import 'thumb': pool may be in use from other system, it was last accessed by pcbsd-7595 (hostid: 0x32b7794c) on Mon May 10 03:58:57 2010 use '-f' to import anyway # インポートできないケースB: FreeBSD 8-STABLE で作成したプール(ZFS ver.14)を PC-BSD 8.0 (ZFS ver.13)にインポートしようとした場合、バージョン違いによるエラーが発生する。 # zpool import hgst2g cannot import 'hgst2g': pool is formatted using a newer ZFS version zpool の改名作業 # zpool create home ada5 # zpool export home 改名には、newpool 名を指定する。 # zpool import home yamajun_home # zpool export yamajun_home 改名後は新しい名前で import できる。 # zpool import yamajun_home # zpool export yamajun_home 改名後は古い名前では import できない。 # zpool import home cannot import 'home': no such pool available # zfs のスナップショット作成について # zfs snapshot test@initial # ls /test/.zfs/snapshot/ initial # touch /test/sample.txt # ls /test sample.txt (現在の zfs 上でのファイル作成はスナップショット上には反映されない) # ls /test/.zfs/snapshot/initial (何もない) # (変更後のスナップショット作成) # zfs snapshot test@second # ls /test/.zfs/snapshot/ initial second # ls /test/.zfs/snapshot/second/ sample.txt # vi sample.txt (テキストの編集を行う) # diff -u /test/.zfs/snapshot/second/sample.txt sample.txt (差分が表示される) # zfs create test/branch # zfs list NAME USED AVAIL REFER MOUNTPOINT test 177K 293G 29.5K /test test/branch 18K 293G 18K /test/branch # ls /test branch sample.txt # zfs snapshot test@afterbranch # ls /test/.zfs/snapshot/afterbranch/ branch sample.txt (newdata.txt 作成後に test 側でスナップショットを作成) # touch /test/branch/newdata.txt # zfs snapshot test@afterbranchcopy # ls /test/.zfs/snapshot/afterbranchcopy/branch/ (何も表示されない) (Recursive オプションをつけてスナップショットを作成する) # zfs snapshot -r test@afterbranchcopyrecursive # ls /test/.zfs/snapshot/afterbranchcopyrecursive/branch/ (ここでは何も表示されない。 test/branch 以下にスナップショットが作成される) # ls /test/branch/.zfs/snapshot/afterbranchcopyrecursive/ newdata.txt スナップショット時点へのロールバック zfs rollback (スナップショット名) # zfs rollback -r yamajun_bkup/home@2011-10-05 スナップショットを削除するには、zfs destroy コマンドを使用する # zfs destroy yamajun_bkup/home@2011-10-05 # zfs destroy -r yamajun_bkup/home@2011-10-05 (-r オプションが付けば、yamajun_bkup/home/public@2011-10-05 など、 ツリー下のスナップショットも削除する) send/recv(receive)によるバックアップ http://blogs.oracle.com/yappri/entry/zfs_replica http://blogs.oracle.com/yappri/entry/zfs_send_recv_mbuffer # /usr/bin/time zfs snapshot -r yamajun_home@2011-08-06 0.19 real 0.00 user 0.00 sys # ls /home/.zfs/snapshot 2011-08-06 # zfs send yamajun_home@2011-08-06 | zfs recv yamajun_bkup/home@2011-08-06 # zfs send yamajun_home/huge@2011-08-06 | zfs recv yamajun_bkup/home/huge@2011-08-06 # zfs send yamajun_home/public@2011-08-06 | zfs recv yamajun_bkup/home/public@2011-08-06 (このとき、yamajun_bkup 側にも 2011-08-06 スナップショットが作成される) 2度目以降のバックアップ手順 (recv -F が必要か?) # zfs send -i yamajun_home@2011-08-06 yamajun_home@2011-10-05 | zfs recv yamajun_bkup/home # zfs send -i yamajun_home/huge@2011-08-06 yamajun_home/huge@2011-10-05 | zfs recv yamajun_bkup/home/huge # zfs send -i yamajun_home/public@2011-08-06 yamajun_home/public@2011-10-05 | zfs recv yamajun_bkup/home/public もし、バックアップ先が修正されていて recv に失敗する場合には rollback しておく。 (これをやっておくのが zfs recv -F オプション) # zfs send -i yamajun_home@2011-08-06 yamajun_home@2011-10-07 | zfs recv yamajun_bkup/home cannot receive incremental stream: destination yamajun_bkup/home has been modified since most recent snapshot warning: cannot send 'yamajun_home@2011-10-07': パイプが破壊されてました # zfs rollback yamajun_bkup/home@2011-08-06 # zfs send -i yamajun_home@2011-08-06 yamajun_home@2011-10-07 | zfs recv yamajun_bkup/home 2ヶ月分のデータの差分を送るのに、大体7分程度しかかからない。 2TByte ディスク2つを使って RAID0 または RAID1 なプールを構築し、rsync で 483GByte のデータをコピーした場合には、コピーにかかる時間は以下のとおり (PC-BSD 8.0 i386 のデフォルト設定の場合) RAID0: 1日 RAID1: 49時間超 UFSのディスク1本: 9243秒 = 2時間32分13秒 ZFSのディスク1本: 46558秒 = 12時間43分58秒 FreeBSD-current/i386 (2010年6月頃)にて、rsync で 22GByte のデータをコピーした場合 UFSのディスク1本: 1487秒 = 24分38秒 ZFSのディスク1本: 3859秒 = 1時間 4分19秒 FreeBSD-current/i386 (2010年6月頃)にて、rsync で 483GByte のデータをコピーした場合には、コピーにかかる時間は以下のとおり ZFS to UFS copy: 18299秒 = 5時間 4分59秒 UFS to ZFS copy: 66291秒 =18時間24分51秒 PC-BSD/amd64 8.1 にて、 40GByte のデータを rsync でコピーした場合 ZFSのディスク1本: 22727秒 = 6時間18分47秒 スナップショット作成によるディスク容量増加の記録 (スナップショット作成前) # zfs list -r /home NAME USED AVAIL REFER MOUNTPOINT yamajun_home 1.28T 525G 157G /home yamajun_home/huge 192G 525G 192G /home/huge yamajun_home/public 937G 525G 937G /home/public (スナップショット作成) # ls /home/public/.zfs/snapshot 2011-08-09 # zfs snapshot yamajun_home/public@2011-10-05 # ls /home/public/.zfs/snapshot 2011-08-09 2011-10-05 (スナップショット作成後) # zfs list -r /home NAME USED AVAIL REFER MOUNTPOINT yamajun_home 1.28T 525G 157G /home yamajun_home/huge 192G 525G 192G /home/huge yamajun_home/public 937G 525G 937G /home/public public はファイルを追記するだけだから増えない? ファイルを削減しまくったケースはどうなんだろうか? スナップショット削除によるディスク容量の削減 (削除前) # zfs list yamajun_home NAME USED AVAIL REFER MOUNTPOINT yamajun_home 1.28T 526G 155G /home # zfs list -t snapshot -r yamajun_home NAME USED AVAIL REFER MOUNTPOINT yamajun_home@2011-08-06 22.0G - 154G - yamajun_home@2011-10-07 5.00M - 155G - yamajun_home/huge@2011-08-09 6.86M - 172G - yamajun_home/huge@2011-10-07 0 - 192G - yamajun_home/public@2011-08-09 687M - 897G - yamajun_home/public@2011-10-07 177K - 937G - (削除作業) # zfs destroy yamajun_home@2011-08-06 # zfs destroy yamajun_home/huge@2011-08-09 # zfs destroy yamajun_home/public@2011-08-09 (削除後) # zfs list -t snapshot -r yamajun_home NAME USED AVAIL REFER MOUNTPOINT yamajun_home@2011-10-07 5.03M - 155G - yamajun_home/huge@2011-10-07 0 - 192G - yamajun_home/public@2011-10-07 186K - 937G - # zfs list yamajun_home NAME USED AVAIL REFER MOUNTPOINT yamajun_home 1.25T 548G 155G /home # 重複排除やっているのかどうか確認 FreeBSD 9、ZFSv28を取り込み - 重複排除機能(Deduplication)など導入 http://journal.mycom.co.jp/news/2011/02/28/064/index.html % zpool get version yamajun_home NAME PROPERTY VALUE SOURCE yamajun_home version 15 default % zpool upgrade -v This system is currently running ZFS pool version 15. (以下略) そもそもサポートされてなかった... 追記(2013-12-14): ZFSがメモリ不足でインポートできなくなった場合の対処法: hasegaw blog http://d.ballade.jp/blog/2013/12/zfs_dram_overco.html ====ここから ZFSの中でも一度オンにしてしまうと生涯呪われてしまい成仏できなくなる機能、それが重複排除(Deduplication)です。 ====ここまで ZFS 再び https://www.allbsd.org/~hrs/diary/201307.html#d2801 ====ここから 鉄則をいくつか。現在は頑張ってチューニングしなくともかなり安定して動きます。 • 64 ビット版の OS (amd64 など) を使い、メモリは 8GB 以上載せましょう。 • dedup は使わないこと。 ====ここまで ミラーリングしたディスクセットの内1本ダメになったケース ====ここから % zpool status -v yamajun_home pool: yamajun_home state: DEGRADED 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://www.sun.com/msg/ZFS-8000-8A scan: resilvered 1.78T in 13h47m with 0 errors on Mon Jul 9 05:19:33 2012 config: NAME STATE READ WRITE CKSUM yamajun_home DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 ada1 ONLINE 0 0 0 16808118996329461981 REMOVED 0 0 0 was /dev/ada2 errors: List of errors unavailable (insufficient privileges) ====ここまで 回復手順: ada2 がエラー、ada1 のミラーとして ada4 を追加する。 # zpool attach yamajun_home ada1 ada4 追加完了後に ada2 を取り外す。 # zpool detach yamajun_home ada2 上記操作を一度で行う # zpool replace yamajun_home ada2 ada4 # zpool replace yamajun_home 5487604189658344246 ada5 (5487604189658344246 は元のディスク) (zpool replace の第3引数を省略して同一パスのディスクを置き換えるには、 zpool offline を行い、ディスクをホットスワップ可能にしておく必要がある) 過去の操作履歴から求めているのか、 export したプールの内容を覚えていて 操作に失敗することがある。 # zpool replace yamajun_home ada2 ada5 invalid vdev specification use '-f' to override the following errors: /dev/ada5 is part of exported pool 'yamajun_bkup' ※ zpool を構成しているディスクの物理的な配置によって、運用中に ディスク名が変わってしまうケースがある。 「裸族の集合住宅」を利用しているケースで、下記の状態で運用していた ディスクアレイがある場合... ada3 / ada4 / ada5 / ada6 (プール yamajun_bkup を ada3, ada5 で構築している) ↓ ada4 を取り外すと、ディスク名が変更される ada3 / 空 / ada4 / 空 ↓ この時に、第2段ドライブにディスクを挿入すると、ada4 が ada5 に変更される。 ada3 / ada4 / ada5 / 空 もし、プール yamajun_bkup が import されていると、DEGRADED される。 ada4 が ada5 に変更された後の yamajun_bkup のステータス ====ここから NAME STATE READ WRITE CKSUM yamajun_bkup DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 ada3 ONLINE 0 0 0 8640906869707840184 REMOVED 0 0 0 was /dev/ada4 ====ここまで こういうケースの場合にはマシンの再起動で取り外されたディスクが resilver されることがあった。(export / import でも可能?) 2013-12-27: ハードディスクがやられていたので、ディスクを交換する作業のメモ ====ここから Time: 23:12:57 yamajun_home: The pool is in a degraded state. See additional device error(s). mirror-1: The pool is in a degraded state. See additional device error(s). 12435442802767836929: The device is unavailable and should be re-added to the pool. pool: yamajun_home 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://illumos.org/msg/ZFS-8000-2Q scan: resilvered 25.4M in 0h0m with 0 errors on Thu Dec 12 23:12:57 2013 config: NAME STATE READ WRITE CKSUM yamajun_home DEGRADED 0 0 0 mirror-0 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada0 ONLINE 0 0 0 mirror-1 DEGRADED 0 0 0 ada3 ONLINE 0 0 0 12435442802767836929 UNAVAIL 0 0 0 was /dev/ada0 errors: No known data errors こっちと ada0 at ahcich1 bus 0 scbus1 target 0 lun 0 ada0: ATA-8 SATA 3.x device ada0: 600.000MB/s transfers (SATA 3.x, UDMA6, PIO 8192bytes) ada0: Command Queueing enabled ada0: 3815447MB (7814037168 512 byte sectors: 16H 63S/T 16383C) ada0: Previously was known as ad6 こっちのどちらがダメになったディスク? ada1 at ahcich8 bus 0 scbus8 target 0 lun 0 ada1: ATA-9 SATA 3.x device ada1: 600.000MB/s transfers (SATA 3.x, UDMA5, PIO 8192bytes) ada1: Command Queueing enabled ada1: 122105MB (250069680 512 byte sectors: 16H 63S/T 16383C) ada1: quirks=0x1<4K> ada1: Previously was known as ad20 ダメになったディスクと対になったディスク ada3 は ada3 at ata0 bus 0 scbus11 target 0 lun 0 ada3: ATA-8 SATA 3.x device ada3: 33.300MB/s transfers (UDMA2, PIO 8192bytes) ada3: 2861588MB (5860533168 512 byte sectors: 16H 63S/T 16383C) ada3: Previously was known as ad0 え? Seagate のディスク? ======================================== 交換すべきハードディスクを特定するためにシリアル番号を確認する方法: FreeBSD: Get HDD serial number in FreeBSD https://mebsd.com/configure-freebsd-servers/get-hdd-serial-number-in-freebsd.html % camcontrol identify ada3 pass4: ATA-8 SATA 3.x device pass4: 33.300MB/s transfers (UDMA2, PIO 8192bytes) protocol ATA/ATAPI-8 SATA 3.x device model ST33000651AS firmware revision CC44 serial number 9XK0DL99 NetBSD: # atactl wd0 identify smartctl(8) # smartctl -a /dev/ada3 Device Model: ST33000651AS Serial Number: 9XK0DL99 ======================================== 交換前に行うバックアップの手順 zfs snapshot -r yamajun_home@2013-12-27 /usr/bin/time zfs send -i yamajun_home@2013-02-23 yamajun_home@2013-12-27 | zfs recv -F yamajun_bkup/home 297.10 real 0.00 user 6.45 sys 4m57s /usr/bin/time zfs send -i yamajun_home/huge@2013-02-23 yamajun_home/huge@2013-12-27 | zfs recv -F yamajun_bkup/home/huge 19196.73 real 0.00 user 543.44 sys 5h19m56s /usr/bin/time zfs send -i yamajun_home/public@2013-02-23 yamajun_home/public@2013-12-27 | zfs recv -F yamajun_bkup/home/public 14458.49 real 0.01 user 341.93 sys 4h0m58s ====ここまで ======================================== 交換用コマンド(後から推測したもの) # zpool replace yamajun_home 12435442802767836929 ada1