SMB のトラブルシューティング ガイダンス

仮想エージェントを試す - 一般的な SMB の問題をすばやく特定して修正するのに役立ちます。

この記事は、サーバー メッセージ ブロック (SMB) の問題のトラブルシューティングに役立つよう設計されています。 ほとんどのユーザーは、ここで提供されているソリューションを使用して問題を解決できます。

SMB 用語

正しい用語の伝達は、品質の SMB トラブルシューティングの重要な側面です。 そのため、データ収集と分析の精度を確保するために、基本的な SMB 用語を学習する必要があります。

  • SMB サーバー (SRV) (ファイル サーバーとも呼ばれます) は、常にファイル システムをホストするシステムです。
  • SMB クライアント (CLI) は、常にファイル システムへのアクセスを試みるシステムです。

これらの用語は、オペレーティング システムのバージョンまたはエディションに関係なく一貫性があります。 たとえば、Windows Server 2016 ベースのコンピューターが、Windows 10 ベースのコンピューター上の SMB 共有 \\MyWorkstation\Data に到達しようとすると、Windows Server 2016は SMB クライアントであり、Windows 10は SMB サーバーです。

トラブルシューティング チェックリスト

  • 正しい SMB ネットワーク プロトコルがインストールされていることを確認します。 SMBv1 ネットワーク プロトコルは既定ではインストールされなくなりました。
  • SMBv1 を無効にします
  • SMBv1 のみをサポートするデバイスで SMBv1 が無効になっている場合、そのデバイスにアクセスできません。 このような場合は、システムをアップグレードします。
  • これらのバージョンは同じドライバーの一部であるため、SMBv2 または SMBv3 を個別に無効にすることはできません。
  • トラフィックの分析: SMB は、ネットワーク トランスポート プロトコルとして TCP/IP を使用するアプリケーション レベルのプロトコルです。 したがって、SMB 関連の問題は、基になる TCP/IP 関連の問題があることを示している可能性があります。
  • プロトコルの分析: 使用されている正確なコマンドとオプションを理解するには、ネットワーク トレースの実際の SMB プロトコルの詳細を確認します。
  • SMB 関連のシステム ファイルを更新する: システム ファイルを更新したままにします。 最新の 更新プログラムのロールアップ がインストールされていることを確認します。

SMB ファイル情報

%windir%\system32\Drivers の下に一覧表示されている SMB クライアント バイナリ:

  • RDBSS.sys
  • MRXSMB.sys
  • MRXSMB10.sys
  • MRXSMB20.sys
  • MUP.sys
  • SMBdirect.sys

%windir%\system32 の下に一覧表示される SMB サーバー バイナリ:

  • Srvsvc.dll

%windir%\system32\Drivers の下に一覧表示されている SMB サーバー バイナリ:

  • SRVNET.sys
  • SRV.sys
  • SRV2.sys
  • SMBdirect.sys

SMB の問題をトラブルシューティングする前に、次のコンポーネントを更新することをお勧めします。

  • iSCSI: ファイル サーバーにはファイル ストレージが必要です。 ストレージに iSCSI コンポーネントがある場合は、それらのコンポーネントを更新します。
  • ネットワーク: ネットワーク コンポーネントを更新します。
  • Windows Core: パフォーマンスと安定性を向上させるには、Windows Core を更新します。

ローカル コンピューターからすべての共有リソースを切断する

コマンドを Net Use * /delete 使用して、ローカル コンピューター上のアクティブな共有リソースまたは記憶されている共有リソースを切断できます。

注:

このコマンドは、リモート コンピューターでも使用できます。 その他のオプションを実行 Net help use します。

重要

この記事のこのセクションは、コミュニティ コンテンツに基づいています。

Community ソリューション コンテンツの免責事項

Microsoft の企業および/またはそれぞれのサプライヤーは、ここに含まれる情報および関連するグラフィックスの適合性、信頼性、または正確性について何ら表明を行いません。 このような情報および関連するグラフィックスはすべて、いかなる種類の保証も行わずに「as is」 で提供されます。 Microsoft および/またはそれぞれのサプライヤーは、この情報および関連グラフィックに関して、商品性、特定の目的に対する適性、作業マンライクな努力、タイトルおよび非侵害に関する黙示の保証と条件を含む、すべての保証および条件を放棄します。 お客様は、いかなる場合も、Microsoft および/またはサプライヤーが直接、または 間接的、懲罰的、偶発的、特別な、結果的な損害、または、Microsoft またはサプライヤーが損害の可能性について助言を受けた場合でも、契約、不法、過失、厳格な責任など、ここに含まれる情報および関連するグラフィックの使用または使用に関連する、または使用できない方法に関連するいかなる方法であれ、使用の損失、データまたは利益に対する損害を含むがこれらに限定されない損害。

共通の問題と解決策

Scale-Out ファイル サーバーにアクセスすると、パフォーマンスが制限されます

