Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  《Windows Azure Platform 系列文章目录

  

  Update 2016-09-28

  想要在Azure云端,使用AzCopy工具,从Azure China 上海数据中心存储账户,把文件拷贝到另一个数据中心的存储账户里,速度达到600MB/S

  请按照以下方法:

  1.在微软云端,创建1台至少8Core的虚拟机。注意AzCopy在执行时是多线程的,Azure云端的虚拟机配置越高,则AzCopy性能越好

  2.安装AzCopy

  3.在执行AzCopy的时候,加参数 /SyncCopy

  请注意:使用/SyncCopy的时候,会把Azure Storage 源地址的存储账号的数据,保存到AzCopy运行的虚拟机的内存里

  所以千万不能在本地PC机上,运行AzCopy的时候执行 /SyncCopy,否则拷贝的性能很差

  http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/

  Update 2015-11-13

  应要求,发一下关于Data Movement Library (DML) 的信息。

   这个library 包含了AzCopy 核心逻辑,并且已经开源,用户可以比较轻易的集成它到已有的系统中来取得和AzCopy相同的性能,现在你可以从Nuget (http://nuget.org/packages/Microsoft.Azure.Storage.DataMovement 安装,

  或是到Github (https://github.com/Azure/azure-storage-net-data-movement )下载源代码,请通过博客查看更多细节ACOM (https://azure.microsoft.com/en-us/blog/introducing-azure-storage-data-movement-library-preview-2/)。

  Update 2015-05-26

  如果在公司内部,使用代理服务器上网的话,需要修改AzCopy的配置,在AzCopy.exe的相同目录下,新增文件azcopy.exe.config

  如果不需要Proxy,config文件配置如下:

<configuration>
<system.net>
<defaultProxy enabled=”false” />
</system.net>
</configuration>

  如果需要Proxy,config文件配置如下(在proxyaddress中,输入相应的代理服务器地址)

<configuration>
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://127.0.0.1:8080"
bypassonlocal="true"
/>
</defaultProxy>
</system.net>
</configuration>

  参考资料:https://msdn.microsoft.com/en-us/library/aa903360(v=vs.71).aspx

  

  在笔者之前的文档中,已经介绍了管理Azure Storage的常用工具,具体内容请参考:Windows Azure Storage (7) 使用工具管理Windows Azure Storage

  

  文章内容主要分为3大内容:

  一.AzCopy命令行工具

  二.Azure Blob Browser

  三.结合AzCopy,加快Azure Cloud Service部署速度

  一.AzCopy命令行工具

  这里笔者强烈推荐另外一个工具AzCopy,不同于之前文章中介绍的工具。AzCopy命令行工具,是经过优化的、高性能Azure Storage管理工具,可以管理Azure Blob, File和Table。笔者强烈使用这个工具,因为性能真的非常好。

  AzCopy可同时管理Global Azure(windowsazure.com)和国内由世纪互联运维的Azure China。

  最新的下载地址是:http://aka.ms/downloadazcopy我们下载后,直接安装运行。

  如果你的操作系统是64位的话,安装路径在%ProgramFiles(x86)%\Microsoft SDKs\Azure\AzCopy。如果你的操作系统是32位的话,安装路径在%ProgramFiles%\Microsoft SDKs\Azure\

  我们以管理员身份,运行cmd命令行。通过cd命令,进入到AzCopy.exe所在的目录。简单来说AzCopy的语法如下:

AzCopy /Source:<source> /Dest:<destination> /Pattern:<filepattern> [Options]

  

  感谢QQ群的网友提供信息,如果您的Azure文件名包含空格的话,文件名请用双括号引用。如下:

AzCopy /Source:"<source>" /Dest:"<destination>" /Pattern:<filepattern> [Options]

  

  如果你用国内由世纪互联运维的Azure China:

  Storage DNS:  https://[yourstorageaccountname].blob.core.windows.net/

  接下来,我举几个简单的例子。

  1.将本地计算某一文件,拷贝至Azure Storage中

  把本地的计算机C盘根目录下的helloworld.txt文件,复制到Azure Blob Storage:https://leizhangstorage.blob.core.windows.net\files这个Container下。

  该命令具体如下:

AzCopy /Source:C:\ /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key] /Pattern:helloworld.txt

  注意,如果上面的存储账号没有files这个container,则执行该命令的时候,AzCopy会自动创建该container,但是创建的新的Container的访问属性为Off,即不允许匿名访问

  2.将本地计算机某个目录下的所有文件和子目录,递归复制到Azure Storage中

  该命令如下:

AzCopy /Source:C:\myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key] /S

  注意上面的命令行中,最后的参数是 /S

  假设C:\myfolder下有以下目录:

  C:\myfolder\abc.txt
  C:\myfolder\abc1.txt
  C:\myfolder\abc2.txt
  C:\myfolder\subfolder\a.txt
  C:\myfolder\subfolder\abcd.txt

  则执行上述AzCopy命令后,上面所有5个文件都会被复制到Azure Storage中。

  3.将本地计算机某个目录下的所有文件,复制到Azure Storage中

  假设C:\myfolder下有以下目录:

  C:\myfolder\abc.txt
  C:\myfolder\abc1.txt
  C:\myfolder\abc2.txt
  C:\myfolder\subfolder\a.txt
  C:\myfolder\subfolder\abcd.txt

  则执行以下命令:

AzCopy /Source:C:\myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key]

  注意上面的命令不同于命令3,最后是没有/S的

  这样,只有在C:\myfolder根目录下的文件

  C:\myfolder\abc.txt
  C:\myfolder\abc1.txt
  C:\myfolder\abc2.txt

  才会被复制到Azure Storage Account下

  4.将文件从一个storage account保存至另外一个storage account

  假设我将storagefrom中container name为files的文件helloworld.txt,复制到storageto的同样的container name中去,则具体命令如下:

AzCopy /Source:https://storagefrom.blob.core.windows.net/files /Dest:https://storageto.blob.core.windows.net/files /SourceKey:[storagefrom的密钥] /DestKey:[storageto的密钥] /Pattern:helloworld.txt

  5.将一个Storage Account某个Container下的所有文件,复制到另外一个Storage Account下。

  假设我有一个Storage Account : storagefrom,里面有一个Container Name: public

  我需要把上面的Container内容,复制到另外一个Storage Account里:storageto

  这里我用的是Azure China的Endpoint:

AzCopy /Source:https://storagefrom.blob.core.chinacloudapi.cn/files /Dest:https://storageto.blob.core.chinacloudapi.cn/files /SourceKey:[storagefrom的密钥] /DestKey:[storageto的密钥] /S

  其他命令,请参考Azure MSDN文档:http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/

  Update 2015-10-18

  测试一下,在Azure China创建一台至少8Core的VM,然后在Azure VM运行AzCopy,从上海的Storage Account将VHD拷贝到北京的Storage Account,速度感人

  想要在Azure云端,使用AzCopy工具,从Azure China 上海数据中心存储账户,把文件拷贝到另一个数据中心的存储账户里,速度达到600MB/S

  请按照以下方法:

  1.在微软云端,创建1台至少8Core的虚拟机。注意AzCopy在执行时是多线程的,Azure云端的虚拟机配置越高,则AzCopy性能越好

  2.安装AzCopy

  3.在执行AzCopy的时候,加参数 /SyncCopy

  请注意:使用/SyncCopy的时候,会把Azure Storage 源地址的存储账号的数据,保存到AzCopy运行的虚拟机的内存里(和Azure VM的硬盘无关)

  所以千万不能在本地PC机上,运行AzCopy的时候执行 /SyncCopy,否则拷贝的性能很差

  http://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  610.84 MB/S

  二.Azure Blob Browser

  上面介绍的AzCopy毕竟是命令行工具,如果对命令行工具不熟悉的话,可以使用BlobBrowser

  BlobBrowser是GUI图形界面的工具,背后其实是利用AzCopy命令行工具。

  我们安装完BlobBrowser之后,可以在界面上进行配置。如下图:

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  上图中,我们点击Add,增加新的存储账号信息:

  在弹出窗口中,输入以下信息:

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  上图中,

  -  Name输入显示名称

  -  Storage Account Name,输入存储账号名称

  -  Storage Account Key,输入存储账号的密钥

  注意,如果使用国内由世纪互联运维的Azure,需要在上图中,勾选Use China Endpoint。

  登录完毕后,UI结构如下,左侧为本地文件目录,右侧为Azure Storage Container

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  我们点击上图中的Upload就可以上传一个文件或者文件夹了

  注意:文件夹默认是递归复制的,也就是把文件夹下的多级目录都上传到Azure Storage中

  

  上传完毕后,点击右侧列表中的文件。右键属性。如下图:

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  

  就可以看到这个文件的URL

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  三.结合AzCopy,加快Azure Cloud Service部署速度

  另外还要强烈推荐使用AzCopy,更新Windows Azure Cloud Service。

  笔者在之前的项目中,遇到某个合作伙伴的Cloud Service Package文件超过200M。开发团队抱怨使用Visual Studio 2013 Publish Project的时候速度非常慢,经过笔者仔细排查后发现,主要的原因是Visual Studio上传CSPKG和CSDEF的过程是单线程的,上传效率不高。

  1.我们首先在Azure Management Portal,创建一个空的Cloud Service,如下图:

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  2.然后使用上面介绍的AzCopy,将CSPKG和CSDEF文件,复制到Azure Blob中。步骤略

  3.然后我们回到Management Portal,找到步骤1中创建LeiPaaS项目,选择Configure,并点击Upload A New Production Deployment。如下图:

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  4.在弹出的窗口中,PACKAGE和CONFIGURATION都选择From Storage,浏览到我们在步骤2中上传的CSPKG和CSDEF文件。

  Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度

  这样就会极大的加快部署Cloud Service的速度。

  本博-三石Blog(下文简称本博),在本博客文章结尾处右下脚未注明转载、来源、出处的作品(内容)均为本博原创,本站对于原创作品内容对其保留版权,请勿随意转载,如若真有需要的朋友可以发Mail联系我;转载本博原创作品(内容)也必须遵循“署名-非商业用途-保持一致”的创作共用协议,请务必以文字链接的形式标明或保留文章原始出处和博客作者(Lei Zhang)的信息,关于本博摄影作品请务必注意保留(www.cnblog.com/threestone)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违*著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。

  

  

上一篇:力扣(LeetCode)7.整数反转


下一篇:9款最好用的MySQL数据库客户端图形界面管理工具,第三款我用了10年