zpool インポートエラー

zpool インポートエラー

プールに完全なエラーが発生しました。アレイシャーシのファンが動作を停止し、すべてのドライブが過熱しました。冷却後、SeagateのSeatoolsテストユーティリティを使用してすべてのドライブが正常であることを確認し、smartctlはドライブが正常であることを確認しました。また、各デバイスから直接データを読み取ることができ、各デバイスはシステムに表示されます。

しかし...プールをオンラインに戻そうとすると、ステータスは「UNAVAIL」です。合計4つのドライブを持つraidz1プール。私が得るエラーは次のとおりです。

zpool cannot import pool one or more devices is currently unavailable

zpool ステータス表示:

NAME                         STATE     READ WRITE CKSUM 
pool_01                      UNAVAIL     0     0     1 
  raidz1-0                   DEGRADED    0     0     4 
    c0t5000C500A24AD833d0    ONLINE      0     0     4 
    c0t5000C500A232AFA6d0    ONLINE      0     0     4 
    3743539469189005045      UNAVAIL     0     0     0 
    c0t5000C500A243C8DEd0    ONLINE      0     0     4 
logs 
  mirror-1                   ONLINE      0     0     0 
    c0t5F8DB4C095690612d0s0  ONLINE      0     0     0 
    c0t5F8DB4C095691282d0s0  ONLINE      0     0     0

zpool clear はチェックサムを消去しますが、プールを使用可能にしません。以前も同様の動作を見たことがあり、プールをエクスポートして再インポートすると問題が解決しました。今回はそうではありません。今回は、システムがプールのインポートを拒否します。 -Fを使用してインポートできますが、そうすると再利用できない状態に戻ります。

1つの奇妙なことは...上記の出力を見ると「3743539469189005045」というデバイスがあるということです。これが何なのか、なぜプールとつながるのか分かりません。ここに記載されている実際のデバイスは「c0t5000C500A22D9330d0」であり、利用可能で直接読み取ることができます。

これを無視して、私はこれがraidz1プールなので、3つの「オンライン」ドライブを使用してインポートできる必要があると思いました。まだしていません。だから私が考えることができるすべてを試した後、私は以下を実行しました。

zpoolのインポート - FX pool_01

「-X」をどこで手に入れたのか分からない。私のメモにはありますが、マニュアルページにはこれへの参照がありません。また、ZFSを検索するたびにSolarisの代わりにLinuxまたはFreeBSDが起動するため、Googleはあまり役に立ちません。

プールは4つの6TBドライブで構成されています。したがって、すべてのブロックをスキャンする必要がある場合は、合計18TBのデータに対して3つのドライブをインポートする必要があります。

インポートが14日間実行されました。エラーは発生せず、各ドライブで読み取り/書き込みアクティビティを表示できます。通常、iostatは次のようになります。

    extended device statistics 
    r/sw/s Mr/s Mw/s wait actv wsvc_t asvc_t %w %b device        
    210.3 70.1 6.7 0.1 0.0 0.2 0.0 0.6 0 15 c0t5000C500A232AFA6d0       
    338.5 129.2 8.1 0.1 0.0 0.4 0.0 0.8 0 28 c0t5000C500A24AD833d0        
    210.3 70.1 6.7 0.1 0.0 0.2 0.0 0.6 0 13 c0t5000C500A243C8DEd0

あるドライブは他の2つのドライブよりも常に忙しいですが、すべての統計は毎秒変わるので、ドライブが何かをしていると信じています。

PIDをトラスにインポートしようとすると、トラスは停止します。 zpool-pool_01 プロセスは毎秒再生成され、あまりにも早く死んで追跡することができず、PIDが何であるかわからないため、何もしないことは明らかです。

今私の質問は、-XオプションはSolarisで何をしますか?使用前に、インポートがすぐに失敗したか、UNAVAIL状態にインポートされました。これでインポートは無期限に実行されます。実際に何かをしていてインポートに成功する可能性があるなら、実行させても大丈夫です。

大きなダメージを与えずに防げますか?このプールをオンラインにする他の方法はありますか? 3つの利用可能なディスクを持つ4つのディスクプールがどのようにオンラインにならないかはまだ混乱しています。

3743539469189005045デバイスを物理デバイス(c0t5000C500A22D9330d0)に再マップする方法はありますか?これはプールがそれ自体を修正するのに役立ちますか?

システムは Solaris x64 11.4.27.0.1.82.1 です。ここでは、もはやSolaris関連の経験が多くないことを知っていますが、ZFSとその歴史についての良い知識があなたの一部に役立つことを願っています。

本当に助けが必要です。このアレイには多くのデータがあり、私の間違いによってバックアップは行われませんでした。重要なデータは、以前は重要なデータでしたが、重要ではなかったデータがあまりにも失われると、それでも痛みを伴う可能性があります。 18TBは多くのバックアップ容量ですが、バックアップの観点からはリソースが制限されています。それにもかかわらず、そこで教訓を得ました。

