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 は増すことができそうなので、他の方にもチャレンジしてほしい。