Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM

简介:

 《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

 



本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/4860660.html,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
28天前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
72 13
如何配置Windows主机MPIO多路径访问存储系统
|
21天前
|
C# Windows
【Azure App Service】在App Service for Windows上验证能占用的内存最大值
根据以上测验,当使用App Service内存没有达到预期的值,且应用异常日志出现OutOfMemory时,就需要检查Platform的设置是否位64bit。
40 11
|
4月前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
|
4月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
4月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
4月前
|
Shell PHP Windows
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
|
4月前
|
应用服务中间件 nginx Windows
【Azure 应用服务】在App Service for Windows中实现反向代理
【Azure 应用服务】在App Service for Windows中实现反向代理
|
4月前
|
安全 Windows
【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?
【Azure 云服务】当Windows系统发布新的安全漏洞后,如何查看Azure云服务(Cloud Service)的实例是否也更新了安全补丁呢?
|
4月前
|
API 网络架构 开发者
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)