web-dev-qa-db-ja.com

メタデータの破損で障害が発生したZFS-HAプール

優れた説明Githubに従ってZFS-HAをセットアップしました( ここ を参照)。徹底的なテストの後、HBAコントローラーを使用して2つのノードに接続されたRAIDZ3の5x12ディスクを使用して、セットアップを本番環境にロールアウトしました。これは、2つのストレージプールの1つが突然「プールのメタデータが破損しています」という障害が発生する昨夜まで非常にスムーズに実行されました。 scrubの実行中。この時点では、これの原因についてのみ推測できます。両方のプールはペースメーカーでSCSIフェンシングを使用してセットアップされ、本番環境に移行する前にテストしたすべての障害シナリオでディスク予約が問題なく機能しました。最近発生した唯一の大きな事件は、UPSのサポートなしで2回の完全な停電でした(読んでください:電力はある瞬間から次の瞬間にちょうどなくなった)。ただし、破損の本当の理由はまったく異なるものである可能性もあります。

現在の状況では、プールをimportできなくなりました(この質問の最後にあるzpool importの出力をご覧ください)。これまでのところ、プールを救うという私の意図はすべて失敗しました。

# zpool import -f tank
cannot import 'tank': one or more devices is currently unavailable

# zpool import -F tank
cannot import 'tank': one or more devices is currently unavailable

これは、プールを破壊することが唯一の選択肢であるとは実際には言っていないので、少し戸惑います(これは、致命的に破損したプールで予想される応答です)。

# zpool clear -F tank
cannot open 'tank': no such pool

また、すべてのSCSI予約を手動で削除しました。例:

# DEVICE=35000c5008472696f
# sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE
# sg_persist --in --no-inquiry --read-key --device=/dev/mapper/$DEVICE
# sg_persist --out --no-inquiry --register --param-sark=0x80d0001 --device=/dev/mapper/$DEVICE
# sg_persist --out --no-inquiry --clear --param-rk=0x80d0001 --device=/dev/mapper/$DEVICE
# sg_persist --in --no-inquiry --read-reservation --device=/dev/mapper/$DEVICE

さらに、ディスクシェルフからA/Cを取り外して、デスクに残っている可能性のある一時的な情報をクリアしてみました。

率直に言って、オプションが不足しています。私のリストに残っているのは、-Xに対するzpool importオプションだけです。これは、他のすべての対策が失敗した後に試します。

だから私の質問は、あなたは以前にこのようなものに遭遇しましたか、そしてもっと重要なことに、これを解決する方法を見つけましたか?私はあなたが持っているかもしれないどんな提案にも非常に感謝するでしょう。

=========

