データにZFS RAIDZを使用したUbuntuサーバーの復元 で説明したように、ZFSを使用してNASのテストインスタンスを実行している。
今週、私のディスクの1つが死亡しました。問題になるべきではありません、そうすべきです(RAIDが回復力であるという利点とパフォーマンス)。
次のように、ZFSプールが破損したことを除きます。
andy@ubuntu:~$ Sudo zpool status -v
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
幸い、これはテストインスタンスであるため、簡単に再起動できます。しかし、このプールに重要なデータが含まれていたらどうでしょうか?データを回復し、NASを正常な状態に戻すための正しい次のステップは何ですか?または、ZFSは、データがトーストされるように、可能なすべての復元アプローチを自動的に試行しますか?
プールが実際に破損していないようです。出力からは、複数のデバイスに問題がある可能性があります。複数のディスクが疑わしい状態である可能性があるため、sdbおよびsdcの障害状態であると推測しています。それらの何が問題なのかを把握すると、プールがあなたの間違いを証明するかもしれません。これは、プールの致命的な状態のようには見えません。
@slashdotの洞察力で武装して、私はほとんど問題を修正しましたが、私が何をしたか本当にわかりません。次のトレイルを調べて、私を啓発してください。
特に、次の仮説のどれが真実であるか、または何が欠けていますか?
zdb -u tank
もzdb -dcsv tank
も有用なことをしませんでした。zpool import -f tank
は、ZFSがそれ自体を修正するためのzpool export tank
から十分な時間が経過したため、最初のandy@ubuntu:~$ zpool status
andy@ubuntu:~$ Sudo zpool status
pool: tank
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://www.Sun.com/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank UNAVAIL 0 0 0 insufficient replicas
raidz1-0 UNAVAIL 0 0 0 insufficient replicas
sdb FAULTED 0 0 0 corrupted data
sdc FAULTED 0 0 0 corrupted data
sdd UNAVAIL 0 0 0
andy@ubuntu:~$ Sudo zdb -u tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ Sudo zpool scrub tank
cannot scrub 'tank': pool is currently unavailable
andy@ubuntu:~$ Sudo zdb -bcsv tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ Sudo zpool export tank
andy@ubuntu:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ Sudo zpool import -f tank
cannot import 'tank': one or more devices is currently unavailable
andy@ubuntu:~$ Sudo zpool status
no pools available
andy@ubuntu:~$ Sudo zpool status -x
no pools available
andy@ubuntu:~$ Sudo zpool import
pool: tank
id: 9117894036185671023
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://www.Sun.com/msg/ZFS-8000-5E
config:
tank UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
sdb FAULTED corrupted data
sdb UNAVAIL
sdc ONLINE
andy@ubuntu:~$ Sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ Sudo zpool import -f tank
andy@ubuntu:~$ Sudo zpool status
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://www.Sun.com/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h13m with 0 errors on Mon Nov 21 09:22:11 2011
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
10820373921989571629 UNAVAIL 0 0 0 was /dev/sdb1
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
errors: No known data errors
andy@ubuntu:~$
が機能しなかったときに機能しました。LOG
__コードスニペット__
以前のポスターは問題を浮き彫りにしたと思います。推定原因は、ディスクの指定方法が原因でした。
私の経験は、UbuntuでのZFSです。 freenasでもZFSを使用していますが、bsdの実装を詳しく調べる必要はありません。
確かにUbuntuの場合、デバイスを記述子ではなくIDで指定することを強くお勧めします。つまり、/ dev/sdaではなく物理ディスクを一意に識別する/ dev/disk/by-id/scsi-SATA-long文字列です。
By-idデバイスを使用すると、ディスクが接続されている特定のSATAポートへの依存がなくなります。
ガレス
ディスクを混在させることはできますか?
ディスクとzpoolを混同したら、「ディスクには破損したデータが含まれています」と言われました。前のシーケンスでディスクを接続した後、動作を開始しました。
たぶんタンクzpoolをインポートした後、正しいシーケンスを認識しました。