これが教祖のための好奇心が強いものです:
セットアップ:
ソースマシン:ローカルハードドライブを備えたWindows Server 2003R2マシン。 40GBのVHDファイル。 1 x 1Gbpsネットワークカード、Cat6ケーブル、スイッチ。
ターゲットマシン:別のマシン(1TB、RAID5)上のiSCSIターゲットへのiSCSI接続を備えたWindows Server 2008R2マシン。ソースマシンと同じスイッチに接続された1x 1Gbpsネットワークカード、Cat6ケーブル。絶縁スイッチを介してiSCSIターゲットに接続された2番目の1Gbpsネットワークカード、Cat6ケーブル。
スイッチはNetgearJGS524モデル(Web管理)です。
Win2003R2マシンからWin2008R2マシンのローカルドライブにコピーすると、45分36秒で40GBを取得します。
Win2008R2マシンからiSCSIターゲット(ローカルドライブからiSCSIターゲット)にコピーすると、37分56秒で40GBを取得します。
Win2003R2マシンからWin2008R2マシンを介してiSCSIターゲットにコピーすると、3時間50分24秒で40GBを取得します。
すべてのコピーは、Win2008R2ボックスで発行された次のコマンドを介して実行されました。
XCOPY <ソース> <ターゲット>/J
XCOPY/J-バッファなしI/Oを使用してコピーします。非常に大きなファイルに推奨されます。
だから、私がここで欠けているビットは何ですか? 「ストレートスルー」コピーに約3倍の時間がかかるのに、なぜ連続コピーに合計1時間23分32秒かかるのでしょうか。
スイッチはエラーを表示せず、ネットワークはコピーの期間中3%の使用率マークの周りをホバリングします(「連続した」コピーは約25%の使用率マークです)。
私は何を逃しましたか?
問題を「バッファリングされていない」コピーである可能性がありますか? Windowsは、ソース/ターゲットがローカルディスクであるコピーを高速化できるいくつかのトリックを実行する可能性がありますが、2つのネットデバイスを使用している場合は、より安全な動作に戻ります。
私はUnixでディスクテストを試しましたが、OSはディスクサブシステムで多くのトリックを行うことができます。幸運を。
まず、両方のインスタンスで2003R2から2008R2にコピーしています。 2003が関係しているため、SMB1のみを使用でき、同時要求の方法はあまりありません。情報は約64kbのチャンクでネットワークを通過し、各64kbチャンクはサーバーによって書き込まれる前に確認される必要があります。 2003R2ボックスは次のものを送信します。
現在、2008R2ボックスがiSCSI要求を送信し、2003R2ボックスに応答を返す前に確認応答を受信する必要がある場合、これによりプロセスが遅くなる可能性があります。エンベロープ計算の裏側では、64kbのチャンクの場合、チャンクを書き込むための2003R2からの要求と、それが書き込まれたことを示す応答との間に22ミリ秒が必要であることが示唆されています。それは少し長いように思えますが、すべてのステップが関係している可能性の範囲外ではありません。
それがあなたの問題であるかどうかはわかりませんが、興味がある場合は、wiresharkを使用してネットワークトラフィックを調べ、どのブロックサイズと遅延が関係しているかを確認できます。
もう1つのそれほど刺激的でない可能性は、サーバーが全二重に設定され、スイッチが自動ネゴシエートに設定されていることです。この組み合わせは機能せず、接続が半二重であるとスイッチが判断し、パケットをドロップすることがあります。 2番目のコピープロセスの場合のように、サーバーが大量のデータを同時に送信および受信している場合、ドロップされたパケットはさらに悪化します。
SMBプロトコルはどうですか? Win2k8R2はSMB 2.0を使用しますが、古いWinバージョンはSMB 1.0で、それほど高速ではありませんAND ウイルススキャナーがアクティブですか?一方、iSCSIデバイスへの直接アクセスは、オーバーヘッドを最小限に抑え、shure用のウイルススキャナーを使用しない異なるプロトコルを使用します。