上一篇我们把Windows Azure的存储服务用作网盘,本篇我们继续挖掘Windows Azure的存储服务——高级存储。高级存储自然要比普通存储高大上的,因为高级存储是SSD存储!其吞吐量和IOPS自然是普通存储没法比的。在高级存储功服务推出之前,用户为了提升磁盘性能,通常需要挂载多个持久盘做成RAID 0来使用。一个最大号的虚拟机,最多可以挂载16个持久盘,若将这16个磁盘组成RAID 0,理论上其整体磁盘性能可以提高16倍——当然这个只是理论值,因为是软RAID,总是要消耗一些计算资源的。

如果客户的应用场景对磁盘性能要求较高,例如:高频的数据库读写,大文件处理等,高级存储的优势就非常明显了。说到这里,我们不得不提一下D系列的虚拟机。很多用户误以为D系列的虚拟机已经是SSD存储了,为什么还需要高级存储呢?没错,D系列的虚拟机的确使用了SSD存储,但D系列虚拟机使用的SSD存储只是实例级存储,说白了就是临时盘。如果虚拟机关闭(释放)后再重新开启,或者因硬件故障执行迁移后,那么临时盘上的数据肯定就不存在了。因此,D系列虚拟机上的SSD临时盘(实例级存储)非常适合存放系统运行过程中的临时文件——作为操作系统或者应用程序的临时目录使用,例如:Windows Server的temp目录,Linux的Swap分区等。不管是A系列虚拟机还是D系列虚拟机,其附带的临时盘(实例级存储)都是不要钱的,免费。而持久盘是要按存储容量收费滴。

既然高级存储是用来存放虚拟机的持久盘(目前也只能用于虚拟机的持久盘,即:page blob),自然就不可能是免费的,而且其价格远高于普通存储。还有一点最关键的是:高级存储上的虚拟机持久盘是按所分配的容量计费,例如:用户创建了一个128G的高级存储持久盘,不管用户实际在上面存放了多少数据,其价格都是固定不变的;相比之下,用户即便创建了一个1TB的普通存储持久盘,但只在上面存储了10G数据,那么其价格只是按照10G来计算。好吧,一分钱一分货,好货不便宜。

目前,Windows Azure的高级存储服务只能在中国东部(上海)使用,由于中国版Windows Azure还没有提供新版的Web管理控制台,因此,只能通过PowerShell来配置和使用高级存储,包括创建使用高级存储的虚拟机。准备好万能的PowerShell,开工~~~

首先我们来创建一个高级存储账户,由于现在只有中国东部可以提供高级存储服务,因此[-Location]参数也只能设置为“China East”。

New-AzureStorageAccount -StorageAccountName [存储账户名称] -Location "China East" -Type "Premium_LRS" 

接下来要把创建好的高级存储账户设置当前存储账户,以便后续基于当前存储账户来创建虚拟机。这一步比较关键,而且Windows Azure的文档上漏掉了这一步,导致后续创建虚拟机的步骤无法顺利执行。

Set-AzureSubscription -CurrentStorageAccountName [高级存储账户名称] -SubscriptionId [订阅ID]

经过上述两个步骤,高级存储账号就准备好了。但是从Web管理控制台上是没法将虚拟机创建到高级存储账户的。继续PowerShell吧。

$storageAccount = "[高级存储账户名称]"
$vmName = "[虚拟机名称]"
$serviceName = "[云服务名称]"
$imageName = "[虚拟机镜像名称]"
$location = "China East"
$vmSize = "[DS系列虚拟机]"
$OSDiskPath = "https://" + "[高级存储账户名称]" + ".blob.core.chinacloudapi.cn/vhds/" + "[操作系统盘文件名].vhd"
$adminUsername = "[管理员用名]"
$adminPassword = "[管理员密码]"

#创建Windows虚拟机

New-AzureQuickVM -ImageName $imageName -MediaLocation $OSDiskPath -Windows -InstanceSize $vmSize -ServiceName $serviceName -Name $vmName -AdminUsername $adminUsername -Password $adminPassword -Location $location

#创建Linux虚拟机

New-AzureQuickVM -ImageName $imageName -MediaLocation $OSDiskPath -Linux -InstanceSize $vmSize -ServiceName $serviceName -Name $vmName -LinuxUser $adminUsername -Password $adminPassword -Location $location

这段代码挺长,我们来解读一下:

  • $vmSize,既不是A系列也不是D系列,而是DS系列,只有DS系列的虚拟机才能使用高级存储。DS系列虚拟机的配置与D系列是一一对应的。例如:DS1的CPU核数、内存容量与D1是一样的。其大小描述规则也是与D系列虚拟机类似,例如:“Standard_DS2”。
  • $location,在中国北部开通高级存储服务之前,只能是“China East”了。
  • $imageName,使用[Get-AzureVMImage | Select-Object {$_.ImageName}]命令来查找需要使用的虚拟机镜像名称。
  • $OSDiskPath,是一个指向高级存储账户中vhd文件的路径,也就是指定虚拟机系统盘的存放路径。

当创建虚拟机的PowerShell命令正确返回时,虚拟机创建动作其实并没有真正完成。可以通过Web管理控制台查看新创建的虚拟机状态。在其状态为“Running”之前,虚拟机是不可用的,即无法远程登录也无法进行后续的磁盘挂载等操作。

等虚拟机创建完成(状态变为“Running”),我们就可以继续给虚拟机创建并附加持久盘。

