2 つの ZFS プールが絡み合っている?

2 つの ZFS プールが絡み合っている?

私は、ZFS を使用して Ubuntu 12.04 LTS サーバー システムの混乱を解消しようとしています。zpool status に表示される内容は次のとおりです。

  pool: TB2
 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://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    TB2         UNAVAIL      0     0     0  insufficient replicas
      sdd       ONLINE       0     0     0
      sde       ONLINE       0     0     0
      sdf       ONLINE       0     0     0
      sdg       ONLINE       0     0     0
      sdh       ONLINE       0     0     0
      sdi       ONLINE       0     0     0
      sdj       ONLINE       0     0     0
      sds       ONLINE       0     0     0
      sdt       UNAVAIL      0     0     0

  pool: TB4
 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: resilvered 2.52T in 16h41m with 0 errors on Tue Feb  6 09:27:46 2018
config:

    NAME                                              STATE     READ WRITE CKSUM
    TB4                                               DEGRADED     0     0     0
      raidz2-0                                        DEGRADED     0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG9MBVS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG8G71M    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGH0LHV    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAG8MV3T    ONLINE       0     0     0
        spare-4                                       DEGRADED     0     0     0
          ata-Hitachi_HDS724040ALE640_PK2311PAG614MM  UNAVAIL      0     0     0
          ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV  ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2331PAGH2XRW    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAG7TGDS    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK1331PAGG3K0V    ONLINE       0     0     0
        ata-Hitachi_HDS724040ALE640_PK2311PAG59PYM    ONLINE       0     0     0
    spares
      ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV      INUSE     currently in use

errors: No known data errors

やりたいことは 2 つあります。1. プール TB4 内の障害のあるドライブを交換します。この方法はわかっています。2. プール TB2 を完全に破壊して再作成します。

通常、zpool destroy TB2 を実行して最初からやり直します。しかし、以前の管理者は TB2 に sd* 名を使用し、TB4 にディスク ID を使用していました。/dev/disk/by-id を確認すると、TB4 ドライブの 2 つ (...71M と ...EAV) がそれぞれ /dev/sdj と /dev/sds にシンボリックリンクされていることがわかりました。しかし、これらの sdj と sds は両方とも TB2 プールの一部としてリストされています。zpool destroy TB2 を実行すると、TB4 プールのドライブが破損するのではないかと心配です。ドキュメントには、destroy はメンバー ディスクに書き込むと記載されているからです。ZFS に実際に書き込まずに TB2 を忘れさせる方法はありますか?

以前の管理者に、なぜ 2 つの異なる方法 (/dev/sd* と by-id) を使用したのか尋ねました。彼は、特定のハード ドライブへのドライブ文字の割り当ては、ブートごとに繰り返すことができないようだったので、TB4 を作成するときに by-id を使用したと言いました。TB2 と TB4 のこの絡み合いは、その結果だと思います。

私の現在の考えは、次のとおりです。

  1. マシンをシャットダウンする
  2. すべてのドライブを引き抜きます。
  3. リブート。
  4. zpool を破棄 -f TB2
  5. TB4ドライブをシャットダウンして再インストールする
  6. 別のマシンでTB2ドライブを再フォーマットする
  7. TB2 ドライブを再インストールし、ディスク ID (sd* ではない) を使用して新しいプールを作成します。

これは合理的だと思いますか? もっと簡単な方法はありますか?

この混乱から私を救ってくれる人がいれば感謝します。

マイケル

答え1

提案された方法はうまくいくように思えます。しかし、それは不必要に複雑でもあります。代わりに、次の方法を提案します。

  1. zpool export TB2これにより、プールに関連付けられているすべてのリソースがアンマウントされ、最初にを実行しない限り、システムはそれらの再マウント (およびそれらへの書き込み) を試行しませんzpool import
  2. TB4 を修復します。(または、後で実行することもできます。)
  3. zpool create <new pool> ...(再度重複しないように、ディスクを ID で参照します)。これらのディスクがインポートされていないプールによって使用中であることが検出される可能性があるため、強制的に作成する必要がある場合があります。

手順のドライランを実行する場合は、TB4 ( zfs create -V 5gb TB4/volume1) にいくつかのボリュームを作成し、それらからzpool create testpool1 ...重複するボリュームを持つ 2 つの「ネストされたプール」 ( ) を作成できると思います。その他はすべて上記と同じように動作するはずです。

関連情報