玩转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 ...
随机推荐
- 【转】Linux重定向操作符
Linux重定向操作符 功能描述 > 将命令输出写入文件或设备,而不是命令提示符或句柄,清空原有文件然后写入 < 从文件而不是从键盘或句柄读入命令输入 >> 将命令输出添加到文 ...
- 熟悉scss
//html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- 让你fork下来的项目与源项目保持同步
原文在此, 建议阅读, 我把关键步骤抽出来了, 方便概览 (也就是add remote upstream, fetch upstream, rebase, 再push) Step 1: Forking ...
- 小清新的jQuery ck-slide 图片轮播
ck_slide 是一款小清新的jQuery 幻灯片插件,它非常小巧,压缩后仅 3KB,基本功能可以满足.它支持淡入淡出/左右滚动.箭头/圆点控制.自动播放. 在线实例 默认(淡入淡出) 左右滚动 自 ...
- Bootstrap源码分析之dropdown
源码分析: Dropdowns.scss:下拉框模块 Javascripts/bootstrap/dropdown.js:实现下拉框响应 实现功能及原理: 下拉选项卡,默认不能实现显示选中项的功能 原 ...
- 20款时尚的 WordPress 企业模板【免费主题下载】
在这篇文章中,我们收集了20款时尚的 WordPress 企业模板.WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装方式简单 ...
- 在Autodesk Vault 2014中使用VDF(Vault Development Framework) API获取所有文件的属性信息
这几天在玩儿Vault API, 从Autodesk Vault 2014开始提供了Vault Development Framework(VDF) API,让开发工作更简单了.在Vault 20 ...
- 关于内存泄露分析插件 MAT 的用法
关于内存泄露分析插件 MAT 的用法,建议大家有时间看一下,下面的文章 http://www.blogjava.net/rosen/archive/2010/05/21/321575.html htt ...
- Kotlin语法(基础)
一.基础语法: 1. 定义包名: 包名应该在源文件的最开头,包名不必和文件夹路径一致:源文件可以放在任意位置. package my.demo 2. 定义函数: fun sum(a: Int , b: ...
- 【代码笔记】iOS-竖排文字
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...