プールのレイアウト/構成:

   pool: tank
     id: 1858269358818362832
  state: FAULTED
 status: The pool metadata is corrupted.
 action: The pool cannot be imported due to damaged devices or data.
        The pool may be active on another system, but can be imported using
        the '-f' flag.
   see: http://zfsonlinux.org/msg/ZFS-8000-72
 config:

        tank                   FAULTED  corrupted data
          raidz3-0             FAULTED  corrupted data
            35000c5008472696f  ONLINE
            35000c5008472765f  ONLINE
            35000c500986607bf  ONLINE
            35000c5008472687f  ONLINE
            35000c500847272ef  ONLINE
            35000c50084727ce7  ONLINE
            35000c50084729723  ONLINE
            35000c500847298cf  ONLINE
            35000c50084728f6b  ONLINE
            35000c50084726753  ONLINE
            35000c50085dd15bb  ONLINE
            35000c50084726e87  ONLINE
          raidz3-1             FAULTED  corrupted data
            35000c50084a8a163  ONLINE
            35000c50084e80807  ONLINE
            35000c5008472940f  ONLINE
            35000c50084a8f373  ONLINE
            35000c500847266a3  ONLINE
            35000c50084726307  ONLINE
            35000c50084726897  ONLINE
            35000c5008472908f  ONLINE
            35000c50084727083  ONLINE
            35000c50084727c8b  ONLINE
            35000c500847284e3  ONLINE
            35000c5008472670b  ONLINE
          raidz3-2             FAULTED  corrupted data
            35000c50084a884eb  ONLINE
            35000c500847262bb  ONLINE
            35000c50084eb9f43  ONLINE
            35000c50085030a4b  ONLINE
            35000c50084eb238f  ONLINE
            35000c50084eb6873  ONLINE
            35000c50084728baf  ONLINE
            35000c50084eb4c83  ONLINE
            35000c50084727443  ONLINE
            35000c50084a8405b  ONLINE
            35000c5008472868f  ONLINE
            35000c50084727c6f  ONLINE
          raidz3-3             FAULTED  corrupted data
            35000c50084eaa467  ONLINE
            35000c50084e7d99b  ONLINE
            35000c50084eb55e3  ONLINE
            35000c500847271d7  ONLINE
            35000c50084726cef  ONLINE
            35000c50084726763  ONLINE
            35000c50084727713  ONLINE
            35000c50084728127  ONLINE
            35000c50084ed0457  ONLINE
            35000c50084e5eefb  ONLINE
            35000c50084ecae2f  ONLINE
            35000c50085522177  ONLINE
          raidz3-4             FAULTED  corrupted data
            35000c500855223c7  ONLINE
            35000c50085521a07  ONLINE
            35000c50085595dff  ONLINE
            35000c500855948a3  ONLINE
            35000c50084f98757  ONLINE
            35000c50084f981eb  ONLINE
            35000c50084f8b0d7  ONLINE
            35000c50084f8d7f7  ONLINE
            35000c5008539d9a7  ONLINE
            35000c5008552148b  ONLINE
            35000c50085521457  ONLINE
            35000c500855212b3  ONLINE

編集:

サーバーは2xDell PowerEdge R630、コントローラーはBroardcomのDellOEMバージョンSAS HBA(SAS 9300-8e)に類似している必要があります)およびこの中の60個のディスクすべてプールはSeagateST6000NM0034です。エンクロージャはQuantaMESOSM4600Hです。

編集2:

OSはCentOS7です

ZFSはzfs-0.7.3-1.el7_4.x86_64です

4
Michael

結局、私はimportにオプション-Xを使用することにしました。これは、2GB /秒で約36時間読み取ることにより、すべてのディスクを実行しました。その後、エラーメッセージは表示されず、ファイルシステムがマウントされ、再び完全にアクセスできるようになりました。これまで、データの不整合は検出されませんでした(zfs scrubはまだ実行中です)。返信ありがとうございます。

ただし、将来の読者のために、マニュアルページの-Xオプションについて警告を渡したいと思います。このオプションはプールの状態に非常に危険である可能性があるため、最後の手段。

3
Michael

アップストリームにはここに多くのオプションがないようです(これは Oracle Solaris ZFSトラブルシューティングとプールリカバリ ドキュメントからのもので、zpool import -Fは、メタデータがどのように破損しているかを実際に調べるZFSの第一人者を雇うことを除いて、実際に持っている唯一のオプションです):

上記のプール回復方法でプールを回復できない場合は、バックアップコピーからプールとそのすべてのデータを復元する必要があります。

そして、OpenZFSの提携が、状況を変えるような多くのことをここにもたらしたとは思いません。そして、これは確かに悲しいニュースです。

P.S.これは、プールがその状態になった理由とは関係ありませんが、10個のディスク幅のアレイを作成すること自体が問題だと思いませんか?スペアディスクが2枚以上ある場合でも。 コールドデータなどです。

1
drookie

ハードウェアの詳細は何ですか?サーバー、ディスク、エンクロージャー、コントローラーのメーカーとモデル。

私はすべてのHA機能を無効にし、1つのシステムでの作業に集中します。

  • 1つのノードをスタンバイにします:pcs cluster standbyまたは単にペースメーカーを無効にします。
  • 作業するノードにプールを手動でインポートします。

    zpool import tank -d /dev/mapper/そして結果を観察します。

また、これを行った後、dmesgに何が表示されますか?

0
ewwhite