玩转Windows Azure存储服务——高级存储
在上一篇我们把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存储服务——高级存储的更多相关文章
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
发布于 2014-02-10 作者 陈 忠岳 持续集成 (CI) 的历史源远流长, 其宗旨在于软件团队在敏捷环境中不断将他们的工作整合为持续构建.管理 CI 进程的工具已存在一段时间.过去几年中 ...
- 宣布正式发布 Windows Azure 移动服务、网站及持续的服务创新
我们努力创新,向开发人员提供多样化平台以构建最好的云应用程序并在第一时间提供给世界各地的客户.许多新应用程序都属于"现代化应用程序",即始终基于 Web,且可以通过各种移动设备进行 ...
- 微软开放技术开发了适用于 Windows Azure 移动服务的开源 Android SDK
发布于 2014-02-10 作者 陈 忠岳 为进一步实现连接微软与非微软技术的目标,微软开放技术有限公司开发了适用于 Windows Azure 移动服务的 Android SDK,由Scot ...
- 转载文章:Windows Azure 基础结构服务上的 Microsoft Dynamics NAV 和 Microsoft Dynamics GP!
Windows Azure 基础结构服务(虚拟机和虚拟网络)可提供按需基础结构,该基础结构可进行伸缩以适应不断变化的业务需求.无论您是在虚拟机中创建新应用程序,还是运行现有应用程序,我们都将按分钟收费 ...
- 介绍Windows Azure HDInsight服务的Hadoop Storm的视频
介绍Windows Azure HDInsight服务的Hadoop Storm的原理,用例及开发入门的视频,收藏一下: http://channel9.msdn.com/Shows/Data-Exp ...
- 玩转Windows Azure存储服务——网盘
存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...
- Windows Azure云服务价格调整通知
好消息!由世纪互联运营的 Windows Azure推出优惠啦.我们采纳了多渠道客户的意见和建议,为了更好地服务大家,将降低多种云服务的价格,其中包括我们最受欢迎的服务 -虚拟机和 Block ...
- Windows Azure文件共享服务--File Service
部署在Windows Azure上的虚拟机之间如何共享文件?例如:Web Server A和Web Server B组成负载均衡集群,两个服务器需要一个共享目录来存储用户上传的文件.通常,大家可能首先 ...
- Windows Azure 云服务角色架构
当我们使用VS发布一个Cloud Service或者在Portal上上传发布包后,就能启动和运行一个云服务,可以保护WebRole,WorkerRole的一个或者多个实例. Windows Azure ...
随机推荐
- 【追寻javascript高手之路01】javascript参数知多少?
前言 我最近在思考一个问题,我本身平时还是积累了不少东西,面试时候问的东西基本逃不出写的博客(当然,高级阶段的就不行了),但是真的被问到时我却不一定答得上来. 知道且能回答,回答的效果都不是很好... ...
- 【javascript激增的思考02】模块化与MVC
前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于js有一点复杂,我自己也装B跟风用了一下传说中MVC! ...
- Git正确的协作方式(很简单)
最近部门有人书写了一篇很好的Git协作方式,操作也简单,分支能以保持一条干净的线进行协作开发.这里做个笔记,方便之后查看. PS:本文非原创. 原则 不过分相信自己,自己的修改,可能影响所有人 不过分 ...
- 原生JS:Math对象详解
Math对象 本文参考MDN做的详细整理,方便大家参考MDN Math 也是一个内置对象, 为数学常量和数学函数提供了属性和方法,而不是一个函数对象. 与其它全局对象不同的是, Math 不是一个构造 ...
- strurts2入门
MVC :struts2是一个经典开源的mvc框架.主要负责控制器(Controller) 处理请求特点: 核心控制器: +Actions; 与ServletAPI解耦合: 非单例,线程安全. ...
- jQuery实现购物车多物品数量的加减+总价计算
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- 从零开始,做一个NodeJS博客(一):Heroku上的最简NodeJS服务器
标签:NodeJS,Heroku 0 这里是这个伪系列的第一篇,因为我也不知道自己能不能做完,然后到底能做成什么样子.总之,尽力而为吧,加油. 1 Heroku App 的构成 Heroku 所谓的 ...
- spring-hellow word
在大三的时候开了一门JAVAEE SSH框架,属于软件方向选修课程,虽然本人是搞硬件的,但是也选了这么课程,因为我在想有一天物联网也会走上大门户的,所以果断去蹭课了,时至今日,重新拾起来, ...
- spring理解
Struts与Hibernate可以做什么事? Struts,Mvc中控制层解决方案,可以进行请求数据自动封装.类型转换.文件上传.效验… Hibernate,持久层的解决方案:可以做到,把对象保存到 ...
- VC方法调用顺序
VC1,push VC2  vc2 pop 到vc1  右滑一半,然后取消 vc1 present到vc2  vc2 dismiss到vc1  push和present是不同的.表现在两个vc ...