どんな助けでも大変感謝します。


- -更新- -

zpoolインポートを停止できなかったため、システムを再起動しました(I / Oロック)。単純なzpoolポール(つまり、プール名を指定せずにzpool import)を試すと、次のような結果が得られます。

pool: pool_01 
id: 346760273105473837 
state: UNAVAIL 
status: One or more devices are unavailable. action: The pool cannot be imported due to unavailable devices or data. The pool may be active on another system, but can be imported using the '-f' flag. config:

    pool_01                      UNAVAIL  incorrect labeling data
      raidz1-0                   DEGRADED
        c0t5000C500A24AD833d0    ONLINE
        c0t5000C500A232AFA6d0    ONLINE
        c0t5000C500A24AD833d0    UNAVAIL  incorrect labeling data
        c0t5000C500A243C8DEd0    ONLINE
    logs
      mirror-1                   ONLINE
        c0t5F8DB4C095690612d0s0  ONLINE
        c0t5F8DB4C095691282d0s0  ONLINE

device details:

    c0t5000C500A24AD833d0      UNAVAIL        incorrect labeling data
    status: ZFS detected errors on this device.
            The device has bad label or disk contents.

c0t5000C500A24AD833d0 が 2 回表示される方法を確認してください。 1回は「オンライン」、もう1回は「使用できません」と表示されます。また、リストに必要な他のドライブ(c0t5000C500A22D9330d0)はまったく表示されません。

formatコマンドは、プールに属する必要がある4つのドライブをすべて表示します。

  16. c0t5000C500A22D9330d0 <ATA-ST6000VN0041-2EL-SC61-5.46TB>
      /scsi_vhci/disk@g5000c500a22d9330
  17. c0t5000C500A24AD833d0 <ATA-ST6000VN0041-2EL-SC61-5.46TB>
      /scsi_vhci/disk@g5000c500a24ad833
  18. c0t5000C500A232AFA6d0 <ATA-ST6000VN0041-2EL-SC61-5.46TB>
      /scsi_vhci/disk@g5000c500a232afa6
  19. c0t5000C500A243C8DEd0 <ATA-ST6000VN0041-2EL-SC61-5.46TB>
      /scsi_vhci/disk@g5000c500a243c8de

それぞれに対して「フォーマット検証」を実行すると、エラーは返されません。各ドライブの「フォーマット確認」出力は次のとおりです。

Volume name = < >
ascii name = <ATA-ST6000VN0041-2EL-SC61-5.46TB>
bytes/sector = 512 sectors = 11721045167
accessible sectors = 11721045134
Part Tag Flag First Sector Size Last Sector
0 usr wm 256 5.46TB 11721028750
1 unassigned wm 0 0 0
2 unassigned wm 0 0 0
3 unassigned wm 0 0 0
4 unassigned wm 0 0 0
5 unassigned wm 0 0 0
6 unassigned wm 0 0 0
8 reserved wm 11721028751 8.00MB 11721045134

fmadmに欠陥は表示されません。

-f、-F、readonly = on、およびこれらのオプションのさまざまな組み合わせを使用してインポートしようとすると失敗します。ほとんど失敗しました: 'pool_01'をインポートできません。 1 つ以上のデバイスは現在利用できません。

オプション(例:zpool import pool_01)なしでインポートしようとすると、次のエラーが返されます。

cannot import 'pool_01': I/O error Destroy and re-create the pool from a backup source.

D833ドライブを削除してインポートすると、次のものが返されます。

pool: pool_01 
id: 346760273105473837 
state: UNAVAIL 
status: One or more devices are unavailable. action: The pool cannot be imported due to unavailable devices or data. config:

    pool_01                      UNAVAIL  insufficient replicas
      raidz1-0                   UNAVAIL  insufficient replicas
        c0t5000C500A22D9330d0    UNAVAIL  incorrect labeling data
        c0t5000C500A232AFA6d0    ONLINE
        c0t5000C500A24AD833d0    REMOVED
        c0t5000C500A243C8DEd0    ONLINE
    logs
      mirror-1                   ONLINE
        c0t5F8DB4C095690612d0s0  ONLINE
        c0t5F8DB4C095691282d0s0  ONLINE

device details:

    c0t5000C500A22D9330d0      UNAVAIL        incorrect labeling data
    status: ZFS detected errors on this device.
            The device has bad label or disk contents.

どちらのドライブもデバイス識別子を正しく表示します。

D833 ドライブを再挿入して 9330 ドライブを取り外すと、次のように表示されます。 pool: pool_01 id: 346760273105473837 state: UNAVAIL status: 1 つ以上のデバイスを使用できません。処置:デバイスまたはデータが利用できないため、プールを取得できません。プールは他のシステムでアクティブにすることができますが、「-f」フラグを使用してインポートできます。構成:

