Go to main content
Oracle® Solaris 11.3 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ZFS ストレージプールで発生した問題を識別する

次のセクションでは、ZFS ファイルシステムまたはストレージプールで発生する問題を識別して解決する方法について説明します。

次の機能を使用して、ZFS 構成で発生した問題を識別することができます。

  • zpool status コマンドを使用すると、ZFS ストレージプールについての詳細な情報を表示できます。

  • プールおよびデバイスの障害が ZFS/FMA の診断メッセージで報告されます。

  • zpool history コマンドを使用すると、プール状態の情報を変更した以前の ZFS コマンドを表示できます。

  • 間違って破棄された ZFS ストレージプールは、zpool import –D コマンドを使用して回復できますが、デバイスが再利用または間違って上書きされないよう、プールが迅速に回復されることが重要です。詳細は、破棄された ZFS ストレージプールを回復するを参照してください。ZFS ファイルシステムまたはデータを回復するための同様の機能は存在しません。常に適切なバックアップを用意しておいてください。

ZFS のほとんどのトラブルシューティングで、zpool status コマンドを使用します。このコマンドを実行すると、システム上のさまざまな障害が分析され、もっとも重大な問題が識別されます。さらに、推奨する処置と、詳細情報が掲載されたナレッジ記事へのリンクが提示されます。プールで複数の問題が発生している可能性がある場合でも、このコマンドで識別できる問題は 1 つだけです。たとえば、データ破壊のエラーは一般に、いずれかのデバイスで障害が発生したことを示唆しますが、障害が発生したデバイスを置き換えても、データ破壊の問題がすべて解決するとは限りません。

また、ZFS 診断エンジンはプールの障害とデバイスの障害を診断し、報告します。これらの障害に関連するチェックサム、入出力、デバイス、およびプールのエラーも報告されます。fmd で報告される ZFS 障害は、コンソールとシステムメッセージファイルに表示されます。ほとんどの場合、fmd メッセージは、回復に関するさらなる指示について zpool status コマンドを案内します。

基本的な回復方法は次のとおりです。

  • 該当する場合、zpool history コマンドを使って、エラーシナリオに至る前に実行された ZFS コマンドを特定します。例:

    # zpool history system1
    History for 'system1':
    2012-11-12.13:01:31 zpool create system1 mirror c0t1d0 c0t2d0 c0t3d0
    2012-11-12.13:28:10 zfs create system1/eric
    2012-11-12.13:37:48 zfs set checksum=off system1/eric

    この出力では、system1/eric ファイルシステムのチェックサムが無効になっています。この構成はお勧めできません。

  • システムコンソールまたは /var/adm/messages ファイルに表示される fmd メッセージからエラーを識別します。

  • zpool status -x コマンドを使って、詳細な修復手順を確認します。

  • 次の手順を実行して、障害を修復します。

    • 使用できないデバイスまたは見つからないデバイスを交換して、オンラインにします。

    • 障害の発生した構成または破壊されたデータをバックアップから復元します。

    • zpool status –x コマンドを使用して回復を確認します。

    • 復元した構成のバックアップを作成します (該当する場合)。

このセクションでは、発生する可能性がある障害の種類を診断するために、zpool status の出力を解釈する方法について説明します。ほとんどの作業はコマンドによって自動的に実行されますが、障害を診断するうえで、どのような問題が識別されるかを正確に理解しておくことは重要です。以降のセクションでは、発生する可能性のあるさまざまな問題を修復する方法について説明します。

ZFS ストレージプールに問題があるかどうかを確認する

システムになんらかの既知の問題が存在するかどうかを確認するもっとも簡単な方法は、zpool status –x コマンドを使用することです。このコマンドでは、問題が発生しているプールの説明だけが出力されます。健全性に問題があるプールがシステムに存在しない場合、コマンドは次の出力を表示します。

# zpool status -x
all pools are healthy

–x フラグがないと、コマンドは、プールがほかの点では健全な場合でも、すべてのプール (または、コマンド行で指定された場合は、要求されたプール) の完全なステータスを表示します。

zpool status コマンドのコマンド行オプションの詳細については、ZFS ストレージプールのステータスのクエリー検索を行うを参照してください。

ZFS ストレージプールのステータス情報を確認する

zpool status コマンドを使用すると、ZFS ストレージプールのステータス情報が表示されます。例:

# zpool status pond
pool: pond
state: DEGRADED
status: One or more devices are unavailable in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or 'fmadm repaired', or replace the device
with 'zpool replace'.
Run 'zpool status -v' to see device specific details.
scan: scrub repaired 0 in 0h0m with 0 errors on Wed Jun 20 13:16:09 2012
config:

NAME                   STATE     READ WRITE CKSUM
pond                   DEGRADED     0     0     0
mirror-0               ONLINE       0     0     0
c0t5000C500335F95E3d0  ONLINE       0     0     0
c0t5000C500335F907Fd0  ONLINE       0     0     0
mirror-1               DEGRADED     0     0     0
c0t5000C500335BD117d0  ONLINE       0     0     0
c0t5000C500335DC60Fd0  UNAVAIL      0     0     0

errors: No known data errors

この出力については、次のセクションで説明します。

プールの全般的なステータス情報

zpool status 出力のこのセクションには次のフィールドが含まれます。その一部は、問題が発生しているプールに対してのみ表示されます。

pool

プールの名前を示します。

state

プールの現在の健全性を示します。この情報は、プールが必要な複製レベルを提供できるかどうかだけを示しています。

status

