Я должен скопировать 400 ГБ файлов из тома хранилища эластичных блоков в корзину s3 ... Это около 300 КБ файлов размером ~ 1 МБ
Я пробовал s3cmd и s3fuse , они оба очень-очень медленные. S3cmd работал целый день, сказал, что копирование закончено, и когда я проверил корзину, ничего не произошло (полагаю, что-то пошло не так, но по крайней мере s3cmd ни на что не жаловался)
S3Fuse работает еще целый день и скопировал менее 10% файлов ...
Есть ли лучшее решение для этого?
Я использую Linux (Ubuntu 12.04), конечно
Ответы:
Есть несколько ключевых факторов, которые определяют пропускную способность от EC2 до S3:
В случаях передачи больших объемов данных может быть экономически целесообразно использовать экземпляр кластерного вычисления, поскольку эффективный выигрыш в пропускной способности (> 10x) больше, чем разница в стоимости (2-3x).
Хотя приведенные выше идеи довольно логичны (хотя ограничение для каждого потока может и не быть), довольно легко найти тесты, поддерживающие их. Один особенно подробный можно найти здесь .
Использование от 64 до 128 параллельных (одновременных) загрузок объектов размером 1 МБ должно насыщать восходящую линию связи 1 Гбит / с, которую имеет m1.xlarge, и даже насыщать восходящую линию связи 10 Гбит / с экземпляра вычисления кластера (cc1.4xlarge).
Хотя изменить размер экземпляра довольно просто, двумя другими факторами может быть сложнее управлять.
источник
Итак, после большого количества испытаний s3-parallel-put сделали свое дело. Очевидно, решение, если вам нужно загрузить много файлов на S3. Спасибо cyberx86 за комментарии.
источник
Настройте параметры конфигурации AWS CLI S3 в соответствии с http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
Нижеследующее увеличило скорость синхронизации S3 как минимум в 8 раз!
Пример:
источник
Я написал оптимизированное консольное приложение на C # ( CopyFasterToS3 ) для этого. Я использовал в EBS vol, в моем случае это было 5 папок с более чем 2 миллионами файлов объемом 20 Гб. Сценарий выполняется менее чем за 30 минут.
В этой статье я показал, как использовать рекурсивную функцию с параллелью. Вы можете переписать его на другой язык.
Удачи!
источник
Также есть: s3funnel , который кажется очень старым (2008) и некоторые открытые ошибки, но все еще указан в самом Amazon: amzn-lnk
источник
Вместо этого попробуйте s4cmd, он действительно быстрее, чем s3cmd. Его адрес: https://github.com/bloomreach/s4cmd.
источник
Попробуйте использовать s3-cli вместо s3cmd. Я использовал его вместо s3cmd для загрузки файлов в мое хранилище s3, и это ускорило мое развертывание почти на 17 минут (с 21 до 4 минут)!
Вот ссылка: https://github.com/andrewrk/node-s3-cli
источник