Ускорение копирования BLOB-объектов в Azure

У меня есть вариант использования, который часто требует копирования большого двоичного объекта (файла) из одного региона Azure в другой. Размер файла составляет от 25 до 45 ГБ. Излишне говорить, что иногда это происходит очень медленно, с непостоянной производительностью. Это может занять до двух часов, иногда больше. Расстояние играет роль, но оно отличается. Даже в пределах одного региона копирование происходит медленнее, чем я ожидал. Я пытался:

  1. Пакет Python SDK и его метод копирования BLOB-объектов из службы BLOB-объектов.
  2. Остальное копирование API
  3. az из CLI.

Хотя я особо и не ожидал разных результатов, так как все они используют одни и те же бэкенд-методы.

Есть ли какой-то подход, который мне не хватает? Есть ли способ ускорить этот процесс или какое-либо совместное использование больших двоичных объектов, интегрированное в Azure? Общий доступ к виртуальному жесткому диску/диску также может подойти.


person Aleksandar Stojadinovic    schedule 12.11.2018    source источник


Ответы (2)


Вы можете попробовать вариант /SyncCopy в AzCopy:

Синхронное копирование больших двоичных объектов из одной учетной записи хранения в другую

AzCopy по умолчанию копирует данные между двумя конечными точками хранилища асинхронно. Таким образом, операция копирования выполняется в фоновом режиме, используя свободную пропускную способность, которая не имеет соглашения об уровне обслуживания с точки зрения скорости копирования большого двоичного объекта, а AzCopy периодически проверяет состояние копирования до тех пор, пока копирование не завершится или не завершится сбоем.

Параметр /SyncCopy обеспечивает постоянную скорость операции копирования. AzCopy выполняет синхронное копирование, загружая большие двоичные объекты для копирования из указанного источника в локальную память, а затем загружая их в место назначения хранилища BLOB-объектов.

AzCopy /Source:https://myaccount1.blob.core.windows.net/myContainer/ /Dest:https://myaccount2.blob.core.windows.net/myContainer/ /SourceKey:key1 /DestKey:key2 /Pattern:ab /SyncCopy

/SyncCopy может привести к дополнительным затратам на исходящий трафик по сравнению с асинхронным копированием, рекомендуется использовать этот вариант на виртуальной машине Azure, которая находится в том же регионе, что и ваша исходная учетная запись хранения, чтобы избежать затрат на исходящий трафик.

person Zhaoxing Lu    schedule 13.11.2018
comment
Хорошо, я попробую это, хотя я видел это и не связывал это с повышением производительности. Если я правильно понимаю, блоб будет загружен на вызывающую машину, а затем повторно загружен в другое место? Разве это не должно быть медленнее? - person Aleksandar Stojadinovic; 13.11.2018
comment
Он может иметь постоянную скорость, медленнее или быстрее. Рекомендуемый подход — использовать этот параметр на виртуальной машине Azure, которая находится в том же регионе, что и ваша исходная учетная запись хранения. - person Zhaoxing Lu; 13.11.2018

В Linux вы можете попробовать использовать параметр --parallel-level. Попробуйте найти его с помощью azcopy --help. Кроме того, максимальное количество операций официально составляет 512. Сходите с ума!

person Achyut Sarma    schedule 03.07.2019