pool_01                      UNAVAIL  incorrect labeling data
  raidz1-0                   DEGRADED
    c0t5000C500A24AD833d0    ONLINE
    c0t5000C500A232AFA6d0    ONLINE
    c0t5000C500A24AD833d0    UNAVAIL  incorrect labeling data
    c0t5000C500A243C8DEd0    ONLINE
logs
  mirror-1                   ONLINE
    c0t5F8DB4C095690612d0s0  ONLINE
    c0t5F8DB4C095691282d0s0  ONLINE

デバイスの詳細:

c0t5000C500A24AD833d0      UNAVAIL        incorrect labeling data
status: ZFS detected errors on this device.
        The device has bad label or disk contents.

無効なデバイスIDがここに再表示されます。 D833を削除すると、すべてのデバイスで正しい名前が報告されますが、それをインストールすると9330と混乱が発生することを説明する方法がわかりません。

両方を削除すると、次のように表示されます。

pool: pool_01 
id: 346760273105473837 
state: UNAVAIL 
status: One or more devices are unavailable. action: The pool cannot be imported due to unavailable devices or data. The pool may be active on another system, but can be imported using the '-f' flag. config:

    pool_01                      UNAVAIL  incorrect labeling data
      raidz1-0                   DEGRADED
        c0t5000C500A22D9330d0    REMOVED
        c0t5000C500A232AFA6d0    ONLINE
        c0t5000C500A24AD833d0    REMOVED
        c0t5000C500A243C8DEd0    ONLINE
    logs
      mirror-1                   ONLINE
        c0t5F8DB4C095690612d0s0  ONLINE
        c0t5F8DB4C095691282d0s0  ONLINE

私が知っている限り、すべてのディスクは完璧に動作します。どこかにZFSタグの問題があるようです。フォーマットチェックはディスクレベルのラベルの問題を報告しないので、少なくともそれは私の推測です。

これは、zpoolメタデータが混乱し、システムが2つの別々のデバイスとして明確に認識していても、2つの異なるデバイス(c0t5000C500A24AD833d0およびc0t5000C500A22D9330d0)を同じデバイス(c0t5000C500A24AD83)

zpoolメタデータを変更する方法はありますか? zdbを試しましたが、プールを開くことができなかったため、終了しました。 zdb: 'pool_01' プールをオープンできません: I/O エラー


--- アップデート 2 ---

週末に深く掘り下げ、各ドライブのzpoolタグを比較しました。

私は(例えば)以下を使用しました。

zdb -ll /dev/dsk/c0t5000C500A24AD833d0s0

Solarisでは、zpoolタグを表示するときにスライス-0(d0s0)を指定する必要があります。デバイスのみを指定すると(たとえば、... d0から... d0s0)、タグを「分割できません」というメッセージが表示されます。 " "

私が見つけたのは少し予想外のものでした。ラベルの1つを除くすべてのラベルは一貫していたが、苦情を登録していないドライブの1つ(c0t5000C500A232AFA6d0ドライブ)には一貫性のないラベルがありました。ドライブは常に「オンライン」を報告します。だから私は気まぐれにアレイからドライブを取り外し、DEGRADED状態のプールを持ってきました。有望だった「zpool import -R /mnt/x -o readonly=on -f pool_01」を使ってインポートしましたが、これらの希望はすぐに崩れました。アレイからファイル、スナップショットなどを読み取ろうとすると、ほとんどすべてが「/path/to/my/file: I/O error」を返し、アレイのCKSUM番号が急増し始めます。

現在のプールはこんな感じ..

  pool: pool_01
 state: DEGRADED
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
        entire pool from backup.
        Run 'zpool status -v' to see device specific details.
   see: http://support.oracle.com/msg/ZFS-8000-8A
  scan: resilvered 0 in 2m16s with 1 errors on Fri Feb 16 06:32:18 2024

config:

        NAME                         STATE      READ WRITE CKSUM
        pool_01                      DEGRADED      0     0   59K
          raidz1-0                   DEGRADED      0     0  118K
            c0t5000C500A24AD833d0    DEGRADED      0     0  128K
            c0t5000C500A22D9330d0    DEGRADED      0     0  118K
            3743539469189005045      UNAVAIL       0     0     0
            c0t5000C500A243C8DEd0    DEGRADED      0     0  116K
        logs
          mirror-1                   ONLINE        0     0     0
            c0t5F8DB4C095690612d0s0  ONLINE        0     0     0
            c0t5F8DB4C095691282d0s0  ONLINE        0     0     0

errors: 32790 data errors, use '-v' for a list

UNAVAILまたはREMOVEDを報告しているドライブには細心の注意を払いましたが、インポートに失敗したドライブがエラーや苦情のないドライブの1つであることがわかったため、これはやや残念です。

今私の質問は、「import -FX」を使用して2週間実行した結果、破損したデータですか?つまり。 -Xを実行するときに他のオプションがないと思って私を撃っていますか?それとも、データが破損せず、ドライブ自体に問題があるのでしょうか?ハードウェアレベルのエラーを報告しなくても?そして...-Xの結果なら回復する方法はありますか?

関連情報