私の4つのディスクRAIDZ1を考えると、1つのディスクは物理的にノイズが多く、まだエラーは発生していませんが、正常に聞こえません。だから私は先制的にそれを置き換えることを選択しました。
私はやった:
zpool offline tank0 ad6
ディスクをシャットダウン、取り外し、交換します
zpool replace tank0 ad6 ad6
永遠にぶら下がっています。
zpool status
も、zpool history
と同様に、永久にハングします。
ディスクを取り外した状態でマシンを再起動すると、期待どおりに劣化モードですべてが正常に動作します。
私は今何をしますか?私のデータは現在、単一のディスク障害に対して脆弱であるため、心配しています。
OSはFreeBSD7.3-RELEASE-p1-a.k.a。FreeNAS 7.0.2.5226
FreeBSD 7.3-RELEASE-p7(FreeNAS 0.7.2.8191、少し後のバージョン)-は完全に機能しますが、VMで同じ操作を試しました。 FreeNASの最も古いバージョン(7.0.2.5799)で試してみると、後で更新されます。
また、zpool replace
はファイルシステムを使用する必要がありませんか? NAS上の別のデーモンがファイルシステムを使用している可能性があります。 I 仮定これは問題ありませんが、もちろん間違っている可能性があります。
更新、2012-01-10
私はFreeNAS8でマシンを起動し、zpool replace
を実行しました。これは開始され、すぐにデータ破損エラーとカーネルパニックの山を投げ始めました。プールを毎週スクラブしても問題は見つかりませんでした。間違ったディスクを交換するように言うような愚かなことは何もしなかったと思います。データが問題ないことがわかったので、すぐにshutdown -h
を発行しました。
とにかく、私は今、劣化したプールを持っており、交換が一時停止された状態で立ち往生しています。データを3TBの外付けドライブにコピーし、多額の費用をかけて購入したので、プールを破棄してやり直すことができます。ありがたいことに、データは問題ないように見えます-たまたま約100GBのファイルのmd5sumがありますが、これまでのところ無傷のようですが、本当にかけがえのないものをすべて回復することができました。
FreeNAS 8がkmem_maxの小さすぎるエラーでパニックを起こし続けているので、私は今、さらにRAMが到着するのを待っています。これは、調整できないようで、マシンはRAMでした。制約付き(4TBRAIDZ1の場合は1GB RAM)。
バックアップについて学んだ難しい教訓だけでなく、ZFS/FreeNAS/FreeBSDへの信頼も本当にノックされました。
更新13/1/12
さて、私のデータは安全にバックアップされているようです。
フェイルモードを続行するように設定しても、zpool status-vがハングします。これは、新しいディスクが接続された状態でのzpoolステータスの出力です(ada1)
pool: tank0
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
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank0 DEGRADED 0 0 0
raidz1 DEGRADED 0 0 0
ada2 ONLINE 0 0 0
ada3 ONLINE 0 0 0
ada0 ONLINE 0 0 0
replacing DEGRADED 0 0 3.17K
6540253751212815210 UNAVAIL 0 0 0 was /dev/ada3/old
ada1 ONLINE 0 0 0
errors: 3130 data errors, use '-v' for a list
新しいディスクの代わりに古いディスクが接続されていると、ZFSはプールをインポートせず、zfs status
は次のように述べています。
tank0 UNAVAIL insufficient replicas
raidz1 FAULTED corrupted data
ada2 ONLINE
ada3 ONLINE
ada0 FAULTED corrupted data
replacing UNAVAIL insufficient replicas
ada1 FAULTED corrupted data
ada1 FAULTED corrupted data
新しいディスク(ada1)を接続した状態でada0を障害が発生するのに、古いディスクを接続した状態でオンラインにする必要がある理由がわかりません。 ada0がどのように関連しているのかわかりません。
学習演習としてこのプールを回復してみましょう。
これで本当にコーナーに戻った。プールをフラット化し、バックアップからFreeNAS8にファイルを復元することになりました。
これまでのところはるかに安定していると感じています-新しいx64OS、4GB RAMおそらくすべてが貢献しています。
最近、同じように聞こえる状況が発生しました。ハングは発生していませんが、故障したドライブを交換できませんでした。もちろん、私はまったく異なる環境にいました。LinuxとZFS-Fuseです。しかし、あなたとは異なり、私はデータの破損を経験したとは言われていませんでした。
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://www.Sun.com/msg/ZFS-8000-2Q
[...]
disk/by-id/ata-Hitachi_HDS722020ALA330_JK1105B8GNNADX-part4 UNAVAIL 0 0 0 cannot open
さて、先に進む前に、このプールのデータはどれもかけがえのないものではなく、すべてがバックアップされたか、他のシステムのバックアップであったことを理解することが重要です。このデータの適切なバックアップがない場合は、この時点で停止し、他の作業を行う前にディスクのrawコピーを作成することをお勧めします。これにより、状況が悪化します。
私がやったことはこれでした。
まず、「zfsexportPOOLNAME」を使用してプールをエクスポートしました。次に、再起動して「zfsimportPOOLNAME」を実行しました。
「zpoolstatus」を実行すると、次のようになります。
state: DEGRADED
[...]
12640132412556728613 UNAVAIL 0 0 0 was /dev/disk/by-id/ata-Hitachi_HDS722020ALA330_JK1105B8GNNADX-part4
これで、上記の番号を使用して、次を使用してディスクを交換することができました。
zpool replace POOLNAME 12640132412556728613 /dev/DEVILCENAME
これで、「zpoolstatus」のドライブを交換するものとして表示されました。
state: DEGRADED
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 0h0m, 0.00% done, 282h43m to go
上記の推定282時間ではなく、実行に「たった」約48時間かかりました。 :-)
私はZFSの第一人者ではありませんが、ショットを撮ります。ZFSサブシステムがまだ障害のあるドライブにアクセスしようとしていて、何らかの理由でハングしているようです。プールのfailmode
値をcontinue
(zpool set failmode=continue
)そして、それがハングを解消し、何が起こっているのかを推測できるかどうかを確認します。
(これは修正ではないことに注意してください。システムは、アクセスできるはずのドライブにまだアクセスできません。応答が受信されるまでブロックするのではなく、エラーを返し、続行するように指示しているだけです。)