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

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM