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
    

    注:

    このレジストリ キーを設定すると、SMB2 リースは付与されなくなりますが、oplocks は引き続き使用できます。 この設定は、主にトラブルシューティングに使用されます。

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

    NET STOP SERVER
    NET START SERVER
    

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