Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  390 随笔 :: 0 文章 :: 394 评论 :: 0 引用

  《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/

 

  

  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)等相关水印版权信息,否则视为侵犯原创版权行为;本博谢绝商业网站转载。版权所有,禁止一切有违中华人民共和国著作权保护法及相关法律和本博(法律)声明的非法及恶意抄袭。

  

  

posted on 2015-05-07 22:59 Lei Zhang的博客 阅读(...) 评论(...) 编辑 收藏