クライアント アクセス ネットワークでは、高速リモート ダイレクト メモリ アクセス (RDMA) が使用されますが、クラスター ネットワークでは使用されません。 この動作により、リダイレクトはクラスター ネットワークでのみ行われます。 クラスター ネットワークは通常、1 GbE ネットワーク アダプターに接続します。

この問題をトラブルシューティングするには、クラスター共有ボリューム (CSV) のクライアント アクセス ネットワークを使用するようにオプションを構成できます。 または、Windows Server 2012 R2 以降のバージョンにアップグレードします。 そのシステムは、ファイル共有のボリュームに最適なアクセス権を持つクラスター ノードにクライアントを自動的にリダイレクトします。 詳細については、次のブログ アーカイブの記事を参照してください。自動 SMB Scale-Out R2 での再調整Windows Server 2012

SMB は、仮想ネットワーク アダプターよりも低速の物理ネットワーク アダプターを優先します

ホスト上の仮想ネットワーク アダプターは RSS 対応ではありません。 物理ネットワーク アダプターは RSS 対応です。 SMB では、RSS ネットワーク アダプターの速度が遅い場合でも、RSS 以外のネットワーク アダプターではなく、常に RSS 対応ネットワーク アダプターが使用されます。

この問題をトラブルシューティングするには、物理ネットワーク アダプターで RSS 機能を無効にするか、SMB マルチチャネル制約を使用して SMB 通信を 1 つ以上の定義されたネットワーク インターフェイスに制限します。 詳細については、Windows PowerShellの New-SmbMultichannelConstraint SMB Share コマンドレットに関するページを参照してください。

SMB は、ネットワーク アダプターが RDMA 対応でないと報告します。

この問題は、古いドライバーまたはファームウェアを持つ RDMA 対応ネットワーク アダプターが RDMA 対応として正しく識別されない可能性があるために発生します。

この問題のトラブルシューティングを行うには、製造元の Web サイトからネットワーク アダプターのファームウェアとドライバーを更新します。

SMB マルチチャネルの開始前に必要なネットワーク トラフィック量は異なります

SMB マルチチャネル機能は、ネットワーク アダプターの RSS および RDMA 機能を検出するために使用されます。 サーバー オペレーティング システムでは、SMB マルチチャネルは、最初の読み取りまたは書き込み操作が発生すると開始されます。 クライアント オペレーティング システムでは、一定量のネットワーク トラフィックが発生するまで SMB マルチチャネルは開始されません。

サーバー オペレーティング システムでは、SMB マルチチャネルはセッションごとに 1 回だけ迅速に開始します。 クライアント オペレーティング システムでは、SMB マルチチャネルをより迅速に起動するようにレジストリ エントリを構成できます。 詳細については、次のブログアーカイブのブログ記事を参照してください。 マルチチャネルが実際に開始される前に SMB クライアントとサーバー間でトラフィックを渡す必要があるトラフィックの量

SMB マルチチャネルが複数の 10 GbE ネットワーク アダプターを集約しない

RSS 対応の 10 GbE ネットワーク アダプターは、RSS 対応でないと識別される場合があります。 この問題が発生した場合、SMB は 1 つの TCP 接続のみを使用します。 SMB マルチチャネルで RSS 対応ネットワーク アダプターと非 RSS ネットワーク アダプターの両方を使用する場合は、RSS 対応ネットワーク アダプターのみを使用する必要があります。

サーバー クラスのネットワーク アダプターは、RSS 対応として表示する必要があります。 そうでない場合は、製造元の Web サイトからネットワーク アダプター ドライバーを更新し、RSS 設定を再確認します。

スループットを集計するには、両方のネットワーク アダプターで RSS を無効にする必要がある場合があります。 詳細については、次のブログ アーカイブのブログ記事を参照してください。 Windows Server 2012 ファイル サーバーヒント: ネットワーク インターフェイスが RSS 対応であることを確認してください

ホスト上の仮想ネットワーク アダプターのパフォーマンスが良好ではない

ホスト上の仮想ネットワーク アダプターは RSS 対応ではありません。 RSS 対応ネットワーク アダプターがない場合、SMB は 1 つの TCP 接続のみを使用します。 この動作は、10 GbE ネットワーク アダプター、RSS 対応ネットワーク アダプター、NIC チーミングを使用する場合に発生します。

この問題のトラブルシューティングを行うには、複数の仮想ネットワーク アダプターを使用して、複数の TCP 接続があることを確認します。 詳細については、次のブログ アーカイブのブログ記事を参照してください。 Windows Server 2012 ファイル サーバーヒント: ネットワーク インターフェイスが RSS 対応であることを確認してください

Windows Server 2012 R2 は SMBClient イベント ID 30818 を定期的にログに記録します

