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

      

      

  • 相关阅读:
    51Nod 1239 欧拉函数之和
    51Nod 1244 莫比乌斯函数之和
    BZOJ 4805: 欧拉函数求和
    BZOJ 3944: Sum
    3.25阅读摘抄
    生活整洁之道
    1064. 朋友数(20)
    1063. 计算谱半径(20)
    1061. 判断题(15)
    1062. 最简分数(20)
  • 原文地址:https://www.cnblogs.com/threestone/p/4486392.html
Copyright © 2011-2022 走看看