web-dev-qa-db-ja.com

ZFSプールが「使用できない」のはなぜですか?

2つの異なる冗長プールの一部であったハードドライブを交換したところ、両方のプールが使用できなくなりました...

詳細:

  • 4つのドライブがあります:2x4TB(da0およびada1)および2x3TB(da1およびda2)。
  • 1つのプールは、全体の3TBドライブと4TBドライブの3TB部分の両方で構成されるRAIDZ1です。
  • もう1つのプールは、2つの大きなドライブの残りのスペースで構成されるミラーです。
  • 4TBドライブの1つを同じサイズの別のドライブに交換しました(da0).。

交換品を2つのパーツに接続し、各パーツをプールに追加するまで、両方のプールが「劣化」モードになると予想していました。

代わりに、コンピューターが不用意に再起動し、戻ってくると、両方のプールが「使用不可」になります。

      pool: aldan
     state: UNAVAIL
    status: One or more devices could not be opened.  There are insufficient
            replicas for the pool to continue functioning.
    action: Attach the missing device and online it using 'zpool online'.
       see: http://illumos.org/msg/ZFS-8000-3C
      scan: none requested
    config:

            NAME                      STATE     READ WRITE CKSUM
            aldan                     UNAVAIL      0     0     0
              raidz1-0                UNAVAIL      0     0     0
                1257549909357337945   UNAVAIL      0     0     0  was /dev/ada1p1
                1562878286621391494   UNAVAIL      0     0     0  was /dev/da1
                8160797608248051182   UNAVAIL      0     0     0  was /dev/da0p1
                15368186966842930240  UNAVAIL      0     0     0  was /dev/da2
            logs
              4588208516606916331     UNAVAIL      0     0     0  was /dev/ada0e

      pool: lusterko
     state: UNAVAIL
    status: One or more devices could not be opened.  There are insufficient
            replicas for the pool to continue functioning.
    action: Attach the missing device and online it using 'zpool online'.
       see: http://illumos.org/msg/ZFS-8000-3C
      scan: none requested
    config:

            NAME                     STATE     READ WRITE CKSUM
            lusterko                 UNAVAIL      0     0     0
              mirror-0               UNAVAIL      0     0     0
                623227817903401316   UNAVAIL      0     0     0  was /dev/ada1p2
                7610228227381804026  UNAVAIL      0     0     0  was /dev/da0p2

新しいドライブを分割しましたが、「zpoolreplace」の試行は「poolisavailable」で拒否されます。新しいドライブを単に切断すると、両方のプールがOk(劣化した場合)になります。なぜ両方とも「使用不可」になったのですか?すべてのデバイスがオンラインになっていると確信しています。カムコントロールへ:

<ATA Toshiba MG03ACA4 FL1A>        at scbus0 target 0 lun 0 (pass0,da0)
<ATA Hitachi HUS72403 A5F0>        at scbus0 target 1 lun 0 (pass1,da1)
<ATA Toshiba HDWD130 ACF0>         at scbus0 target 2 lun 0 (pass2,da2)
<M4-CT128M4SSD2 0309>              at scbus1 target 0 lun 0 (pass3,ada0)
<MB4000GCWDC HPGI>                 at scbus2 target 0 lun 0 (pass4,ada1)

OSはFreeBSD-11.3-STABLE/AMD64です。どうしましたか?

更新:いいえ、ディスクを抜く前にデバイスを明示的にofflineしませんでした-そして、それはすでにAmazonに戻る途中です。驚いたことに、そのようなオフライン化が必要です-ZFSがドライブの突然死を処理できるべきではありませんか?同様に、故障したドライブを別のドライブと交換する技術者のために準備する必要がありますか?なぜこのようなフィットを投げるのですか?

バックアップがあり、プールを最初から再構築できますが、これを回避する方法を理解したいと思います。または、不可能な場合は、適切なバグレポートを提出してください...

新しいドライブを完全に取り外しましたが、プールのステータスは変更されていません...たぶん、再起動する必要があります-それが役立つかどうかにかかわらず、それはかなり失望しています。

アップデート2:新しいディスクを接続した場合と接続しない場合の複数回の再起動は役に立ちませんでした。しかしながら、 zpool importは、私が期待するとおりに両方のプールを一覧表示します:劣化しています(ただし利用可能です!)。例えば:

   pool: lusterko
     id: 11551312344985814621
  state: DEGRADED
 status: One or more devices are missing from the system.
 action: The pool can be imported despite missing or damaged devices.  The
        fault tolerance of the pool may be compromised if imported.
   see: http://illumos.org/msg/ZFS-8000-2Q
 config:

        lusterko                  DEGRADED
          mirror-0                DEGRADED
            ada1p2                ONLINE
            12305582129131953320  UNAVAIL  cannot open

だが zpool statusは主張し続けます、すべてデバイスは利用できません...希望はありますか?

1
Mikhail T.

また、古いドライブを取り外す前にオフラインにしなかった可能性もあります。 (ZFSが論理ドライブ(プール)が破損していると判断し、コントローラーがそれらが正常であると判断する可能性があります。これは、ディスクシリンダーのサイズに違いがある場合に発生します。まれですが発生する可能性があります。)

状況から抜け出すために:

  • zpool statusからディスクの名前を取得します
  • diskinfoを使用して、上記のUNAVAILABLEドライブの物理的な場所を特定します。
  • cfgadm -c unconfigureおよびcfgadm -c configureで再構成します
  • 新しいディスクをオンラインにします-zpool online zone
  • 更新ゾーン-zpool replace zonezpool status zoneはオンラインで表示されます)
  • zpool replaceコマンドを実行して、ディスクを交換します
1
Overmind