#获取虚拟机实例的引用
$vm=Get-AzureVM -ServiceName [云服务名称] -Name [虚拟机名称]
#指定持久盘的存储位置
$dataDiskPath = "https://" + "[高级存储账户名称]" + ".blob.core.chinacloudapi.cn/vhds/" + "[持久盘文件名].vhd"
#指定持久盘的描述标签
$dataDiskLabel = "[持久盘描述标签]"
#指定Lun号,如果只有一个持久盘,取值为1;如果有多个持久盘,则为每个持久盘指定不同的Lun号。
$LunNo = 1
#创建高级存储持久盘并附加到虚拟机。[持久盘容量]的取值范围是:128,512,1024,即对应三种不同容量的高级存储持久盘。
Add-AzureDataDisk -CreateNew -MediaLocation $dataDiskPath -DiskSizeInGB [持久盘容量] -DiskLabel $dataDiskLabel -LUN $LunNo -HostCaching ReadOnly -VM $vm | Update-AzureVm

和普通存储一样,如果用户认为单个高级存储的持久盘性能依然不足,可以通过附加多个高级存储的持久盘并创建RAID 0来进一步提升整体磁盘性能。理论上,可以将一个虚拟机的磁盘配置到50000 IOPS,这性能足以让Windows Azure傲视于其他竞争对手了!

最后我们来说说Windows Azure高级存储的一些限制和注意事项吧:

  • 无法通过Web控制台对高级存储账户进行管理。虽然在Web控制台上能列出高级存储账户的名称,但仅此而已。
  • 将DS系列虚拟机放在独立的云服务中,不要与非DS系列虚拟机混搭。
  • 高级存储只能用于虚拟机的磁盘(系统盘和持久盘),不能用作blob存储和文件服务(File Service)。
  • 合理预估高级存储持久盘的容量并选择合适的磁盘大小,以免造成不必要的浪费。
  • 无法使用PowerShell来查看存放在高级存储账户上的vhd文件。但可以通过azcopy或者Start-AzureStorageBlobCopy往高级存储账户上复制vhd文件或者将vhd文件从高级存储账户上复制出来。

至此,我们已经能够顺利的使用Windows Azure高级存储服务了,希望中国北部(China North)的用户也能尽快用上高级存储服务。

玩转Windows Azure存储服务——高级存储的更多相关文章

  1. 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库

     发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...

  2. 宣布正式发布 Windows Azure 移动服务、网站及持续的服务创新

    我们努力创新,向开发人员提供多样化平台以构建最好的云应用程序并在第一时间提供给世界各地的客户.许多新应用程序都属于"现代化应用程序",即始终基于 Web,且可以通过各种移动设备进行 ...

  3. 微软开放技术开发了适用于 Windows Azure 移动服务的开源 Android SDK

     发布于 2014-02-10 作者 陈 忠岳 为进一步实现连接微软与非微软技术的目标,微软开放技术有限公司开发了适用于 Windows Azure 移动服务的 Android SDK,由Scot ...

  4. 转载文章:Windows Azure 基础结构服务上的 Microsoft Dynamics NAV 和 Microsoft Dynamics GP!

    Windows Azure 基础结构服务(虚拟机和虚拟网络)可提供按需基础结构,该基础结构可进行伸缩以适应不断变化的业务需求.无论您是在虚拟机中创建新应用程序,还是运行现有应用程序,我们都将按分钟收费 ...

  5. 介绍Windows Azure HDInsight服务的Hadoop Storm的视频

    介绍Windows Azure HDInsight服务的Hadoop Storm的原理,用例及开发入门的视频,收藏一下: http://channel9.msdn.com/Shows/Data-Exp ...

  6. 玩转Windows Azure存储服务——网盘

    存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...

  7. Windows Azure云服务价格调整通知

     好消息!由世纪互联运营的 Windows Azure推出优惠啦.我们采纳了多渠道客户的意见和建议,为了更好地服务大家,将降低多种云服务的价格,其中包括我们最受欢迎的服务 -虚拟机和 Block ...

  8. Windows Azure文件共享服务--File Service

    部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先 ...

  9. Windows Azure 云服务角色架构

    当我们使用VS发布一个Cloud Service或者在Portal上上传发布包后,就能启动和运行一个云服务,可以保护WebRole,WorkerRole的一个或者多个实例. Windows Azure ...

随机推荐

  1. 从0开始学angularjs-笔记01

    一.angularjs简介 AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于,利 ...

  2. [deviceone开发]-购物车的简单示例

    一.简介 主要是演示listview所在的ui和模板cell所在的ui之间数据的交互,点击一行,可以通过加减数量,自动把所有选中的汽车价格显示在底部. 二.效果图 三.示例地址: http://sou ...

  3. 总结CSS3新特性(Animation篇)

    动画(Animation),是CSS3的亮点.//之一 通过animation属性指定@keyframe来完成关键帧动画; @keyframe用法: @keyframes name { 0% { to ...

  4. SharePoint 2013 使用 PowerShell 更新用户

    在SharePoint开发中,经常会遇到网站部署,然而,当我们从开发环境,部署到正式环境以后,尤其是备份还原,所有用户组的用户,还依然是开发环境的,这时,我们就需要用PowerShell更新一下: P ...

  5. 转:ibatis常用16条SQL语句

    1.输入参数为单个值 <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" par ...

  6. The quieter you become,The more you are able to hear.

  7. Creating Custom Connector Sending Claims with SharePoint 2013

    from:http://blogs.msdn.com/b/security_trimming_in_sharepoint_2013/archive/2012/10/29/creating-custom ...

  8. CalloutManager

    在SharePoint中很多弹出的提示样式挺好看,不仅想整一个耍耍.如下图: 老办法,看一下html中的class名字得知为:Callout 谷歌之---官方文档:http://msdn.micros ...

  9. 之二:CAKeyframeAnimation - 关键帧动画

    是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CA ...

  10. 退出多个activity的方法

    1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import and ...