在Azure上加快Blob复制

时间:2018-11-12 18:53:38

标签: azure cloud azure-storage azure-sdk-python

我有一个用例,通常需要将一个Blob(文件)从一个Azure区域复制到另一个。文件大小范围为25到45GB。不用说,这有时会非常缓慢,并且性能会不一致。这可能需要两个小时,有时甚至更多。距离起一定作用,但有所不同。即使在同一区域内,复制也比我预期的要慢。我一直在尝试:

  1. The Python SDK, and its copy blob method from the blob service.
  2. The rest API copy blob
  3. 来自CLI的az副本。

尽管我并没有真正期望得到不同的结果,因为它们都使用相同的后端方法。

我缺少任何方法吗?是否有任何方法可以加快此过程,或者在Azure中集成任何种类的Blob共享? VHD /磁盘共享也可以。

2 个答案:

答案 0 :(得分:0)

您可能想尝试AzCopy中的/SyncCopy选项:

  

将Blob从一个存储帐户同步复制到另一个存储帐户

     

AzCopy默认情况下在两个存储端点之间异步复制数据。因此,复制操作在后台使用备用带宽容量运行,而该带宽在复制Blob的速度方面没有SLA,并且AzCopy会定期检查复制状态,直到复制完成或失败。

     

/SyncCopy选项可确保复制操作获得一致的速度。 AzCopy通过下载要从指定源复制到本地内存的blob,然后将它们上传到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 VM中使用此选项,以避免出口成本。

答案 1 :(得分:0)

在Linux中,您可以尝试使用--parallel-level选项。尝试使用azcopy --help查找它。同样,最大操作限制为512。疯了!