Windows Server 2012 R2 ベースのコンピューターで InfiniBand ネットワーク アダプターが使用されているとします。 このアダプターは、SMB ダイレクト機能を使用して、クラスター ノードと Hyper-V ホスト間のリモート ダイレクト メモリ アクセス (RDMA) 通信をサポートします。 Hyper-V ホストを再起動した後、Windows は、イベント ビューアーのアプリケーションとサービス ログ/Microsoft/Windows/SmbClient パスの下にイベント ID 30818 を記録する可能性があります。 これが発生すると、パフォーマンスの問題が発生する可能性もあります。

R2 Windows Server 2012では、LanmanServer サービスによって SmbDirect サービスが自動的に開始されます。 ただし、LanmanWorkstation サービスが最初に開始され、SmbDirect サービスが読み込まれる前に RDMA 接続を開こうとした場合、Windows はイベント ID 30818 をログに記録します。 クライアントは、最初に TCP/IP 経由でサーバーと通信するときに、RDMA インターフェイスを使用します。 そのため、回復にユーザー アクションは必要ありません。

Microsoft では、将来のバージョンの Windows Server でこの問題の解決策を提供することを検討しています。

回避策

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護のために、レジストリを変更する前にレジストリをバックアップして、問題が発生した場合にレジストリを復元できるようにします。 レジストリをバックアップおよび復元する方法の詳細については、「Windows でレジストリをバックアップおよび復元する方法」を参照してください。

Windows Server 2012 R2 でこの問題を回避するには、SmbDirect サービスを自動的に開始するように構成します。 これを行うには、次の手順を実行します。

  1. レジストリ エディターを開き、次のレジストリ サブキーに移動します。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\smbdirect

  2. [スタート] レジストリ エントリを右クリックし、[変更] を選択します。

  3. [ 値データ ] ボックスで、値 (既定値は 3、オンデマンドを意味) を 2 (自動) に変更します。

この変更を行うと、Windows ログ イベント ID 30818 メッセージなしでコンピューターを再起動できるようになります。 Windows が引き続きこれらのイベントをログに記録する場合は、RDMA インターフェイスの初期化を妨げる他の問題が発生する可能性があります。

Windows Server をインストールすると、Windows ログ イベント ID 1

Windows Server 2019、Windows Server 2016、または R2 Windows Server 2012をインストールすると、Windows はイベント ID 1 をログに記録します。 イベント情報は次のようになります。

ログ名: Microsoft-Windows-SMBWitnessClient/管理
ソース: Microsoft-Windows-SMBWitnessClient
イベント ID:1
レベル: エラー
説明: ミラーリング監視クライアントの初期化がエラーで失敗しました (指定されたファイルがシステムで見つかりません)。

ロールまたは機能が有効になっていない Windows Server の新しい展開である場合は、このイベントを無視しても問題ありません。

SMB の既知の問題

データ収集

Microsoft サポートに連絡する前に、問題に関する情報を収集できます。

前提条件

  • ローカル システムに対する管理者権限を持つアカウントのセキュリティ コンテキストで TSS を実行します。 初めて実行するときは、EULA に同意します。 (EULA に同意した後、TSS から再度メッセージが表示されることはありません)。
  • スコープで LocalMachine PowerShell 実行ポリシーをRemoteSigned使用することをお勧めします。

注:

現在の PowerShell 実行ポリシーで TSS の実行が許可されていない場合は、次のアクションを実行します。

  1. コマンドレットを RemoteSigned 実行して、プロセス レベルの実行ポリシーを Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned 設定します。
  2. 変更が有効であることを確認するには、コマンドレットを実行します Get-ExecutionPolicy -List

これらのプロセス レベルのアクセス許可は、現在の PowerShell セッションにのみ適用されます。 TSS が実行されている PowerShell ウィンドウを閉じると、プロセス レベルに割り当てられたアクセス許可が以前に構成された状態に戻ります。

Microsoft サポートに連絡する前に重要な情報を収集する

  1. すべてのノードで TSS をダウンロードし、ファイルを C:\tss フォルダーに展開します。

  2. 管理者特権の PowerShell コマンド プロンプト ウィンドウで C:\tss フォルダーを開きます。

  3. 次のコマンドレットを実行して、クライアントとサーバーでトレースを開始します。

    • クライアント:

      TSS.ps1 -Scenario NET_SMBcli
      
    • サーバー:

      TSS.ps1 -Scenario NET_SMBsrv
      
  4. トレースがサーバーまたはクライアントで初めて実行される場合は、EULA に同意します。

  5. 記録を許可する (PSR またはビデオ)。

    注:

    クライアントとサーバーの両方でログを収集する場合は、問題を再現する前に、このメッセージが両方のノードに表示されるのを待ちます。

  6. 問題を再現します。

  7. 問題を再現したら、「 Y 」と入力して、データのログ記録を完了します。

TSS は、 C:\MS_DATA フォルダー内の圧縮ファイルにトレースを格納します。 分析のためにファイルをワークスペースにアップロードできます。

関連情報