ドライブを接続するとZpoolのパフォーマンスが低下する

ドライブを接続するとZpoolのパフォーマンスが低下する

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エラーは報告されませんでした。

関連情報