《Windows Azure Platform 系列文章目录

  

  Update: 2016-11-3,如果大家在使用Linux VM,使用FIO进行IOPS测试的时候,请使用以下命令:

sudo fio -filename=/data2/testfile  -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=libaio -bs=16k -size=10G -numjobs=20 -runtime=60 -group_reporting -name=mytest

  注意ioengine使用libaio,不要使用-ioengine=psync,因为性能差别很大。

  本文介绍的是国内由世纪互联运维的Azure China

  熟悉Azure平台的读者都了解,Azure VM每一块Disk的IOPS为500。我们以D系列的VM为例,IOPS信息如下:

虚拟机类型 CPU RAM 临时磁盘 外挂磁盘数 IOPS
D1 1 3.5GB 50GB 2 2 * 500
D2 2 7GB 100GB 4 4 * 500
D3 4 14GB 200GB 8 8 * 500
D4 8 28GB 400GB 16 16 * 500
D11 2 14GB 100GB 4 4 * 500
D12 4 28GB 200GB 8 8 * 500
D13 8 56GB 400GB 16 16 *500
D14 16 112GB 800GB 32 32 * 500

  这里要特别注意:用户在创建Azure VM的时候,不要把所有的虚拟机磁盘都保存在同一个存储账号里。因为一个存储账号是有IOPS上限20000的。

  以笔者个人经验来说,我建议每3台虚拟机使用同一个存储账号,第4台虚拟机使用另外一个存储账号。

  当我们需要更高的IOPS的时候,比如某些场景需要更高性能的磁盘读写,这时候就需要用到高级存储Premium Storage。

  传统的标准存储(Standard Storage)使用的是普通硬盘(Hard Disk Drives, HDD),高级存储(Premium Storage)使用的固态硬盘(Solid State Drives, SSD)

  使用高级存储(Premium Storage)可以提高IOPS和吞吐量,降低延时。每个VM可以配置最多32TB的持久化存储,每个VM可以超过50000的IOPS,读取操作的延迟少于1毫秒。

  

  这里再特别强调一下,Azure D系列VM,本地临时磁盘是SSD的。请注意是临时存储,这个存储在Windows里显示为D盘,在Linux系统里是/dev/sdb1 。优点: IOPS高;缺点:非持久化存储,文件会有丢失的风险,不能保留重要的文件。D系列VM的其他磁盘都是普通SAS盘,每块盘MAX IOPS为500。

  而我们在这里介绍的Premier Storage和DS VM,对于DS VM来说,他们的磁盘是保存在Premier Storage里的。本地系统盘和数据盘都是SSD,提供持久化保存,文件不会有丢失的风险。(但是对于DS系列来说,也会有临时盘。这个存储在Windows里显示为D盘,在Linux系统里是/dev/sdb1 ,这是临时盘,数据会有丢失的风险)。

  

  在开始本章内容之前,我们先介绍一下高级存储(Premium Storage)的注意事项:

  1.Premium Storage目前在Azure China只能通过PowerShell创建。

  2.Premium Storage支持的类库:Storage REST API version 2014-02-14 or later; Service Management REST API version 2014-10-01 or later; andAzure PowerShell version 0.8.10 or later.

  3.Premium Storage目前只能在中国东部地区使用

  Update 2016-09-22,Premium Storage目前可以在中国东部和中国北部地区使用

  4.Premium Storage目前只支持Page Blob,只能被Azure DS系列的VM使用

  5.Premium Storage只支持本地冗余(Local Redundant Storage, LRS),即同一个数据中心三分冗余。在使用Premium Storage的时候想实现异地冗余,请参考:使用高级存储时的快照与复制 Blob 

  6.非DS系列的VM(A系列VM,D系列VM)是无法使用Premium Storage。

  只有DS系列的VM才可以使用Premium Storage。DS系列的VM可以同时使用Premium Storage和标准存储(Standard Storage)

  7.Premium Storage无法映射到自定义域名

  8.Premium Storage无法使用存储分析进行监控。如果需要监控,请使用基于操作系统的工具,如Windows 性能监视器(对于 Windows VM)和 IOSTAT(对于 Linux VM)。

 

  重要说明:

  1.单个Premium Storage Account最大容量为32TB。如果需要使用40TB的Premium Storage,请使用两个Premium Storage Account。

  2.默认情况下,附加到DS VM的Premium Storage缓存都设置为"读写"。为使应用程序的 I/O 达到最佳性能,建议使用此配置设置。对于频繁写入或只写的磁盘(例如 SQL Server 日志文件),请关闭磁盘缓存以获得更佳的应用程序性能。

  3.Azure限制了DS VM到Premium Storage的网络吞吐量。例如,STANDARD_DS1 VM 为高级存储磁盘通信提供每秒 32 MB 的专用吞吐量。这意味着,附加到此 VM 的 P10 高级存储磁盘最高只能达到每秒 32 MB,而不能像 P10 磁盘那样最高达到每秒 100 MB。同样,STANDARD_DS13 VM 可跨所有磁盘最高达到每秒 256 MB。目前,DS 系列上的最大 VM 是 STANDARD_DS14,它可以跨所有磁盘最高提供每秒 512 MB。根据磁盘通信中的读写 IO 混合形式,你可能会获得高于此值的吞吐量。

  请注意,这些限制只适用于磁盘通信。VM 网络通信可以使用单独的吞吐量,这不同于高级存储磁盘的专用带宽。下表列出了附加到 VM 的所有磁盘上的每个 DS 系列 VM 的当前最大 IOPS 和吞吐量(带宽)值:

