Azure: Premium Storage, RemoteApp, SQL Database Update, Live Media Streaming, Search and More の記事で2014年12月に発表された Premium Storage だが、漸く利用可能になったのでさっそく検証してみた。
Premium Storage を利用することにより「仮想マシンの IOPS がイマチイなんだよねぇ…」というケースの解として提案可能になるが、2015年2月15日現在はプレビュー期間中であり日本リージョンでは利用できない(West US, East US 2, West Europe で利用可能)点に注意が必要だ。
最初に今回のまとめ
Premium Storage: High-Performance Storage for Azure Virtual Machine Workloads に詳しい記載があるが、注意が必要な点は以下になる。
- 2015年2月15日現在、プレビュー期間中であり日本リージョンでは利用できない(West US, East US 2, West Europe で利用可能
- PowerShell コマンドと portal.azure.com 側で作成可能(※注 manage.windowsazure.com 側ポータルでは作成できない
- 作成するディスクサイズによって IOPS 上限が異なる(※注 5000 IOPS がほしければ 512GB より大きなディスクを作成する必要がある
- Premium Storage を利用できるインスタンスサイズは STANDARD_DS シリーズのみ(※注 manage.windowsazure.com 側ポータルでは作成できない
- STANDARD_DS シリーズのサイズにより IOPS 上限が異なる(※注 STANDARD_DS1 だと 3200 IOPS 上限になってしまう
DS シリーズのインスタンスサイズによる IOPS 制限は以下になる。お金をケチって STANDARD_DS1 にすると、Premium Storage の旨味をそこまで引き出せなくなることが分かる。
VM Size |
CPU cores |
Max. IOPS |
Max. Disk Bandwidth |
STANDARD_DS1 |
1 |
3,200 |
32 MB per second |
STANDARD_DS2 |
2 |
6,400 |
64 MB per second |
STANDARD_DS3 |
4 |
12,800 |
128 MB per second |
|
STANDARD_DS4 |
8 |
25,600 |
256 MB per second |
STANDARD_DS11 |
2 |
6,400 |
64 MB per second |
STANDARD_DS12 |
4 |
12,800 |
128 MB per second |
|
STANDARD_DS13 |
8 |
25,600 |
256 MB per second |
STANDARD_DS14 |
16 |
50,000 |
512 MB per second |
更に、Premium Storage を利用するディスクサイズによっては 500 IOPS 程度に抑えられる場合がある点も注意。公式ドキュメントのサンプルが 128GB なので、うっかりすると 500 IOPS 程度になる。。。。
Premium Storage Disk Type |
P10 |
P20 |
P30 |
Disk size |
128 GB |
512 GB |
1024 GB (1 TB) |
IOPS per disk |
500 |
2300 |
5000 |
Throughput per disk |
100 MB per second * |
150 MB per second * |
200 MB per second * |
インスタンスサイズ、ディスクサイズによる制限に注意すれば Premium Storage を活用できる(はず)。次から実際に Premium Storage を利用してみる。
まずは簡単に Premium Storage を使ってみる - STANDARD_DS2 & P10
Premium Storage を利用するためには専用のストレージアカウントを作成する必要がある。以下の様に Type に Premium_LRS と指定する。
# Create Premium Storage
New-AzureStorageAccount -StorageAccountName "<accout name>" -Location "West US" -Type "Premium_LRS"
更に現在 Premium Storage を利用できるインスタンスは STANDARD_DS シリーズのみとなる(つまり、現在は G シリーズのインスタンスと併用できない)。以下の様に InstanceSize に DS シリーズであることを指定して仮想マシンを作成する(まずは STANDARD_DS2 で作成した)。
# Create Instance using Premium Storage
$image = Get-AzureVMImage | Where-Object {$_.label -like “Windows Server 2012 R2*”} | Sort-Object -Descending PublishedDate | Select-Object -Index 0
$storageAccount = "daisamipremiumaccount"
$adminName = "<username>"
$adminPassword = "<password>"
$vmName ="<vmname>"
$location = "West US"
$vmSize ="Standard_DS2"
$OSDiskPath = "https://" + $storageAccount + ".blob.core.windows.net/vhds/" + $vmName + "_OS_PIO.vhd"
$vm = New-AzureVMConfig -Name $vmName -ImageName $image.ImageName -InstanceSize $vmSize -MediaLocation $OSDiskPath
Add-AzureProvisioningConfig -Windows -VM $vm -AdminUsername $adminName -Password $adminPassword
New-AzureVM -ServiceName $vmName -VMs $VM -Location $location
更に、ディスクをアタッチしてみる。まずは以下の様に 128GB のディスクとしてアタッチしてみた。
# Attach Premium Storage to VM Instance
$vm = Get-AzureVM -ServiceName $vmName -Name $vmName
$LunNo = 1
$path = "http://" + $storageAccount + ".blob.core.windows.net/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
こちらに対する CrystalDiskMark の実行結果は以下になった。ご覧のとおり、ディスクサイズが小さいと 500 IOPS 制限に引っかかっている。
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 66.587 MB/s
Sequential Write : 39.150 MB/s
Random Read 512KB : 67.051 MB/s
Random Write 512KB : 34.970 MB/s
Random Read 4KB (QD=1) : 2.097 MB/s [ 511.9 IOPS]
Random Write 4KB (QD=1) : 1.664 MB/s [ 406.2 IOPS]
Random Read 4KB (QD=32) : 2.089 MB/s [ 510.1 IOPS]
Random Write 4KB (QD=32) : 2.089 MB/s [ 510.1 IOPS]
Test : 100 MB [F: 0.1% (0.1/128.0 GB)] (x5)
Date : 2015/02/14 5:14:31
OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
afasdfadfadsfa
STANDARD_DS2 & P30 で Premium Storage を使ってみる
ディスクサイズ P10 の制限に引っかかったことが分かったので、次は 1023 GB のディスクを作成してみた。
# Attach Premium Storage to VM Instance
$vm = Get-AzureVM -ServiceName $vmName -Name $vmName
$LunNo = 2
$path = "http://" + $storageAccount + ".blob.core.windows.net/vhds/" + "myDataDisk_" + $LunNo + "_PIO.vhd"
$label = "Disk " + $LunNo
Add-AzureDataDisk -CreateNew -MediaLocation $path -DiskSizeInGB 1023 -DiskLabel $label -LUN $LunNo -HostCaching ReadOnly -VM $vm | Update-AzureVm
結果は以下の通り、5000 IOPS 程度出ている。
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 66.587 MB/s
Sequential Write : 40.273 MB/s
Random Read 512KB : 67.040 MB/s
Random Write 512KB : 35.620 MB/s
Random Read 4KB (QD=1) : 20.947 MB/s [ 5114.0 IOPS]
Random Write 4KB (QD=1) : 1.670 MB/s [ 407.7 IOPS]
Random Read 4KB (QD=32) : 20.896 MB/s [ 5101.6 IOPS]
Random Write 4KB (QD=32) : 20.943 MB/s [ 5113.1 IOPS]
Test : 100 MB [G: 0.0% (0.2/1023.0 GB)] (x5)
Date : 2015/02/14 5:57:24
OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
念のため 600GB のディスクサイズだとどうなるか確かめた。
# Attach Premium Storage to VM Instance
$vm = Get-AzureVM -ServiceName $vmName -Name $vmName
$LunNo = 3
$path = "http://" + $storageAccount + ".blob.core.windows.net/vhds/" + "myDataDisk_" + $LunNo + "_PIO.vhd"
$label = "Disk " + $LunNo
Add-AzureDataDisk -CreateNew -MediaLocation $path -DiskSizeInGB 600 -DiskLabel $label -LUN $LunNo -HostCaching ReadOnly -VM $vm | Update-AzureVM
こちらでも P30 の 5000 IOPS が出ている。
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 66.576 MB/s
Sequential Write : 40.191 MB/s
Random Read 512KB : 67.040 MB/s
Random Write 512KB : 35.677 MB/s
Random Read 4KB (QD=1) : 20.940 MB/s [ 5112.3 IOPS]
Random Write 4KB (QD=1) : 1.616 MB/s [ 394.4 IOPS]
Random Read 4KB (QD=32) : 20.893 MB/s [ 5100.9 IOPS]
Random Write 4KB (QD=32) : 20.892 MB/s [ 5100.5 IOPS]
Test : 100 MB [H: 0.0% (0.2/600.0 GB)] (x5)
Date : 2015/02/14 6:57:53
OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
Storage Pool の利用
更に、Storage Pool を利用して Premium Storage のディスクを束ねて利用してみた。まずは STANDARD_DS2 のまま P30x2 での速度を確認した。8000 IOPS 以上出ているが、こちらは STANDARD_DS2 のインスタンスサイズによる IOPS 制限を受けている。
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 67.109 MB/s
Sequential Write : 66.905 MB/s
Random Read 512KB : 67.040 MB/s
Random Write 512KB : 57.867 MB/s
Random Read 4KB (QD=1) : 33.477 MB/s [ 8173.0 IOPS]
Random Write 4KB (QD=1) : 1.588 MB/s [ 387.6 IOPS]
Random Read 4KB (QD=32) : 33.525 MB/s [ 8184.7 IOPS]
Random Write 4KB (QD=32) : 33.420 MB/s [ 8159.2 IOPS]
Test : 100 MB [F: 0.0% (0.2/1197.9 GB)] (x5)
Date : 2015/02/14 8:03:39
OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
以下のコマンドを利用して Standard_DS14 サイズに変更した。
# Standard_DS14 に変更
Get-AzureVM -ServiceName <service name> -Name <instance name> | Set-AzureVMSize -InstanceSize Standard_DS14 | Update-AzureVM
再度 IOPS を計測すると、今度は 10000 IOPS 以上出ており 5000 IOPSx2 を束ねた速度が出ていることが分かる。
-----------------------------------------------------------------------
CrystalDiskMark 3.0.3 x64 (C) 2007-2013 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
Sequential Read : 408.735 MB/s
Sequential Write : 106.377 MB/s
Random Read 512KB : 408.468 MB/s
Random Write 512KB : 56.950 MB/s
Random Read 4KB (QD=1) : 40.708 MB/s [ 9938.4 IOPS]
Random Write 4KB (QD=1) : 1.469 MB/s [ 358.6 IOPS]
Random Read 4KB (QD=32) : 41.542 MB/s [ 10142.2 IOPS]
Random Write 4KB (QD=32) : 41.382 MB/s [ 10103.0 IOPS]
Test : 100 MB [F: 0.0% (0.2/1197.9 GB)] (x5)
Date : 2015/02/15 1:45:38
OS : Windows Server 2012 R2 Datacenter (Full installation) [6.3 Build 9600] (x64)
Storage Pool で束ねるディスクをさらに増やすことで IOPS は増すことができそうなので、他の方にもチャレンジしてほしい。