ZFS ログ デバイスを追加すると ZFS アレイにどのような影響があるのかをテストするために、zpool を作成し、いくつかのベンチマークを実行してから、ZIL として機能する SSD を接続することにしました。
残念ながら、zpoolを作成した後にSSDを接続したり、プールを作成した後にSSDを取り外したり(プール作成後にドライブ文字が変更される原因となるもの)してから再起動すると、次のコマンドを実行するとわかるように、プールが劣化してしまいます。sudo zpool status
pool: zpool1
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://zfsonlinux.org/msg/ZFS-8000-4J
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpool1 DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
sda ONLINE 0 0 0
1875547483567261808 UNAVAIL 0 0 0 was /dev/sdc1
この問題は、次のようなドライブ文字を使用してプールを作成したことに起因していると思われます。
sudo zpool create -f zpool1 mirror /dev/sdb /dev/sdc
質問
幸いなことに、これは単なるテストであり、データが失われるリスクはありませんが、実際のシナリオでこれが起こった場合、この問題から回復する最善の方法は何でしょうか? 明らかに、ドライブはまだ存在しており、使用できる状態です。
/dev/sda
将来この問題を回避するために、ドライブ文字を使用せずにzpoolを作成するより良い方法はありますか?Ubuntuのドキュメントにはこう書かれている私が行ったのと同じ方法で zpool を作成します。
追加情報
- OS: Ubuntu 16.04 サーバー 4.10
zfsutils-linux
インストールパッケージからzfsをインストールしました
答え1
Dexter_Kaneの助けを得てレベル 1 技術者フォーラム答えは、/dev/disk/by-id/...
プールを作成するときに代わりにパスを使用することです。
例えば
sudo zpool create zpool1 mirror \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H
既存のプールの改造と修理
良いニュースとしては、既存の ZFS RAID アレイをこれらのラベルを使用するように「変換」することで、将来このような事態が発生するのを防ぐことができ、この状況がすでに発生している場合でも、劣化したアレイを解決できることです。
sudo zpool export [pool name]
sudo zpool import -d /dev/disk/by-id [pool name]
プールのデータセットが使用されていないことを確認する必要があります。たとえば、プール内ではコマンドを実行せず、NFS などを介して共有されていないことを確認します。
変換を実行すると、出力はsudo zpool status
次のようになります。
pool: zpool1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpool1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 ONLINE 0 0 0
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H ONLINE 0 0 0
実施されたテスト
私は次のことを必ずテストしました:
- by-id パスを使用すると、問題の発生を防ぐことができました。
- プールが劣化状態にある間にデータを書き込んだ後、エクスポート/インポートを実行した後、すべてのファイルを読み取ることができ、
sudo zpool status
エラーは報告されませんでした。