Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.8. エラー動作の設定

I/O 操作中にエラーが発生すると、XFS ドライバーは、以下の 2 つの方法のいずれかで応答します。
  • 以下のいずれかになるまで再試行を続行します。
    • I/O 操作が成功するか、または
    • I/O 操作の再試行回数または時間制限を超えた場合
  • エラーが永続化し、システムが停止することを考慮してください。
XFS は、現在、必要な動作を特別に設定できる以下のエラー条件を認識しています。
  • EIO : デバイスへの書き込み中にエラーが発生しました
  • ENOSPC : デバイスに空き領域がありません
  • ENODEV : デバイスが見つかりません
特定のハンドラーが定義されていない他のすべての考えられるエラー条件は、単一のグローバル設定を共有します。
XFS がエラーを永続的と見なす条件を、再試行の最大数と最大秒数の両方で設定できます。いずれかの条件が満たされると、XFS は再試行を停止します。
ファイルシステムのマウントを解除すると、その他の設定に関係なく、再試行をすぐにキャンセルするオプションもあります。これにより、永続的なエラーが発生した場合でも、マウント解除操作を成功できます。

3.8.1. 特定の条件および定義されていない条件の設定ファイル

エラー動作を制御する設定ファイルは 、/sys/fs/xfs/device/error/ ディレクトリーにあります。
/sys/fs/xfs/device/error/metadata/ ディレクトリーには、特定のエラー状態ごとにサブディレクトリーが含まれています。
  • /sys/fs/xfs/device/error/metadata/EIO/ (EIO エラー状態の場合)
  • /sys/fs/xfs/device/error/metadata/ENODEV/ (ENODEV エラー状態の場合)
  • ENOSPC エラー状態の場合は 、/sys/fs/xfs/device/error/metadata/ENOSPC/
各設定ファイルには、以下の設定ファイルが含まれます。
  • /sys/fs/xfs/device/error/metadata/condition/max_retries : XFS が操作を再試行する最大回数を制御します。
  • /sys/fs/xfs/device/error/metadata/condition/retry_timeout_seconds : XFS が操作の再試行を停止するまでの時間制限 (秒単位)
前のセクションで説明したものを除いて、他のすべての考えられるエラー状態は、これらのファイルで共通の設定を共有しています。
  • /sys/fs/xfs/device/error/metadata/default/max_retries : 最大再試行数を制御します
  • /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds : 再試行の時間制限を制御します

3.8.2. 特定かつ未定義の条件に対するファイルシステムの動作の設定

最大再試行回数を設定するには、max_retries ファイルに希望の回数を書き込みます。
  • 特定の条件の場合:
    # echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries
  • 未定義の条件の場合:
    # echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
value は-1 から C の符号付き整数型である int の最大値までの数値です。これは、64 ビット Linux では 2147483647 です。
時間制限を設定するには、必要な秒数を retry_timeout_seconds ファイルに書き込みます。
  • 特定の条件の場合:
    # echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_seconds
  • 未定義の条件の場合:
    # echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds
value-1 から 86400 までの数値で、1 日の秒数です。
max_retries オプションretry_timeout_seconds オプションの両方で、-1 は 永久に再試行することを意味し、0 はすぐに停止することを意味します。
device は/dev/ ディレクトリーにあるデバイスの名前です。たとえば、sda
注記
それぞれのエラー状態のデフォルトの動作は、エラーコンテキストによって異なります。ENODEV などの一部のエラーは、再試行回数に関係なく、致命的で回復不可能であると見なされるため、デフォルト値は 0 です。

3.8.3. アンマウント動作の設定

failed_at_unmount オプションが設定されている場合、ファイルシステムはアンマウント中に他のすべてのエラー設定を上書きし、I/O 操作を再試行せずにただちにファイルシステムをマウント解除します。これにより、永続的なエラーが発生した場合でも、マウント解除操作を成功できます。
アンマウント動作を設定するには、以下を実行します。
# echo value > /sys/fs/xfs/device/error/fail_at_unmount
値は1 または 0 のいずれかです。
  • 1 は、 エラーが見つかった場合にすぐに再試行をキャンセルすることを意味します。
  • 0 は、 max_retries オプションretry_timeout_seconds オプションを尊重することを意味します。
device は/dev/ ディレクトリーにあるデバイスの名前です。たとえば、sda
重要
ファイルシステムをアンマウントする前に、fail_at_unmount オプションを必要に応じて設定する必要があります。マウント解除操作が開始されると、設定ファイルおよびディレクトリーが利用できなくなる可能性があります。