Windows Serverがクラッシュして回避する

  

Windows Serverをクラッシュさせるには多くの方法がありますが、それらのほとんどは3つのカテゴリに分類されます。古いウイルス対策ソフトウェア、互換性のないストレージドライバ、およびフィルタドライバが多すぎる。世界の10年近くに渡る約1000件のクラッシュを分析した結果、これらがあなたが避けたい隠れた危険であることを確認することができます。

これら3つのサーバーシステムクラッシュの詳細を詳しく見て、それらを回避するための最良の方法を紹介しましょう。

アンチウイルス

これまでのところ、最も一般的なWindows Serverのクラッシュは、古いアンチウイルスソフトウェアが原因です。すべてのウイルス対策ソフトウェアは、デバイスドライバ、より具体的には「フィルタドライバ」を使用してI /O(読み取り/書き込み)要求を遮断し、追加のチェックを実行します。ウイルス対策ソフトウェアドライバは、チェックした内容を既知のウイルス定義ファイルと比較して、ウイルスが感染していないことを確認します。

フィルタドライバには、基になるカーネル関数およびオペレーティングシステムのデータ構造と相互作用するカーネルモードコードが含まれており、これらの関数およびデータ構造には、対応するデバイスドライバが呼び出されたときにレンダリングされることが予想される定義済みパラメータおよびデータが含まれます。入力してください。関数によって渡されたデータ型が正しくない場合、またはパラメータの数が正しくない場合は、カーネルモードでシステムがクラッシュする原因となるエラーが発生します。

開発者が異なるバージョンのオペレーティングシステム間でこれらのカーネル機能またはデータ構造(サービスパックの更新や新しいバージョンのオペレーティングシステムなど)を変更すると、問題が発生します。 Microsoftはすべてのオペレーティングシステムの変更との互換性についてデバイスドライバをテストするのに良い仕事をしましたが、明らかにそれらが互換性があることを確認するためにサードパーティのデバイスドライバをテストしませんでした。したがって、古いアンチウイルスドライバが誤ってこれらの変更に遭遇すると、システムがクラッシュすることになります。他のフィルタドライバもこの問題の影響を受けやすいですが、アンチウイルスドライバが最も脆弱です。

例を見てみましょう。

これはStop 0x8Eバグチェック-KERNEL_MODE_EXCEPTION_NOT_HANDLEDがあるシステムクラッシュです。 Windowsデバッガでコマンドを使用してください。 Analyze –vはそのスタックモードを表示します。下から順に読むと、NtCreateFileの関数呼び出しが表示され、最後にbuggydrvが導入されてバグチェックが行われます。オペレーティングシステムのWindows Server 2003 SP2が2007年にリリースされている間Lmi buggydrvは、ドライバの日付が2006であることを示すことができます。これで、古いバージョンのアンチウイルスドライバは新しいバージョンのオペレーティングシステムをテストしなかったことがわかりました。

nt!KeBugCheckEx + 0x1b

nt!KiDispatchException + 0x3a2

nt!CommonDispatchException + 0x4a

nt!Kei386EoiHelper + 0x186

Buggydrv + 0x13059< - システムクラッシュを引き起こすフィルタドライバ

buggydrv + 0x8390

buggydrv + 0x8809

buggydrv + 0x2940

nt!IofCallDriver + 0x45

nt!IopParseDevice + 0xa35

nt!ObpLookupObjectName + 0x5b0

nt!ObOpenObjectByName + 0xea

nt!IopCreateFile + 0x447

nt!IoCreateFile + 0xa3

nt!NtCreateFile + 0x30< - オペレーティングシステムコールCreateFile

nt!KiFastCallEntry + 0xfc

この例では、このようなシステムです。クラッシュはベンダーによって既知の問題として識別され文書化されています。そして、アンチウイルスソフトウェアの新しいバージョンはシステムクラッシュを回避するために使用することができます。実際、あなたが遭遇したWindows Serverのクラッシュの大多数は他の人に起こったことであり、それらの解決策は通常インターネット上のどこかに記録されています。したがって、Service Packの更新だけでも覚えておくことが重要です。オペレーティングシステムをアップデートする際には、対応するソフトウェアアップデートがあるかどうかをサードパーティベンダーに確認することも必要です。

ストレージドライバに互換性がない

もう1つの最も一般的なシステムクラッシュは、互換性のないストレージドライバが原因で発生します。ご存じのとおり、サードパーティのストレージベンダは、ホストバスアダプタ(HBA)を制御し、ストレージデバイスにアクセスするためのデバイスドライバを提供しています。 Qlogic、Emulex、Hewlett-Packard(HP)などのベンダは異なるデバイスドライバを持っていますが、それらはすべてマイクロソフトのStorportドライバに依存しています。 Storportドライバは、入出力操作を実行するために特定のベンダのドライバによって使用される共通のプログラムセットを提供します。

この問題は、ウイルス対策ソフトウェアドライバの非互換性と同様の方法で発生します。ベンダーが専用ドライバを変更するときは、現在のバージョンのStorportを使用して再テストし、互換性があることを確認する必要があります。同様に、Storportバージョンを更新するときは、すべてのHBAドライバをテストして、新しいStorportドライバとの互換性を確保する必要があります。 Windows Server 2003では、Storport用に50を超えるパッチを検討する必要がある場合、これは実際の課題です。

Storportドライバを更新する前に、HBAドライバに対応する更新があるかどうか、またその逆の場合は、サードパーティベンダに確認してください。どのストレージドライバがStorportに依存しているかを知るにはどうすればよいですか?幸いなことに、ドライバ間の依存関係を明らかにするDependency Walker(depends.exe)という無料のツールがあります。

ダウンロードして解凍したら、depends.exeを実行し、ファイルのドロップダウンメニューを使用して目的のドライバを選択します。この例では、HPのディスクアレイに適用されるドライバHpcisss2.sysを選択しました。あなたは以下を参照することができますように、とのStorport.sysのNtoskrnl.exe。

過度のフィルタドライバのドライバはHpcisss2依存ツールが表示され、

第三の最も一般的なのWindows Serverクラッシュの種類は、インストールされているケアドライバが多すぎる場合のスタックオーバーフロー状態に関連しています。 I /O要求を傍受して追加機能を実行できるドライバはすべて、フィルタドライバと見なされます。ウイルス対策ドライバがフィルタドライバであることは既にわかっています。他にも、ディスククォータ管理、ディスクミラーリング、バックアップエージェントなどのドライバがあります。

複数のフィルタドライバをインストールすること自体は問題ではありませんが、これらのドライバが再帰的に呼び出して、限られたカーネルスタックスペースを使い果たすと状況が変わります。コンピュータアーキテクチャ(x86 = 12 KB、x 64 = 24 KB)によれば、すべてのデバイスドライバが使用するカーネルスタックスペースは限られており、カーネルスタックスペースが使い果たされると、Stop 0x7Fバグチェックによりシステムがクラッシュします。何百ものMicrosoftの文書の説明と同じように

より多くのケアドライバを収容するために追加のカーネルスタックスペースを提供する方法はありません唯一のオプションはこれらのフィルタドライバを特定することです。あなたがインストールされたフィルタドライバ

図II :. fLTMCツール

ご覧のとおり、Windows Serverがクラッシュするのには多くの理由がありますが、ほとんどの場合、サーバーのダウンタイムは上記の理由によって引き起こされます。オペレーティングシステムまたは関連する修正プログラムを更新しながら、サードパーティのドライバーを更新して未使用のフィルタードライバーの数を制限します。

Copyright © Windowsの知識 All Rights Reserved