SMB ファイル転送速度の低下

サーバー メッセージ ブロック (SMB) のファイル転送速度は、ファイルのサイズと量、接続の種類、使用するアプリのバージョンによって遅くなる可能性があります。 この記事では、SMB によるファイル転送速度の低下に関するトラブルシューティングの手順について説明します。

転送が遅い

現在のストレージの使用を確認することで、低速なファイル転送のトラブルシューティングを行うことができます。 ファイルの転送速度が遅い場合は、次の手順を検討してください。

  • バッファーされていない IO に対して、次のファイル コピー コマンドを実行します。

    • xcopy /J
    • robocopy /J
  • ストレージの速度をテストします。 コピーの速度はストレージの速度によって制限されます。

  • ファイルのコピーはすぐに開始され、その後速度が低下することがあります。 コピー速度の変化は、初期コピーがキャッシュまたはバッファー (メモリ内または RAID コントローラーのメモリ キャッシュ内) にあり、キャッシュが不足した場合に発生します。この変更により、データが強制的にディスクに直接書き込まれます (ライトスルー)。

    この状態であることを確認するには、ストレージ パフォーマンス モニター カウンターを使用して、時間の経過と共にストレージのパフォーマンスが低下するかどうかを判断します。 詳細については、「SMB ファイル サーバーのパフォーマンス チューニング」を参照してください。

  • RAMMap (SysInternals) を使用して、空きメモリ不足のためにメモリ内の "マップされたファイル" の使用の増加が停止するかどうかを判断します。

  • トレースのパケット損失を検索します。 パケット損失により、TCP 輻輳プロバイダーによる調整が発生する可能性があります。

  • SMBv3 以降のバージョンでは、SMB マルチチャネルが有効で動作していることを確認してください。

  • SMB クライアントで、SMB の大きな MTU を有効にし、次のコマンドを実行して帯域幅の調整を無効にします。

    Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
    

小さいファイルの転送が遅い

小さいファイルの転送速度の低下は、多くのファイルが存在する場合に最もよく発生します。 この発生は想定される動作です。

ファイルの転送中、ファイルの作成により、高いプロトコル オーバーヘッドとファイル システムオーバーヘッドが発生します。 大きなファイル転送の場合、これらのコストは 1 回だけ発生します。 多数の小さなファイルが転送されると、コストが繰り返し発生し、転送速度が低下します。

問題の詳細情報です

ネットワーク待機時間、create コマンド、ウイルス対策プログラムは、小さなファイルの転送が遅くなる原因となります。 この問題に関する技術的な詳細は次のとおりです。

  • SMB は、ファイルの作成を要求する create コマンドを呼び出します。 コードにより、ファイルが存在するかどうかがチェックされた後、ファイルが作成されます。 または、create コマンドの一部のバリエーションによって、実際のファイルが作成されます。

    • create コマンドは、ファイル システムに対してアクティビティを生成します。
    • データが書き込まれると、ファイルは閉じられます。
  • このプロセスは、ネットワーク待機時間と SMB サーバーの待機時間の悪影響を受ける可能性があります。 この待機時間が発生する理由は、SMB 要求が最初にファイル システム コマンドに変換され、その後、その操作を完了するために実際のファイル システムに送信されるためです。

  • ウイルス対策プログラムの実行中は、転送速度の低下が続きます。 この変化が発生するのは、データは通常パケット スニファーによって 1 回スキャンされ、データがディスクに書き込まれるときに 2 回目のスキャンが行われるためです。 シナリオによっては、これらのアクションが何千回も繰り返される場合があります。 1 MB/秒未満に速度が低下する可能性があります。

Office ドキュメントが開くのが遅い

Office ドキュメントが開くのが遅くなる場合があります。これは通常、WAN 接続で発生します。 Office アプリ (特に Microsoft Excel) によるデータへのアクセスと読み取り方法が、一般にドキュメントが開くのが遅くなる原因です。

Office と SMB バイナリが最新であることを確認し、SMB サーバーでリースを無効にしてテストしてみます。 両方の状態が解決されたことを確認するには、こちらの手順に従います。

  1. Windows 8 と Windows Server 2012 または以降のバージョンの Windows で、次の PowerShell コマンドを実行します。

    Set-SmbServerConfiguration -EnableLeasing $false  
    

    または、管理者特権でのコマンド プロンプト ウィンドウで次のコマンドを実行することもできます。

    REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v DisableLeasing /t REG\_DWORD /d 1 /f  
    

    Note

    このレジストリ キーを設定した後は、SMB2 リースは付与されませんが、oplock は引き続き利用できます。 この設定は、主にトラブルシューティングのために使用されます。

  2. ファイル サーバーを再起動するか、サーバー サービスを再起動します。 サービスを再起動するには、次のコマンドを実行します。

    NET STOP SERVER 
    NET START SERVER
    

この問題を回避するには、ファイルをローカル ファイル サーバーにレプリケートすることもできます。 詳細については、「EFS を使用して Office ドキュメントをネットワーク サーバーに保存すると遅い」を参照してください。