web-dev-qa-db-ja.com

ZFS vdevsはチェックサムエラーを蓄積しますが、個々のディスクはそうではありません

FreeNAS 9.3のベンダー固有の派生物を実行しています。

新しいJBODシャーシを取り付けて2つの新しいvdevをプールに追加し、シャーシに不良のボードがあると、問題が発生しました。この間、SAS不良ボード上のドライブで電源エラーが発生しました。新しいドライブは、毎分効果的にオンとオフを繰り返していました。

ボードを交換したところ、ほとんどの場合ドライブは正常に機能していますが、zpool statusを表示すると、ZFSによって非常に奇妙なチェックサムエラーが発生します。 SAS電源の問題があったときに、いくつかの悪いCoW書き込みがあったと思います。

CPU、ブートドライブ、RAMなどを備えた最初のシャーシは、mini-SASを介して最初の拡張JBODシャーシに接続し、2番目のJBOD拡張シャーシは、同じくmini-SASを介して最初のJBOD拡張シャーシを介してデイジーチェーン接続されます。

  • [シャーシ1:ブートドライブ、2つのL2ARC SSD、RAIDZ3-0の11/11ドライブ、1/11ドライブRAIDZ3-1]-> mini-SASからシャーシ2
  • [シャーシ2:RAID Z3-1の10/11ドライブ、RAID Z3-2の6/11ドライブ]-> mini-SASからシャーシ3
  • [シャーシ3:RAIDZ3-2の5/11ドライブ、RAIDZ3-3の11/11ドライブ]

チェックサムエラーは1つのコントローラーまたはシャーシにきちんと対応していませんが、私の問題は、これらの電源の問題が発生したとき、異なる新しいディスクに書き込まれていたデータが、2つの新しいvdev間で正しく書き込まれていなかったことです。

私のHBAは適切なLSIファームウェア上にあり、すべて20.00.04.00または20.00.08.00にあります

Mini-SASケーブルを交換し、異なるポートを使用してみましたが、役に立ちませんでした。

zpool statusisの出力は、2つの新しいvdevで累積するチェックサムエラーを示し、スクラブ、再起動、またはzpool clearのいずれかの後、最終的にzpool statusはそれらのvdevを劣化としてマークします。奇妙なのは、それらのvdevに属するドライブのsomeも劣化としてマークしていることですが、個々のディスクの実際のエラー数はすべて0です。zdbは、個々のドライブがチェックサムエラーの数が実際にはすべて0であるにもかかわらず、チェックサムエラーが多すぎます。また、奇妙なのは、プールレベルのチェックサムエラーが、2つの問題のあるvdevを合計したチェックサムエラーよりも低い数を示すことです。

zpool status -vは、長い間削除された0x0 iノードにマップされたスナップショットに永続的なエラーを永続的に表示しますが、複数のスクラブ、再起動、またはzpool clearではクリアできないようです。また、他の永続的なエラーが浮き出たり消えたりし、16進数のiノードとしてのみ表示されることもあれば、最近のスナップショットの一部として表示されることもあります。 lsof0x0が見つかりません。

プール内のメタデータに何らかのデータの破損があると思います。

これらのファントムスナップショットを外科的に削除する方法、またはデータを破壊せずにプールを正常な状態に戻す方法を探しています。どこかで、 ZFSはこれらの破損したファントムスナップショットを繰り返し処理し、奇妙なチェックサムエラーとvdevの機能低下状態の両方を引き起こしています。

私は重要なデータの多くの「コールド」LTOバックアップを持っていますが、それ以外の場合は、プールを修復できない場合、2番目のサーバーをセットアップし、すべてを「ホット」な2番目のサーバーにオフロードして、プールを破棄しますトップレベルで、次にホットバックアップからリロードします。

zpool status -vの出力は次のとおりです。

[root@Jupiter] ~# zpool status -v
  pool: freenas-boot
 state: ONLINE
status: One or more devices are configured to use a non-native block size.
        Expect reduced performance.
action: Replace affected devices with devices that support the configured block size, or migrate data to a properly configured pool.
  scan: resilvered 944M in 0h17m with 0 errors on Tue Aug  9 11:56:28 2016
config:

    NAME        STATE     READ WRITE CKSUM
    freenas-boot  ONLINE       0     0     0
      mirror-0  ONLINE       0     0     0
        da46p2  ONLINE       0     0     0  block size: 8192B configured, 8388608B native
        da47p2  ONLINE       0     0     0  block size: 8192B configured, 8388608B native

errors: No known data errors

  pool: pool
 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.
   see: http://illumos.org/msg/ZFS-8000-8A
  scan: scrub in progress since Fri Sep  9 22:43:51 2016
        6.27T scanned out of 145T at 1.11G/s, 35h27m to go
        0 repaired, 4.33% done
