Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

RHEL 5 で Emulex/LPFC ドライバーを使用した 0x000d0000 (DID_REQUEUE) SCSI エラー

Solution Verified - Updated -

Environment

  • RHEL5.5 を含む RHEL 5 バージョン
  • RHEL 5.6 以降および RHEL6 は 影響しません
  • Red Hat ドライバーがある Emulex/LPFC HBA
  • device-mapper-multipath (必須ではありませんが、この現象は multipath では深刻な問題です)

Issue

次の SCSI エラーメッセージがしばしば syslog に表示されます。これは、一度フェイルオーバーになり、その後すぐに元に戻るためにパスが失われることを示しています。

    Oct 23 06:07:40 somekernel kernel: sd 5:0:1:32:SCSI error: return code = 0x000d0000
    Oct 23 06:07:40 somekernel kernel: end_request:I/O error, dev sdcv, sector 2556879
    Oct 23 06:07:40 somekernel kernel: device-mapper: multipath:Failing path 70:48.
    ... one device-mapper-multipth path_checker interval later ...
    Oct 23 06:07:49 somekernel multipathd: sdcv: readsector0 checker reports path is up 
    Oct 23 06:07:49 somekernel multipathd:70:48: reinstated
  • 以下のセクションに一覧表示されているコマンドを使用して、Emulex HBA エラー統計を実行します。
  • Bug 627836 がRHEL5.6 を変更するために上げられました。そのため、dm-multipath を使用しているときは、ファーストフェイルではなく DID_REQUEUE をリトライしてください。これによって、大部分のサポートケースの症状が解決されます。

Resolution

RHEL5.6 以降までアップグレードすることをお勧めします。

この解決策は、複数のお客様によって実証されています。この問題は RHEL5.6 では発生しなくなりました。
RHEL 5.6 のパッチでは、DID_REQUEUE SCSI エラーで失敗する I/O をリトライする現象を処理しています。
RHEL5.6 以前では、エラーをファーストフェイルします。

このエラーは、device-mapper-multipath フェイルオーバーになります。基本的な原因は、LPFC ドライバー/ファームウェアのレイヤーで断続的なので、通常、問題はリトライで解決します。ファストフェイルよりもリトライの方が、現象が解決されます。これは、不必要で問題のある device-mapper-multipath フェイルオーバー/フェイルバックのサイクルが避けられるためです。

Root Cause

この現象の原因は複数 (最低 2 つ) あります。

  • LPFC ドライバー/ファームウェアが I/O を処理するのに失敗し、再度キューに並ぶことを要求しました。これが発生する正確な理由は不明ですが、通常は I/O 負荷が高くなったときにファームウェアまたはハードウェアレベルでリソース制限がされれる為だと推測されます。この現象は、通常、I/O リクエストのリトライによって解消されています。

  • fibre-channel プロトコルフレームエラーが発生しました。通常、この現象は断続的に発生する為、リトライで問題を回避できます。原因は、おそらくハードウェアに関連しています。ファイバーチャンネルケーブルを確認してテストする必要があります。これが原因になっている場合は、1 つ以上の Emulex HBA エラーカウンターの統計に関するゼロ以外のカウンターがあります。これは、以下のコマンドで調べることができます。

 cat /sys/class/fc_host/host*/statistics/{error_frames,invalid_*}

Diagnostic Steps

1./var/log/messages を確認してください。

    Oct 23 06:07:40 somekernel kernel: sd 5:0:1:32:SCSI error: return code = 0x000d0000
    Oct 23 06:07:40 somekernel kernel: end_request:I/O error, dev sdcv, sector 2556879
    Oct 23 06:07:40 somekernel kernel: device-mapper: multipath:Failing path 70:48.
    ... one device-mapper-multipth path_checker interval later ...
    Oct 23 06:07:49 somekernel multipathd: sdcv: readsector0 checker reports path is up 
    Oct 23 06:07:49 somekernel multipathd:70:48: reinstated

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments