2016-05-20 15 views
0

私が同時にサーバー・システム上に大量のデータをコピーして書き込もうとしてるのWindows Serverに2012負荷依存のファイル転送

を使用して書き込みが約30%に近づいて、高データレートで複数のアプリケーションから起こりますローカルシステムのI/O制限のうちの1つです。

転送はローカルストレージとネットワークストレージ間で数ギガビットまでの転送速度で行われます。

データを書き込むアプリケーションは、動作中にメモリが不足していてはならないため、転送はソースシステムの負荷を認識し、転送プロセス中に自分自身を制限する必要があります。

試みは、基本的なWindowsベースのツール(X /コピー、robocopyを)を適用するために行われています。 x/copyは制限機能を提供しないため不適切です。 Robocopyは、調整方法によって、または使用可能なネットワーク/メモリの制限を超えて調整しないときに、メモリの問題を引き起こすことが証明されています。

は今ここに面白い部分です:標準のWindowsエクスプローラのコピーGUIを使用すると、これらの問題のいずれかを示しません。実際には、が表示されていても、驚くほど高速にコピーされます。はシステムパフォーマンスに全く影響しません。

次のステップは、望ましいエクスプローラのコピー処理の動作を模倣するために、基本的な勝利のAPIを使用して、カスタム・コピー・プロセスを作成伴うだろう。

Q:どの基本的なapiコピーコマンドは、エクスプローラコピーを使用していますか?copyFile2? ...完全に利用できない内部コピーコマンド?私は他の選択肢を考慮する必要がありますか?

+1

IFileOperationインターフェイスでは、エクスプローラが使用するコピー機能にアクセスできます。 –

+0

ありがとう、私はそれを調べます。 –

+0

@ JonathanPotter私は、IFileOperationインターフェイスを使用してツールを実装し、配備しました。お気軽に回答を投稿し、私はそれを受け入れます。 –

答えて

1

IFileOperationインターフェイスでは、エクスプローラが使用するコピー機能にアクセスできます。

IFileOperation::CopyItemのドキュメントには、その使用方法の完全な例があります。