Старт-AzureStorageBlobCopy vs AzCopy: какой из них занимает меньше времени
Мне нужно переместить VHD из одной подписки в другую. Я хотел бы знать, какой вариант лучше для того же самого: Start-AzureStorageBlobCopy
или AzCopy
?
Какой из них занимает меньше времени ?
5 ответов:
Оба они займут одинаковое время, поскольку все, что они делают, - это инициация
Async Server-Side Blob Copy
. Они просто говорят службе начать копирование blob-объекта из источника в пункт назначения. Фактическая операция копирования выполняется службой хранилища Blob-объектов Azure. Время, которое потребуется для копирования большого двоичного объекта, будет зависеть от ряда факторов, включая, но не ограничиваясь ими:
- место источника и назначения.
- размер исходного большого двоичного объекта.
- нагрузка на службу хранения.
Запуск AzCopy без указания параметра / SyncCopy и запуск команды PowerShell Start-AzureStorageBlobCopy должны занимать одинаковое время, так как они оба используют асинхронное копирование на стороне сервера.
Если вы хотите копировать большие двоичные объекты по регионам, вам лучше указать параметр / SyncCopy во время выполнения AzCopy, чтобы достичь согласованной скорости, потому что асинхронное копирование данных будет выполняться в фоновом режиме серверов, которые, как было сказано, могут быть несовместимыми. скорость копирования среди ваших операций "копирования".
Если указан параметр / SyncCopy, AzCopy сначала загрузит содержимое в память, а затем отправит его обратно в хранилище Azure. Для повышения производительности /SyncCopy предполагается запускать AzCopy в виртуальной машине, регион которой совпадает с исходной учетной записью хранения. Кроме того, размер виртуальной машины (который определяет пропускную способность и число ядер процессора), вероятно, также повлияет на производительность копирования.
Для получения дополнительной информации, см. раздел Начало работы с программой командной строки AzCopy
Они не занимают одно и то же время.
Я пытался скопировать с одного счета на другой и получил огромную разницу.
Start-AzureStorageBlobCopy -SrcBlob $_.Name -SrcContainer $Container -Context $ContextSrc -DestContainer $Container -DestBlob $_.Name -DestContext $ContextDst --Verbose
Это занимает около 2,5 часов.
& .\AzCopy.exe /Source:https://$StorageAccountNameSrc.blob.core.windows.net/$Container /Dest:https://$StorageAccountNameDst.blob.core.windows.net/$Container /SourceKey:$StorageAccountKeySrc /DestKey:$StorageAccountKeyDst /S
Это занимает несколько минут.
У меня здесь около 600 Мб и около 7000 файлов.
Кто-нибудь знает, почему все так по-другому?Elapsed time: 00.00:03:41 Finished 44 of total 44 file(s). [2017/06/22 17:05:35] Transfer summary: ----------------- Total files transferred: 44 Transfer successfully: 44 Transfer skipped: 0 Transfer failed: 0 Elapsed time: 00.00:00:08 Finished 345 of total 345 file(s). [2017/06/22 17:06:07] Transfer summary: ----------------- Total files transferred: 345 Transfer successfully: 345 Transfer skipped: 0 Transfer failed: 0 Elapsed time: 00.00:00:31
Пример предложения ОАС, который асинхронного ксерокопии не хватает. Пример предназначен для обеспечения оптимальной производительности. Используйте параметр / SyncCopy, чтобы получить согласованную скорость копирования.
В большинстве сценариев
AzCopy
, вероятно, будет быстрее, чемStart-AzureStorageBlobCopy
из-за способа инициирования копирования, что приведет к меньшему количеству вызовов API Azure:
- [
AzCopy
]1 вызов для всего контейнера (независимо от количества blob-объектов)Vs
- [
Start-AzureStorageBlobCopy
] N количество вызовов из-за количества больших двоичных объектов в контейнере.Первоначально я думал, что это будет то же самое, что и оба, по-видимому, запускают одни и те же асинхронные копии на стороне Azure, однако на стороне клиента это будет непосредственно видно как нашел в своем ответе @ Евгений.
В сценарии 1 blob в контейнере теоретически обе команды будут завершены одновременно.
*EDIT (возможный обходной путь): я смог значительно сократить свое время:
- удаление вывода консоли и
- используя переключатель
-ConcurrentTaskCount
, установите значение 100 в моем случае. Сократите его до менее чем 5 минут сейчас.