3.8. エラー動作の設定

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

3.8.1. 特定の条件と不確定の条件の設定ファイル

エラーの動作を制御する設定ファイルは、/sys/fs/xfs/device/error/ ディレクトリーに位置しています。
/sys/fs/xfs/device/error/metadata/ ディレクトリーには、各固有のエラー条件のサブディレクトリーが含まれます。
  • EIO エラー条件用の /sys/fs/xfs/device/error/metadata/EIO/
  • ENODEV エラー条件用の /sys/fs/xfs/device/error/metadata/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/default/max_retries: 再試行の最大数を制御
  • /sys/fs/xfs/device/error/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/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/default/retry_timeout_seconds
value は、-1 から 86400 までの数値です。これは、1 日の秒数です。
max_retriesretry_timeout_seconds オプションでは両方とも、-1 が永続を意味し、0 がただちに停止を意味します。
device はデバイスの名前です。これは、/dev/ ディレクトリーにあり、たとえば sda がこれにあたります。

注記

各エラー条件のデフォルトの動作は、エラーコンテキストによって異なります。ENODEV のようなエラーは、試行回数に関係なく、致命的で回復不可として考慮されます。そのため、これらのデフォルト値は 0 です。

3.8.3. マウント解除動作の設定

fail_at_unmount オプションを設定している場合、ファイルシステムはマウント解除の際にその他すべての設定を上書きし、I/O 操作を再試行することなく、ファイルシステムのマウントをすぐに解除します。これにより、永続エラーが発生した場合でも、マウント解除操作を成功させることができます。
マウント解除動作の設定方法:
# echo value > /sys/fs/xfs/device/error/fail_at_unmount
value0 または 1 のいずれかです。
  • 1 は、エラーが見つかった場合にすぐに再試行をキャンセルすることを意味します。
  • 0max_retriesretry_timeout_seconds オプションを順守することを意味します。
device はデバイスの名前です。これは、/dev/ ディレクトリーにあり、たとえば sda がこれにあたります。

重要

fail_at_unmount オプションは、ファイルシステムのマウント解除試行を行う前に、設定を行う必要があります。マウント解除操作が始まると、設定ファイルやディレクトリーは利用できなくなります。