《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 SDKsAzureAzCopy。如果你的操作系统是32位的话,安装路径在%ProgramFiles%Microsoft SDKsAzure
我们以管理员身份,运行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.netfiles这个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:myfolderabc.txt
C:myfolderabc1.txt
C:myfolderabc2.txt
C:myfoldersubfoldera.txt
C:myfoldersubfolderabcd.txt
则执行上述AzCopy命令后,上面所有5个文件都会被复制到Azure Storage中。
3.将本地计算机某个目录下的所有文件,复制到Azure Storage中
假设C:myfolder下有以下目录:
C:myfolderabc.txt
C:myfolderabc1.txt
C:myfolderabc2.txt
C:myfoldersubfoldera.txt
C:myfoldersubfolderabcd.txt
则执行以下命令:
AzCopy /Source:C:myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key]
注意上面的命令不同于命令3,最后是没有/S的
这样,只有在C:myfolder根目录下的文件
C:myfolderabc.txt
C:myfolderabc1.txt
C:myfolderabc2.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/
610.84 MB/S
二.Azure Blob Browser
上面介绍的AzCopy毕竟是命令行工具,如果对命令行工具不熟悉的话,可以使用BlobBrowser。
BlobBrowser是GUI图形界面的工具,背后其实是利用AzCopy命令行工具。
我们安装完BlobBrowser之后,可以在界面上进行配置。如下图:
上图中,我们点击Add,增加新的存储账号信息:
在弹出窗口中,输入以下信息:
上图中,
- Name输入显示名称
- Storage Account Name,输入存储账号名称
- Storage Account Key,输入存储账号的密钥
注意,如果使用国内由世纪互联运维的Azure,需要在上图中,勾选Use China Endpoint。
登录完毕后,UI结构如下,左侧为本地文件目录,右侧为Azure Storage Container
我们点击上图中的Upload就可以上传一个文件或者文件夹了
注意:文件夹默认是递归复制的,也就是把文件夹下的多级目录都上传到Azure Storage中
上传完毕后,点击右侧列表中的文件。右键属性。如下图:
就可以看到这个文件的URL
三.结合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,如下图:
2.然后使用上面介绍的AzCopy,将CSPKG和CSDEF文件,复制到Azure Blob中。步骤略
3.然后我们回到Management Portal,找到步骤1中创建LeiPaaS项目,选择Configure,并点击Upload A New Production Deployment。如下图:
4.在弹出的窗口中,PACKAGE和CONFIGURATION都选择From Storage,浏览到我们在步骤2中上传的CSPKG和CSDEF文件。
这样就会极大的加快部署Cloud Service的速度。
本博-三石Blog(下文简称本博),在本博客文章结尾处右下脚未注明转载、来源、出处的作品(内容)均为本博原创,本站对于原创作品内容对其保留版权,请勿随意转载,如若真有需要的朋友可以发Mail联系我;转载本博原创作品(内容)也必须遵循“署名-非商业用途-保持一致”的创作共用协议,请务必以文字链接的形式标明或保留文章原始出处和博客作者(Lei Zhang)的信息,关于本博摄影作品请务必注意保留(www.cnblog.com/threestone)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。