プールで発生している問題の説明です。エラーが検出されない場合は、このフィールドは省略されます。

action

エラーを修復するために推奨される処置。エラーが検出されない場合は、このフィールドは省略されます。

see

詳細な修復情報が掲載されているナレッジ記事を紹介します。オンラインの記事はこのガイドよりも頻繁に更新されます。そのため、最新の修復手順については常にオンラインの記事を参照してください。エラーが検出されない場合は、このフィールドは省略されます。

scrub

スクラブ操作の現在のステータスが出力されます。前回のスクラブが完了した日付と時間、進行中のスクラブ、スクラブが要求されていないかどうかなどが出力されます。

errors

既知のデータエラー、または既知のデータエラーが存在しないことが出力されます。

ZFS ストレージプールの構成情報

zpool status 出力の config フィールドには、プール内のデバイスの構成、デバイスのステータス、およびデバイスから生成されたエラーが出力されます。次のいずれかの状態になる可能性があります: ONLINEFAULTEDDEGRADED、または SUSPENDEDONLINE 以外のいずれかの状態の場合は、プールの耐障害性が危殆化しています。

構成出力の 2 番目のセクションには、エラー統計が表示されます。これらのエラーは、3 つのカテゴリに分けられます。

  • READ – 読み取り要求を実行したときに発生した入出力エラー

  • WRITE – 書き込み要求を実行したときに発生した入出力エラー

  • CKSUM – チェックサムエラー。読み取り要求の結果として、破壊されたデータがデバイスから返されたことを意味する

これらのエラーを使って、損傷が永続的かどうかを判断できます。入出力エラーが少数の場合は、機能が一時的に停止している可能性があります。入出力エラーが大量の場合は、デバイスに永続的な問題が発生している可能性があります。これらのエラーは、アプリケーションによって解釈されるデータ破壊に対応していないことがあります。デバイスが冗長構成になっている場合は、デバイスの訂正できないエラーが表示されることがあります。ただし、ミラーまたは RAID-Z デバイスレベルではエラーは表示されません。そのような場合、ZFS は正常なデータの取得に成功し、既存の複製から損傷したデータの回復を試みたことになります。

これらのエラーを解釈する方法の詳細については、デバイス障害の種類を確認するを参照してください。

さらに、zpool status 出力の最終列には、補足情報が表示されます。この情報は、state フィールドの情報を補足するもので、障害の診断に役立ちます。デバイスが UNAVAIL の場合、このフィールドはデバイスがアクセスできない状態かどうか、またはデバイス上のデータが破壊されているかどうかを示しています。デバイスで再同期化が実行されている場合、このフィールドには現在の進行状況が表示されます。

再同期化の進行状況をモニターする方法の詳細については、再同期化のステータスを表示するを参照してください。

ZFS ストレージプールのスクラブのステータス

zpool status 出力のスクラブセクションには、すべてのスクラブ操作の現在のステータスが説明されます。この情報は、システム上でなんらかのエラーが検出されているかどうかを示すものではありません。ただし、この情報を使って、データ破壊エラーの報告が正確かどうかを判断できます。前回のスクラブが最近実行されている場合には、既知のデータ破壊が発生していれば、高い確率でそのとき検出されている可能性があります。

次の zpool status スクラブステータスメッセージが表示されます。

  • スクラブ進捗レポート。例:

    scan: scrub in progress since Wed Jun 20 14:56:52 2012
    529M scanned out of 71.8G at 48.1M/s, 0h25m to go
    0 repaired, 0.72% done
  • スクラブ完了メッセージ。例:

    scan: scrub repaired 0 in 0h11m with 0 errors on Wed Jun 20 15:08:23 2012
  • 進行中のスクラブの取り消しメッセージ。例:

    scan: scrub canceled on Wed Jun 20 16:04:40 2012

スクラブ完了メッセージはシステムのリブート後も残ります。

データスクラブおよびこの情報の解釈方法の詳細については、ZFS ファイルシステムの整合性をチェックするを参照してください。

ZFS データ破壊エラー

zpool status コマンドでは、既知のエラーが発生している場合に、それらがプールに関連するものであるかどうかも出力されます。これらのエラーは、データのスクラブ中または通常の操作中に検出されている可能性があります。ZFS では、プールに関連するすべてのデータエラーの持続的なログを管理しています。システムの完全なスクラブが終了するたびに、このログのローテーションが行われます。

データ破壊エラーは、常に致命的です。このエラーが発生している場合は、プールのデータが破壊されたために、1 つ以上のアプリケーションで入出力エラーが発生したことになります。冗長なプール内でデバイスエラーが発生してもデータは破壊されないので、このログの一部として記録されません。デフォルトでは、検出されたエラーの数だけが表示されます。エラーおよびその詳細の完全なリストは、zpool status –v オプションを使用すれば表示できます。例:

# zpool status -v system1
pool: system1
state: ONLINE
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://support.oracle.com/msg/ZFS-8000-8A
scan: scrub repaired 0 in 0h0m with 2 errors on Fri Jun 29 16:58:58 2012
config:

NAME           STATE     READ WRITE CKSUM
system1        ONLINE       2     0     0
   c8t0d0      ONLINE       0     0     0
   c8t1d0      ONLINE       2     0     0

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

/system1/file.1

同様のメッセージは、システムコンソールで fmd を実行した場合にも、また /var/adm/messages ファイルにも表示されます。fmdump コマンドを使って、これらのメッセージを追跡することもできます。

データ破壊エラーの解釈の詳細については、データ破壊の種類を確認するを参照してください。