Related Posts Plugin for WordPress, Blogger...

前言

如果你想要建置 VMware vSAN 的話,若未採用 vSAN Ready Node 的話。那麼,你應該要透過 VMware Compatibility Guide 仔細選擇實體伺服器中,每一項底層運作元件 (如 RAID Card、SSD...等)。

Disk Controller Queue Depth 的重要性

在選擇實體伺服器當中的 RAID Card / Disk Controller 時,其實有個很重要的參考數據就是「佇列深度 (Queue Depth)」? 此數據為何重要,我們先看看下列的圖,了解一下從底層實體伺服器,一直到 VM 虛擬主機,途中要經過多少佇列關卡。

你可以使用 SSH 登入 ESXi 主機,鍵入指令「vmkload_mod -s mpt2sas」查看一下,目前所使用的硬碟驅動
# vmkload_mod -s mpt2sas
vmkload_mod module information
input file: /usr/lib/vmware/vmkmod/mpt2sas
Version: Version 10.00.00.00.5vmw, Build: 799733, Interface: 9.2 Built on: Aug 1 2012
...略...
mpt2sas_raid_queue_depth: int
    Max RAID Device Queue Depth (default=128)
mpt2sas_sata_queue_depth: int
    Max SATA Device Queue Depth (default=32)
mpt2sas_sas_queue_depth: int
    Max SAS Device Queue Depth (default=254)
...略...


所以,你可以想像如果硬碟控制器佇列深度值為「128」時,若採用的 SATA 硬碟其佇列深度值為「32」,那麼在運作上便迎刃有餘。但是,若採用的 SAS 硬碟佇列深度值為「254」,可以想見在資料 I/O 時效能瓶頸便會卡在硬碟控制器。

檢查佇列深度值

檢查硬碟控制器佇列深度

請以 SSH 登入 ESXi 主機,輸入「esxtop」指令之後依序按下「d > f > d」以選擇 Queue Stats 項目,在顯示的結果中「AQLEN」欄位便是佇列深度。此次實作主機所採用的 RAID Card 為「IBM ServerRAID M5110」,可以看到佇列深度為「975」。



檢查硬碟佇列深度

請以 SSH 登入 ESXi 主機,輸入「esxtop」指令之後依序按下「u」鍵,在顯示的結果中「DQLEN」欄位便是佇列深度。

硬碟控制器佇列深度參考值

知名部落客 Duncan Epping,在他的部落格中有分享硬碟控制器佇列深度參考值,之後許多熱心人士也都回報,自已環境中所採用的硬碟控制器佇列深度值,這份表很值得參考: (表格資料來源: Yellow-Bricks - Disk Controller features and Queue Depth)

Adaptec
  • RAID 2405 - 佇列深度為 504

Dell
  • SAS 6/iR - 佇列深度為 127
  • PERC 6/i - 佇列深度為 925
  • PERC H200 Integrated - 佇列深度為 600
  • PERC H200 Embeded - 佇列深度為 499
  • PERC H310 - 佇列深度為 25
  • PERC H700、H710、H810 - 佇列深度為 975

HP
  • Smart Array P220i - 佇列深度為 1020
  • Smart Array P400i - 佇列深度為 128
  • Smart Array P410i、P420i - 佇列深度為 1020
  • Smart Array P700m - 佇列深度為 1200

IBM
  • ServerRAID M5015 - 佇列深度為 965
  • ServerRAID M5016、M5110 - 佇列深度為 975

Intel
  • C602 AHCI (Patsbury) - 佇列深度為 31 (per Port)
  • C602 SCU (Patsbury) - 佇列深度為 256
  • RMS25KB040 - 佇列深度為 600

LSI
  • LSI 2004 - 佇列深度為 25
  • LSI 2008 - 佇列深度為 25 (Firmware Update After 600)
  • LSI 2108、2208、2308、3008、9300-8i - 佇列深度為 600


結論

如果你要建置 vSAN 環境,那麼 Disk Controller 的佇列深度數值必須特別注意。即使不是建置 vSAN 環境,當你發現目前伺服器的 Disk I/O 反應似乎不如預期時,那麼也可以透過此方式進行檢查,或者 Disk I/O 就是卡在 Disk Controller 的佇列深度。

參考

文章標籤: ,