VM大小 CPU 最大IOPS 最大磁盘吞吐量
STANDARD_DS1 1 3,200 32MB/S
STANDARD_DS2 2 6,400 64MB/S
STANDARD_DS3 4 12,800 128MB/S
STANDARD_DS4 8 25,600 256MB/S
STANDARD_DS11 2 6,400 64MB/S
STANDARD_DS12 4 12,800 128MB/S
STANDARD_DS13 8 25,600 256MB/S
STANDARD_DS14 16 50,000 512MB/S

  4.DS系列的VM可以同时使用Premium Storage和标准存储(Standard Storage)

  5.可以使用Storage Space,设置软RAID,来提高磁盘的IOPS。具体请参考:

  [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS

  6.建议在系统盘+数据盘的情况下,如果系统盘只是用于引导,请考虑使用标准存储(Standard Storage),这样可以节省成本。数据盘可以使用Premium Storage,因为性能更好。

  如果系统盘和数据盘有数据传输,系统盘可以使用Premium Storage以获得更好的性能。

  

  高级存储性能:

  当你为某个高级存储帐户设置磁盘时,其每秒的输入/输出操作次数 (IOPS) 和吞吐量(带宽)取决于磁盘大小。目前有三种类型的高级存储磁盘:P10、P20 和 P30。每种类型各有特定的 IOPS 和吞吐量限制,如下表所示:

Premium Storage P10 P20 P30
磁盘大小 128GB 512GB 1024GB
每个磁盘的IOPS 500 2300 5000
每个磁盘的吞吐量 100MB/S 150MB/S 200MB/S

  Azure 会将磁盘大小映射(向上舍入)至表中指定的最接近高级存储磁盘选项。例如,大小为 100 GB 的磁盘会分类为 P10 选项,每秒最多可执行 500 个 IO 单位,每秒吞吐量可达 100 MB。同样地,大小为 400 GB 的磁盘会分类为 P20 选项,每秒最多可执行 2300 个 IO 单位,每秒吞吐量可达 150 MB。

  输入/输出 (I/O) 单位大小为 256 KB。如果要传送的数据少于 256 KB,会视为单个 I/O 单位。较大的 I/O 大小则会视为大小是 256 KB 的多个 I/O。例如,1100 KB 的 I/O 会视为五个 I/O 单位。

  吞吐量限制包含磁盘的读取和写入。例如,P10 磁盘的读取和写入总和应小于或等于每秒 100 MB。同样地,单个 P10 磁盘可有每秒 100 MB 的读取或每秒 100 MB 的写入吞吐量,或是每秒 60 MB 的读取和每秒 40 MB 的写入吞吐量。

  当你在 Azure 创建磁盘后,请根据应用程序的容量、性能、缩放性和高峰负载需求来选择最适合的高级存储磁盘产品。

  下表描述高级存储帐户的缩放性目标:

总帐户容量 本地冗余存储帐户的总吞吐量
  • 磁盘容量:32 TB
  • 快照容量:10 TB
入站 + 出站最高每秒 50 Gbps
  • 入站是指发送到存储帐户的所有数据(请求)。
  • 出站是指从存储帐户接收的所有数据(响应)。

  高级存储的计费方式:

  1.Premium Storage按照磁盘分配的最大容量计费。例如:你申请了1TB的Premium Storage,实际只用了1GB,则Azure会按照Premium Storage的最大容量,即1TB计费。

  2.DS VM还会按照分钟计费。DS系列VM的价格和D系列VM的价格相同

=============================分隔符===============================

  接下来介绍使用高级存储Premium Storage和DS VM,关键步骤如下:

  1.创建Premium Storage

  2.创建DS VM

  

  1.首先我们以管理员身份,运行Azure PowerShell

  2.选择当前的订阅:

Select-AzureSubscription '[SubscriptionName]' –Current

  3.在中国东部创建Premium Storage

New-AzureStorageAccount -StorageAccountName "yourpremiumaccount" -Location "China East"
-Type "Premium_LRS"

  

  4.创建新的DS VM,VM Size为DS2

$storageAccount = "yourpremiumaccount"
$adminName = "youradmin"
$adminPassword = "yourpassword"
$vmName ="yourVM"
$location = "China East"
$imageName = "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201409.01-en.us-127GB.vhd"
$vmSize ="Standard_DS2"
$OSDiskPath = "https://" + $storageAccount + ".blob.core.chinacloudapi.cn/vhds/" + $vmName + "_OS_PIO.vhd"
$vm = New-AzureVMConfig -Name $vmName -ImageName $imageName -InstanceSize $vmSize -MediaLocation $OSDiskPath
Add-AzureProvisioningConfig -Windows -VM $vm -AdminUsername $adminName -Password $adminPassword
New-AzureVM -ServiceName $vmName -VMs $VM -Location $location

  创建虚拟机,并加入虚拟网络

$storageAccount = "yourpremiumstorage"
$adminName = "yourusername"
$adminPassword = "yourpassword"
$vmName = "yourvmname" $location = "China East"
$imageName = "f1179221e23b4dbb89e39d70e5bc9e72__OpenLogic-CentOS-67-20160415"
$vmSize = "Standard_DS13" $vnet = "yourvnetname"
$ipaddr= "privateip" $subnet = "subnetname"
$csname = "yourcloudservicename" New-AzureService -ServiceName $csname -Location $location -Label demo # Create the VM
$OSDiskPath = "https://" + $storageAccount + ".blob.core.chinacloudapi.cn/vhds/" + $vmName + "_OS_PIO.vhd" $vm = New-AzureVMConfig -Name $vmName -ImageName $imageName -InstanceSize $vmSize -MediaLocation $OSDiskPath Add-AzureProvisioningConfig -VM $vm -Linux -LinuxUser $adminName -Password $adminPassword Set-AzureSubnet -SubnetNames $subnet -VM $vm
Set-AzureStaticVNetIP -IPAddress $ipaddr -VM $vm New-AzureVM -ServiceName $csname -VMs $VM -VNetName $vnet

  5.在创建的DS VM上挂载新的数据磁盘:

$storageAccount = "yourpremiumaccount"
$vmName ="yourVM"
$vm = Get-AzureVM -ServiceName $vmName -Name $vmName
$LunNo = 1
$path = "http://" + $storageAccount + ".blob.core.chinacloudapi.cn/vhds/" + "myDataDisk_" + $LunNo + "_PIO.vhd"
$label = "Disk " + $LunNo
Add-AzureDataDisk -CreateNew -MediaLocation $path -DiskSizeInGB 128 -DiskLabel $label -LUN $LunNo -HostCaching ReadOnly -VM $vm | Update-AzureVm

  修改DS VM Size

  1.笔者发现创建成功的Azure DS VM,如果想修改VM Size是没有配置页面的。如下图:

  

  2.如果我们想修改VM Size的话,可以以管理员身份,运行以下命令:

#在弹出的输入框,输入用户名和密码
Add-AzureAccount -Environment AzureChinaCloud #设置当前订阅
Select-AzureSubscription -SubscriptionName [SubscriptionName] –Current #修改VM Size
Get-AzureVM –ServiceName '[CloudServiceName]' –Name '[VMName]' | Set-AzureVMSize '[VMSize]' | Update-AzureVM #我们以DB-CS-A为例,设置大小为Standard_DS4,该命令为
Get-AzureVM –ServiceName 'uladvdb' –Name 'DB-CS-A' | Set-AzureVMSize 'Standard_DS4' | Update-AzureVM #注意,运行上述命令修改VM Size后,该VM会重启。请确认把虚拟机一台一台重启,不要同时重启造成服务宕机

  上面聊完了技术问题,现在聊聊非技术问题

  1.Azure 高级存储是怎么计算费用的?

  首先我们看一看Azure官方提供的高级存储价格:

  http://www.windowsazure.cn/home/features/storage/#price

磁盘类型 P10 P20 P30
磁盘大小 128GB 512GB 1024GB
每月价格 470 1750 3230
每个磁盘的IOP 500 2300 5000
每个磁盘的吞吐量 100MB/S 150MB/S 200MB/S

  我们知道,Azure DS虚拟机在创建的时候,默认情况下Windows OS盘的大小为127GB,Linux OS盘的大小为30GB。

  参照上面的表,我们可以发现Windows OS 127GB和Linux OS 30GB,都小于P10的磁盘大小128GB。则Windows OS 127GB和Linux OS 30GB都是按照P10收费的。

  任何高级存储的磁盘大小,小于等于128GB的,都是按照P10收费。

  任何高级存储的磁盘大小,大于128GB,但是小于等于512GB,都是按照P20收费的。

  任何高级存储的磁盘大小,大于512GB,但是小于等于1024GB,都是按照P30收费的。

  好了,再举一个复杂的例子。假设我要130GB容量的磁盘,应该如何收费?

  1.如果是单块磁盘是130GB,那磁盘大小是大于128GB,但是小于等于512GB,都是按照P20收费的。每月费用=1750元/月。

  2.如果是2块磁盘,总容量是130GB。那我可以这样分配,5GB+125GB=130GB。这2块磁盘大小都小于等于128GB,都是按照P10收费的。每月费用=470*2=940元/月

  所以规划好高级存储的磁盘容量,可以帮我们显著的节省成本。

  

  2.Azure高级寸尺是怎么收取费用的?

  Azure高级存储是按照磁盘的最大容量收费的。

  在标准存储(Standard Storage)里,我们创建的磁盘VHD (A系列的虚拟机和D系列的虚拟机),是按照磁盘实际存储数据的容量来收费的。比如我分配的磁盘大小是1TB,但是实际存储容量为1GB,则普通存储是按照1GB的实际存储容量来收费的。

  在高级存储(Premium Storage)里,我们创建的磁盘VHD (DS系列的虚拟机),是按照整个VHD分配的总容量大小来收费的。比如我们分配的磁盘大小是1TB,但是实际存储容量为1GB,则高级存储是按照1TB的总容量,及P30的整体费用来收费的。

  Update 2016-04-06,笔者拿了一台DS13的VM,挂载1023GB (P30)磁盘,使用IOMeter进行测试:

  先设置Outstanding I/Os,为32。如下图:

  

  然后设置4K,100% Read

  

  

  IOMeters读的结果:

  

  可以看到上图中,P30 MAX IOPS为5000左右

  参考资料:

      https://azure.microsoft.com/en-us/documentation/articles/storage-premium-storage-preview-portal/

      http://www.windowsazure.cn/documentation/articles/storage-premium-storage-preview-portal/?fb=001

  

Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM的更多相关文章

  1. Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量

    <Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...

  2. [New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell创建Azure Virtual Machine

    <Windows Azure Platform 系列文章目录> 注:本章内容和之前的[New Portal]Windows Azure Virtual Machine (12) 在本地制作 ...

  3. [New Portal]Windows Azure Virtual Machine (23) 使用Storage Space,提高Virtual Machine磁盘的IOPS

    <Windows Azure Platform 系列文章目录> 注意:如果使用Azure Virtual Machine,虚拟机所在的存储账号建议使用Local Redundant.不建议 ...

  4. [New Portal]Windows Azure Virtual Machine (11) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (1)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  5. [New Portal]Windows Azure Virtual Machine (12) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (2)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  6. [New Portal]Windows Azure Virtual Machine (13) 在本地使用Hyper-V制作虚拟机模板,并上传至Azure (3)

    <Windows Azure Platform 系列文章目录> 本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,作为自定义的虚拟机模板. 注意:因为在制作VHD的最 ...

  7. [New Portal]Windows Azure Virtual Machine (14) 在本地制作数据文件VHD并上传至Azure(1)

    <Windows Azure Platform 系列文章目录> 之前的内容里,我介绍了如何将本地的Server 2012中文版 VHD上传至Windows Azure,并创建基于该Serv ...

  8. [New Portal]Windows Azure Virtual Machine (18) Azure Virtual Machine内部IP和外部IP

    <Windows Azure Platform 系列文章目录> 在开始本章内容之前,请读者熟悉以下2篇博文:       [New Portal]Windows Azure Virtual ...

  9. [New Portal]Windows Azure Virtual Machine (19) 关闭Azure Virtual Machine与VIP Address,Internal IP Address的关系(1)

    <Windows Azure Platform 系列文章目录> 默认情况下,通过Azure Management Portal创建的Public IP和Private IP都是随机分配的. ...

随机推荐

  1. (转载)JAVA敏捷开发环境搭建

    整个软件项目分为四个环境 开发本地环境.开发环境.测试环境.IDC环境.和传统C++开发不一样的模式是多了第一个开发本地环境.这是为什么呢,因为目前大部分开发人员还是比较熟悉windows下开发.对于 ...

  2. ZABBIX冗余架构构筑(Centos6.4+pacemaker+corosync+drbd)

    基本构成: 用pacemaker+corosync控制心跳和资源迁移 用drbd同步zabbix配置文件和mysql数据库 所有软件都用yum安装至默认路径 主机的drbd领域挂载至/drbd,备机不 ...

  3. Linux下PHP安装oci8扩展

    PHP通常搭配Mysql使用,但有时候也会连接到Oracle数据库.安装PHP的oci8扩张之前,需要先安装Oracle Instant Client( basic 或 basic lite 版就行了 ...

  4. Comet实现的网页聊天程序

    “上一篇”介绍了我在c/s程序中用了那些技术,如今只谈c/s不谈b/s那未免out了,势必要写一写b/s的程序与大家共勉. 回忆做技术这些年,06年每天盯着“天轰穿”的视频不亦乐乎,估计那是一代程序员 ...

  5. 如何在JavaScript中正确引用某个方法(bind方法的应用)

    在JavaScript中,方法往往涉及到上下文,也就是this,因此往往不能直接引用,就拿最常见的console.log("info…")来说,避免书写冗长的console,直接用 ...

  6. 12小时包你学会基于ReactMix框架的ReactNativeApp开发(二)基于Css+HTML写第一个app页面

    上一篇文章,大家对于ReactMix(https://github.com/xueduany/react-mix)框架有了一个基本认识,知道我们是一个语法糖,帮助大家基于一套代码,所有平台都能跑.那么 ...

  7. Java框架介绍-13个不容错过的框架项目

    本文转自互联网,个人收藏所用. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术. ...

  8. java arraylist的问题

    不得不说,我犯了错,很基础的.. 遍历list的时候可以删除数组元素吗? 答案是:简单/增强for循环不可以,list.iterator()这样的方式就可以. 我之前做过类似面试题的,不过忘记了, 不 ...

  9. CocoaPods 深入使用

    在 CocoaPods 使用中介绍了基本的使用 写项目的时候想用到 SQLite.swift第三方库,但是问题来了 pod search SQLite.swift  //执行这条语句,搜索不到结果 但 ...

  10. 如何对Redis设置密码,提高安全性

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/93.html?1455871461 Redis​作为一个高速内存键值对(K ...