config:

    NAME                                            STATE     READ WRITE CKSUM
    pool                                            DEGRADED     0     0   118
      raidz3-0                                      ONLINE       0     0     0
        gptid/ac108605-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ac591d4e-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ac92fd0d-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/accd3076-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ad067e97-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ad46cbee-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ad91ba17-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/adcbdd0a-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ae07dc0d-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ae494d10-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
        gptid/ae93a3a5-265c-11e5-9a02-0cc47a599098  ONLINE       0     0     0
      raidz3-1                                      ONLINE       0     0     0
        gptid/12f6a4c5-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/511ea1f9-1932-11e6-9b1e-0cc47a599098  ONLINE       0     0     0
        gptid/14436fcf-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/14f50aa3-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/159b5654-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/163d682b-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/16ee624e-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/1799dde3-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/184c2ea4-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/18f51c30-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
        gptid/19a861ea-c929-11e5-8075-0cc47a599098  ONLINE       0     0     0
      raidz3-2                                      DEGRADED     0     0   236
        gptid/5f80fc42-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/60369e0f-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/60e8234a-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/61a235f2-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/62580471-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/6316a38a-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/63d4bce8-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/ebfc2b99-6893-11e6-9b09-0cc47a599098  ONLINE       0     0     0
        gptid/654f143a-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/66236b33-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/66eda3f6-4e00-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
      raidz3-3                                      DEGRADED     0     0   176
        gptid/c77a9da9-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/c83e100e-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/c8fd9ced-4e02-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/c9bb21ba-4e02-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/ca7a48db-4e02-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/cb422329-4e02-11e6-b7cf-0cc47a599098  DEGRADED     0     0     0  too many errors
        gptid/cbfe4c21-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/ccc43528-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/cd93a34c-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/ce622f51-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
        gptid/cf2591d3-4e02-11e6-b7cf-0cc47a599098  ONLINE       0     0     0
    cache
      gptid/aedd3872-265c-11e5-9a02-0cc47a599098    ONLINE       0     0     0
      gptid/af559c10-265c-11e5-9a02-0cc47a599098    ONLINE       0     0     0

errors: Permanent errors have been detected in the following files:

        <0x357>:<0x2aef3>
        <0x37b>:<0x397285>
pool/[email protected]:<0x0>

FreeNAS GUIを介して、System dataset poolpoolからfreenas-bootにコピーし、次にzfs destroyを使用してpool/.systempoolコピーを削除し、freenas-bootコピーをそのまま残してみました。 zfs destroyを使用してすべてを削除することはできましたwithinpool/.systemにリストされているzfs listpool/.systemzfs destroyを破棄しようとすると、シェルがエラーを返しました:Cannot iterate filesystems: I/O errorzfs destroypool/.system、および-fフラグを使用して、-r-Rを試しましたが、 Oracle ZFSのドキュメント のとおり、使用できませんでした。

さらに別のスクラブを始めました。おそらく、pool/.systempoolコピーのSystem dataset poolの内容を削除すると、スクラブはファントムスナップショットpool/[email protected]でメタデータエラーをクリアできます。

劣化していると表示されている各ディスクを1つずつ再同期化して、参照されていない「悪い」メタデータを破棄できるかどうか疑問に思っています。 2つのディスクを再同期化しましたが、追加のディスクを再同期化すると、既に再同期化した他のディスクが同時に再同期化を開始するという問題が発生しています。私は信じています それは定期的なスナップショットタスクに関連するZFSバグである可能性があります 、そして私は先に進んで定期的なスナップショットタスクを削除し、すべてのスナップショットを破棄しましたが、私はさらに別の再同期を試みることをためらっています以前に回復されたすべてのディスクが再び回復し、冗長性がなくなり、最終的にプールに障害が発生するまで、パフォーマンスが低下したドライブの1つ。

定期的なスナップショットタスクを無効にしてすべてのスナップショットを削除した後、1つのディスクをワイプして再同期化しようとしましたが、既に再同期化した3つのディスクが再び再同期化を開始しました。これで、問題が発生するRAID-Z3 vdevごとに2つの異なるディスクが回復することはほぼ確実です。そのため、これ以上ディスクを回復させようとすると、問題のある各vdevとプールの冗長性が失われます。故障します。

他の奇妙な動作の1つは、zpool status -vをチェックすると実際にはプールのチェックサムエラー数が増加しますが、zpool statusをチェックすると増加しないことです。これは、-vフラグ自体がチェックサムエラーの原因となっているメカニズムを繰り返しているかのようです。

プールでzdb -cを使用すると、これらのメタデータエラーを「修正」できますか?

8
user260467

メタデータが破損している場合、0x0およびその他の16進数がファイル名やその他のオブジェクトの代わりに表示されます。影響を受けるオブジェクトを破壊することでそれを取り除くことができない場合(私はそれらがスナップショットを参照していることを理解しました)、損傷はおそらく修復するには大きすぎます。この場合、特に破損したメタデータが表示されたり消えたりするなど、さらに奇妙な影響がある場合は、バックアップからプールを復元します。

ほとんどの問題を取り除く方法については ZFS管理ガイドはこちら で読むことができます。しかし、ZFSはzpool statusと入力したときにソリューションを探すURLも提供します。

4