本記事は、マイクロソフト社員によって公開されております。
こんにちは、Windows サポートチームの三浦です。
本日は、下記の 129 警告イベントの概要と本イベントが記録された際の対応方法を紹介させていただきます。
イベントの記録例
ログの名前: System
ソース: Miniport Driver Name
イベント ID: 129
説明:
デバイス \Device\RaidPort0 にリセットが発行されました。
※ ソースには、ご利用の Miniport Driver の名称が入ります。
イベントの概要
Storport Driver によるリセット要求は、通常、Storport が I/O 要求をキューに挿入した後、タイムアウト時間内に処理が完了しなかった I/O 要求が存在することを検知した場合に実行されます。
アプリケーションなどから I/O 要求が行われた場合、通常、下記のような流れで I/O が処理されます。
一般的な I/O 処理の流れ
Application
↓
File System (NTFS)
↓
Volume Manaer
↓
Disk Driver
↓
StorPort Driver
↓
Miniport Driver
↓
Hardware
I/O 要求が Miniport Driver に送信されると、Storport Driver は要求を保留キューに入れ、タイマーにタイムアウト値を設定します。
このタイマーは 1 秒に 1 回デクリメントされ、要求の完了通知を受けると、タイマーは保留キューの先頭の I/O 要求で設定されているタイムアウト値で更新されます。
そのため、I/O が問題なく処理される限り、このタイマーが 0 になることはありませんが、I/O の完了通知がタイムアウト期間内に行われない場合、タイマーが 0 まで減算されることとなります。
タイマーが 0 まで減算された場合、Storport Driver はそれを検知して 129 イベントを記録し、バス リセットの実行を行う仕組みとなっております。
従って、本イベントが記録されたタイミングでは、I/O 要求が Miniport Driver に送信された後、応答が返らない状況に陥っていたと想定できます。
このような状況は、一般的に、ストレージの高負荷やハードウェア上の問題、あるいは、ストレージまでの経路上の問題等により発生いたします。
イベントによる影響
129 イベントが記録されバス リセットが行われた場合、その後、I/O のリトライが行われます。
そのため、イベントが一時的なタイミングでのみ記録されており、かつ、実際の運用においても実害が生じていない状況であれば、リトライ処理により該当の I/O エラーはカバーされたと想定でき、実害は無いと判断が可能です。
一方、本イベントが継続して記録されるような場合や、上位のモジュール (ファイル システムやアプリケーション) でエラーが検知されている場合には、ストレージ上で問題が発生していたり経路上で要求がドロップしている可能性などが想定されるため、ストレージのハードウェア ベンダーに調査を依頼いただくことをご検討ください。
原因調査について
上述のとおり、本イベントは、一般的に、ストレージの高負荷やハードウェア上の問題等に起因して記録されるイベントとなりますので、原因調査が必要な場合は、まずは、ストレージのハードウェア ベンダーに調査を依頼いただくことをご検討ください。
また、I/O 要求のタイムアウト以外にバス リセットが行われるシナリオとして、サードパーティ製のツールなどにより、明示的にリセット要求が行われた場合が挙げられます。
バス リセットは、下記の IOCTL_STORAGE_RESET_BUS を指定することで要求が可能でございますので、サードパーティ製のディスク管理ツールなどをご利用の場合は、念のため、該当ツールが本コントロール コードを利用してバス リセットを要求している可能性が無いかについても、アプリケーション ベンダーにご確認をいただけますと幸いでございます。
IOCTL_STORAGE_RESET_BUS IOCTL (ntddstor.h)
なお、本イベントについては、下記の弊社公開情報にも詳細について記載がございますので、併せてご参照ください。
Understanding Storage Timeouts and Event 129 Errors
いかがでしたでしょうか。本投稿が少しでも皆様のお役に立てば幸いです。 本情報の内容(添付文書、リンク先などを含む)は、作成日時でのものであり、予告なく変更される場合があります。