データの破損とディスク エラーは、ドライブへのアクセスに関する問題、ドライブの破損、パフォーマンスの低下など、さまざまな領域に対応しています。
次のイベント ID は、データの破損またはディスク エラーがあることを示しています。
イベント ID 153
ディスク 2 の論理ブロック アドレス 123456での IO 操作が再試行されました。
イベント ID 129
デバイス \Device\RaidPort1 にリセットが発行されました。
イベント ID 157
ディスク 2 が突然削除されました。
イベント ID 55
ディスク上のファイル システム構造が破損しており、使用できません。 ボリュームで chkdsk ユーティリティを実行してください。
イベント ID 98
ボリューム C: (\Device\HarddiskVolume3) をオフラインにして、フル Chkdsk を実行する必要があります。 コマンド ラインで "CHKDSK /F" をローカルで実行するか、PowerShell を使用してローカルまたはリモートで "REPAIR-VOLUME <drive:>" を実行してください。
トラブルシューティングのチェックリスト
Note
この記事では、管理者特権でのコマンド プロンプトで実行する必要があるコマンドについて説明します。
システム イベント ログで、New Technology File System (NTFS) とディスク関連の警告とエラーを検索します。 たとえば、イベント ID 55、153、98 などです。
chkdsk /scan
コマンドを実行し、その結果をチェックします。Note
chkdsk /scan
コマンドは読み取り専用です。次のコマンドを実行して、ドライブに対して NTFS 固有のボリューム情報を照会します。
fsutil fsinfo ntfsinfo <rootpath>:
Note
プレースホルダー <rootpath> は、ルート ドライブのドライブ文字を表します。
fsutil dirty query <volumepath>:
コマンドを実行して、ボリュームがダーティかどうかを確認します。Note
プレースホルダー <volumepath> はドライブ文字を表します。
ファイル システムが NTFS であるボリュームの場合は、ボリュームがダーティであれば
chkdsk /f /r
コマンドを実行します。 ディスクにアクセスできなくなるため、chkdsk /F /R
コマンドにはダウンタイムが必要です。ファイル システムが Resilient File System (ReFS) であるボリュームの場合、ディスクの破損は自動的に修復されます。
"chkdsk" ユーティリティでディスク エラーが修正されない場合は、バックアップから復元を実行します。
ストレージの検証を実行して、ストレージに関連するエラーが発生しているかどうかを確認します。
クラスターからディスクを削除し、オペレーティング システムのレベルを確認してください。
イベントがログに記録されているすべてのボリュームで
chkdsk /f
コマンドを実行します。サード パーティのストレージ ドライバーやファームウェアを更新します。
問題が解決しない場合は、次の方法を試してください。
サード パーティ製ディスク管理ソフトウェア (Diskeeper など) をすべてアンインストールします。
フィルター ドライバーを削除または更新します。
ハードウェアの問題でないことを確認するため、ハードウェア ベンダーに問い合わせ、ハードウェア診断を実行します。
ストレージ ベンダーに問い合わせて、マルチパス構成を確認してください。
SCSI ポートまたは RAID コントローラー ドライバーを更新します。
異なる種類のドライバーに切り替えてみてください。 たとえば、RAID コントローラー ドライバーやモノリシック ドライバーなどです。
ホスト バス アダプター (HBA) ドライバーを更新します。
デバイス固有モジュール (DSM) のマルチパス ドライバーを更新します。
HBA ファームウェアを更新します。
イベント ID 153 のトラブルシューティング
イベント ID 153 は、ストレージ サブシステムにエラーがあることを示します。 イベント ID 153 はイベント ID 129 に似ていますが、2 つのイベントの違いは、イベント ID 129 は Storport ドライバーがディスクへの要求をタイムアウトしたときにログに記録され、イベント ID 153 は Storport ミニポート ドライバーが要求をタイムアウトしたときにログに記録される点です。 ミニポート ドライバーは、アダプター ドライバーまたは HBA ドライバーと呼ばれることもあります。これは通常、ハードウェア ベンダーによって記述されます。
イベント ID 153 またはイベント ID 129 がログに記録されている場合、ストレージ コントローラーが負荷を処理できないため、ディスク I/O タイムアウトが一般的な原因です。 この場合、I/O 操作がタイムアウトし、ミニポート ドライバー (ベンダーから) が Storport ドライバー (スタック内の最後の Microsoft ストレージ ドライバー) にメッセージを返します。 次に、Storport ドライバーは情報を変換し、イベントをイベント ビューアーに記録します。
ミニポート ドライバーには要求の実行環境に関する十分な知識があるため、一部のミニポート ドライバーは、Storport ドライバーが要求のタイミングを処理するのではなく、要求自体を時間がかかります。 ミニポート ドライバーは個々の要求を中止し、エラーを返すことができますが、Storport ドライバーはタイムアウト後にドライブをリセットします。 ドライブをリセットすると、I/O サブシステムが中断され、1 つの要求のみがタイムアウトした場合は必要ない場合があります。ミニポート ドライバーは、イベント ID 153 をログに記録し、要求を再試行するクラス ドライバーにエラーを返します。
イベント ID 153 の例を次に示します。
Log Name: System
Source: disk
Event ID: 153
Level: Warning
Description: The IO operation at logical block address 123456 for Disk 2 was retried.
このイベントは、要求が失敗し、クラス ドライバーによって再試行されたことを示します。 Storport ドライバーが要求をタイムアウトできなかったため、この状況ではエラー メッセージは記録されませんでした。 エラーの証拠がないため、ディスク エラーのトラブルシューティング時にメッセージが不足したため、混乱が生じた。
イベント ログの [ Details ] タブには、再試行の原因となったエラーと、要求が読み取り要求と書き込み要求のどちらであったかを示す詳細情報が表示されます。 例えば次が挙げられます。
0000: 0004010F 002C0003 00000000 80040099
0010: 00000000 00000000 00000000 00000000
0020: 00000000 00000000 28090000
in bytes
0000: 0F 01 04 00 03 00 2C 00 ......,.
0008: 00 00 00 00 99 00 04 80 ......
0010: 00 00 00 00 00 00 00 00 ........
0018: 00 00 00 00 00 00 00 00 ........
0020: 00 00 00 00 00 00 00 00 ........
0028: 00 00 09 28 ...*
この例では、バイト オフセット 29
は SCSI 状態を示し、バイト オフセット 30
は再試行の原因となった SCSI 要求ブロック (SRB) の状態を示し、バイト オフセット 31
は再試行中の SCSI コマンドを示しています。 この場合、SCSI ステータスは 00
(SCSISTAT_GOOD
)、SRB ステータスが 09
(SRB_STATUS_TIMEOUT
)、SCSI コマンドが 28
(SCSIOP_READ
) です。
最も一般的な SCSI コマンドを次に示します。
SCSIOP_READ - 0x28
SCSIOP_WRITE - 0x2A
SCSI 操作と状態の一覧については、 scsi.h を参照してください。
最も一般的な SRB 状態を次に示します。
SRB_STATUS_TIMEOUT - 0x09
SRB_STATUS_BUS_RESET - 0x0E
SRB_STATUS_COMMAND_TIMEOUT - 0x0B
SRB 状態の一覧については、 srb.h を参照してください。
Note
タイムアウト エラー (
SRB_STATUS_TIMEOUT
またはSRB_STATUS_COMMAND_TIMEOUT
) は、要求がアダプターでタイムアウトしたことを示します。 要求がドライブに送信され、タイムアウト期間内に応答がありませんでした。バス リセット エラー (
SRB_STATUS_BUS_RESET
) は、ドライブがリセットを受け取ると、不完全な要求がすべて中止されるため、デバイスがリセットされ、要求が再試行されていることを示します。
管理者は、ディスク サブシステムの正常性を確認する必要があります。 タイムアウトがシステムの通常の操作の一部である場合もありますが、頻繁な再試行要求は、修正する必要があるストレージのパフォーマンスの問題を示しています。
詳細
通常、この問題はオペレーティング システムの外部にあるため、次の一般的な原因を確認してください。
I/O の制限など、一部の種類の調整が構成されています。 VMware のストレージ I/O コントロールによって、この問題が発生することがあります。
負荷が高いドライブの数が多すぎると、同じストレージ コントローラー上にあります。 そのため、ドライブは異なるコントローラー間で分割する必要があります。
マルチパス I/O (MPIO) が構成されている場合、1 本のケーブルまたは NIC が破損すると、iSCSI に問題が発生する可能性があります。
イベント ID のトラブルシューティング 129
イベント ID 129 は、ソースとしてのストレージ アダプター (HBA) ドライバーの名前でログに記録されます。 Storport ドライバー (Storport.sys) は、要求がタイムアウトしたことを検出すると、このイベントをログに記録します。HBA ドライバーの名前は、Storport ドライバーに関連付けられているミニポート ドライバーであるため、イベントで使用されます。
イベント ID 129 の例を次に示します。
Event Type: Warning
Event Source: <HBA_Name>
Event Category: None
Event ID: 129
Computer: <Computer_Name>
Description: Reset to device, \Device\RaidPort1, was issued.
Windows I/O スタック アーキテクチャに関する情報
Windows I/O 操作では、デバイス ドライバーがデバイス スタック上にある階層型アーキテクチャを使用します。 基本的なモデルでは、スタックの一番上にファイル システムがあります。 次に、ボリューム マネージャーとディスク ドライバーが続きます。 ポートとミニポート ドライバーは、デバイス スタックの下部にあります。 I/O 要求がファイル システムに到達すると、ファイルのブロック番号がボリュームのオフセットに変換されます。 次に、ボリューム マネージャーは、ボリューム オフセットをディスク上のブロック番号に変換し、ディスク ドライバーに要求を渡します。 要求がディスク ドライバーに到達すると、コマンド記述子ブロック (CDB) が作成され、SCSI デバイスに送信されます。 ディスク ドライバーは、SCSI_REQUEST_BLOCK (SRB) 構造体に CDB を埋め込みます。 この SRB は、I/O 要求パケット (IRP) の一部としてポート ドライバーに送信されます。
ポート ドライバーによって、要求処理の大部分が実行されます。 ポート ドライバーはアーキテクチャによって異なります。 たとえば、ATA ポート ドライバー (Ataport.sys) と SCSI ポート ドライバー (Storport.sys)。 ポート ドライバーの役割を次に示します。
要求のタイミング サービスの提供
キューの深さを適用して、デバイスが処理できるよりも多くの要求を持たないようにする
データ バッファーの "散布図" 配列と "収集" 配列の構築
ポート ドライバーはミニポート ドライバーとインターフェイスし、ミニポート ドライバーは、特定のアダプターを操作するハードウェア ベンダーによって設計されています。 ポート ドライバーから要求を受け取り、ターゲット論理ユニット番号 (LUN) に送信する必要があります。 ポート ドライバーは、ミニポート ドライバーに要求を送信する HwStorStartIo()
関数を呼び出します。ミニポート ドライバーは、物理メディア (ファイバーまたはイーサネット) 経由で LUN に送信できるように、HBA ドライバーに要求を送信します。 要求が完了すると、ミニポート ドライバーは、完了した SRB へのポインターと共に、RequestComplete
に設定された値を持つNotificationType
パラメーターを持つStorPortNotification()
関数を呼び出します。
要求がミニポート ドライバーに送信されると、Storport ドライバーは保留中のキューに要求を配置し、期限が設定されます。 要求が完了すると、このキューから削除されます。
時間測定のメカニズムはシンプルです。 論理ユニットごとに 1 つのタイマーがあり、 -1
に初期化されます。 最初の要求がミニポート ドライバーに送信されると、タイマーは SRB のタイムアウト値に設定されます。 ディスク タイムアウト値は、次のレジストリ キーの下にある調整可能なパラメーターです。
HKLM\System\CurrentControlSet\Services\Disk\TimeOutValue
一部のハードウェア ベンダーは、ハードウェアに最も合わせてこの値を調整します。 ストレージ ベンダーからのガイダンスなしでこの値を変更しないでください。
タイマーは 1 秒に 1 回デクリメントされます。 要求が完了すると、保留中のキューのヘッド要求のタイムアウト値でタイマーが更新されます。 したがって、要求が完了している限り、タイマーは 0 になることはありません。 タイマーがゼロになった場合は、デバイスが応答を停止したことを意味します。 たとえば、Storport ドライバーがイベント ID 129 をログに記録する場合、Storport ドライバーはユニットをリセットしようとすることによって是正措置を取る必要があります。 ユニットがリセットされると、不完全なすべての要求がエラーで完了し、再試行されます。 保留中のキューがクリアされると、タイマーは初期値である -1
に設定されます。
各 SRB にタイマー値が設定されています。 要求が完了すると、キュー タイマーはリストの先頭にある SRB のタイムアウト値で更新されます。
イベント ID 129 の最も一般的な原因は、応答しない LUN または破棄された要求です。 破棄された要求は、障害のあるルーターまたは記憶域ネットワーク (SAN) 上のその他のハードウェアの問題によって発生する可能性があります。
イベント ID のトラブルシューティング 157
このイベントは、 Classpnp.sys ドライバーが、リムーバブル ディスク以外のプラグ アンド プレイ マネージャー (PNP) から突然の削除要求を受信したことを示します。
ほとんどの場合、この問題は、SAN ファブリック エラーや SCSI バスの問題など、システムとディスクとの通信が中断された場合に発生します。 エラーは、障害が発生したディスクや、システムの実行中にユーザーがディスクを取り外した場合にも発生する可能性があります。 この場合、管理者はディスク サブシステムのヒートを確認する必要があります。
イベント ID 55 と 98 のトラブルシューティング
イベント ID 55、50、140、98 などの NTFS イベントがログに記録されている場合は、"chkdsk" ユーティリティを実行する必要があります。
このような場合、NTFS がトランザクション ログにデータを書き込むことができていないため、トランザクション データの書き込みができなかった操作を停止またはロールバックする NTFS の機能に影響する可能性があります。
イベント ID 55 の例を次に示します。
Event Type: Error
Event Source: NTFS
Event ID: 55
Description: The file system structure on the disk is corrupt and unusable. Please run the chkdsk utility on the volume.
通常、ファイル システムの破損が発生すると、イベント ID 55 がログに記録されます。 ファイル システムの破損は、次の 1 つ以上の問題が発生したときに発生します。
ディスクに不良セクターがあります。
ファイル システムによってディスク サブシステムに配信された I/O 要求が正常に完了しません。
ほとんどの問題はハードウェア関連であり、ハードウェアが予期せず破損する可能性があります。 次の方法を試して問題を解決できます。
SCSI ポートまたは RAID コントローラー ドライバーを更新します。
フィルター ドライバーを削除または更新します。
サード パーティのストレージ ドライバーやファームウェアを更新します。
異なる種類のドライバーに切り替えてみてください。 たとえば、RAID コントローラー ドライバーやモノリシック ドライバーなどです。
ハードウェアをさまざまな組み合わせに再配置します。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。