400Gのファイルをエラスティックブロックストアボリュームからs3バケットにコピーする必要があります...これらは約1Mbの約300kファイルです
私は s3cmd と s3Fuse を試してみましたが、どちらも本当に遅いです.. s3cmdは1日中実行され、コピーが完了したと言い、バケットをチェックしたところ、何も起こりませんでした(何か問題があったと思いますが、少なくともs3cmdは何も不満を言ったことはありません)
S3Fuseはもう1日稼働しており、コピーしたファイルは10%未満です...
これに対するより良い解決策はありますか?
もちろんLinux(ubuntu 12.04)を実行しています
EC2からS3へのスループットを決定するいくつかの重要な要素があります。
大量のデータを転送する場合は、スループットの効果的な向上(> 10x)がコストの差(2-3x)よりも大きいため、クラスターコンピューティングインスタンスを使用すると経済的に実用的です。
上記のアイデアはかなり論理的ですが(スレッドごとのキャップはそうではないかもしれませんが)、それらを裏付けるベンチマークを見つけるのは非常に簡単です。特に詳細なものは here です。
1MBオブジェクトの64から128の並列(同時)アップロードを使用すると、m1.xlargeの1Gbpsアップリンクが飽和し、クラスターコンピューティング(cc1.4xlarge)インスタンスの10Gbpsアップリンクも飽和するはずです。
インスタンスのサイズを変更するのはかなり簡単ですが、他の2つの要因は管理が難しい場合があります。
だから、たくさんのテストの後 s3-parallel-put はトリックを驚くほどうまくやった。多くのファイルをS3にアップロードする必要がある場合の解決策は明らかです。コメントをありがとう cyberx86 .
http://docs.aws.Amazon.com/cli/latest/topic/s3-config.html に従ってAWS CLI S3設定値を調整します。
以下では、S3同期速度が少なくとも8倍に向上しました!
例:
$ more ~/.aws/config
[default]
aws_access_key_id=foo
aws_secret_access_key=bar
s3 =
max_concurrent_requests = 100
max_queue_size = 30000
これを行うために、C#( CopyFasterToS )で最適化されたコンソールアプリケーションを作成しました。私はEBS volで使用しました。私の場合は、20 GBの量で200万を超えるファイルを含む5つのフォルダーがありました。スクリプトは30分未満で実行されました。
この記事 では、並列で再帰関数を使用する方法を示しました。別の言語に書き起こせます。
幸運を!
S3cmdの代わりにs3-cliを使用してみてください。 s3cmdの代わりにそれを使用して、ファイルをs3バケットにアップロードしました。これにより、展開がほぼ17分(21〜4分)速くなりました。
これがリンクです: https://github.com/andrewrk/node-s3-cli
代わりにs4cmdを試してください。s3cmdよりも本当に高速です。そのアドレス: https://github.com/bloomreach/s4cmd