在回答這個問題前, 有很多觀念方面的迷思, 想先跟大家釐清. 免得誤用又怪罪虛擬化技術不堪用.
首先, Raw disk 的用途, 並不是用來讓你增加效能的, 請看以下的測試比較, 在 Random Workload 環境下, 有些情境 Virtual Disk 效率反而是比 Raw Disk 要好一點點的(完整的測試條件刊載於: Performance Characterization of VMFS and RDM Using a SAN ):
只有 Sequential READ 的時候, Raw disk 才能有機會明顯勝 Virtual Disk 一點點 (我就不截圖了, 請自行參考原文)
但是, 有誰的 VM 運作是會一直持續做 Sequential Read 的? (除了串流直播影片以外...)
Hyper-V 的結果也差不多, 請參考測試報告:
Hyper-V Virtual Hard Disk (VHD) Performance White Paper
所以, 如果還有人要說:「因為Virtual Disk效能不夠,所以必須要用Raw disk」, 從上圖就可以看出他完全沒有經驗, 或是根本在最初的 Capacity Planning 就有問題, 而這些問題, 並不會因為使用了 Raw disk 而改善太多.
那麼 Raw Disk 到底該用在哪裡?
以我自己的經驗, 有兩種場合必須用 Raw Disk:
除此之外, 還沒遇過非用 Raw 不可的狀況. 歡迎其他網友提供經驗.
回到樓主的問題:
我安裝過 20 幾台 VM 資料庫目前都實際上線使用中, DB 資料容量從 10GB 到 400GB 不等, 沒有一台使用 Raw. 而且當這些客戶抱怨效能降低時, 我總是可以找出真正造成效能瓶頸的根源並加以解決, 而不是改用 Raw 去解決.
你要放在 Raw 的原因是甚麼? 不放 Raw 的原因又是甚麼? 如果你很清楚這兩個因素的話, 自然就能夠決定是否要把 C or D 放到 Raw 去. 但是這個問題的答案會視狀況而定, 因我不知道你背後的原因, 所以不能幫您決定.
那要看你的 Raw 是怎麼建的? 以 VMware 來說, 如果是用 RDM 技術在 SAN 的 LUN 上面建出來的 Raw, 是可以做 HA 與 vMotion 的. 但若沒有同時符合以上兩個條件的話, 那就不行 (例如: 建在 Local Disk 上, 或是沒有使用 RDM 技術, 這兩種都不能做 HA)
Raw 還有其他的限制, 要看應用的情境來決定, 可參考這篇:
Raw Device Mapping (RDM) DeepDive
居然招喚出raytracy大大太幸運,我對您的景仰滔滔江水連綿不絕 又有如黃河氾濫一發不可收拾,回歸到正題,我對第三題還是有些疑問?我再將第三題具體化一點!!
1.如果我的VM的第一個硬碟(C曹)就是RAW那這樣可以做HA嗎?
2.如果我的第一顆硬碟是VHD檔或是VMDK都在Storage上而第二顆硬碟(D曹)作RAW那這樣可以HA嗎?
以上兩點Hyper-V跟Vsphere的狀況為何呢?當然您已經證明VHD不輸RAW這兩小題只是純粹探討!!
另為我為什麼會開這串問題是因為,有一天我到某家醫院去MIS跟廠商在討論我也加入了討論狀況是這樣:醫院的資料庫系統原本是在實體機但廠商導入Vsphere5.1並將此資料庫實體機轉到VM上,而此台Vshpere與後端連接是1G ISCSI Stroage,Storage作Raid5 12個硬碟,而原本實體機的資料庫我記得是6個做raid5,前端的APP在做查詢時實體只要3秒左右而轉成VM後卻要花上15秒,我在旁邊看驗證確實真的是這樣。
又有一天有個另一個SI打電話給我說他用2008R2 把SQL移到VM上被USER抱怨查詢變慢!!
也因為這兩個事件我才有疑惑!!
想請教raytracy大大這可能是什麼造成效率差呢?我無法再提供更詳細的資料因為我只知道這樣!!
可以請您推測一下嗎!!
e04....回應只能寫1000字?....害我白打了一個小時......
(能不能加個 JavaScript, 超過字數就不讓我們按下《送出》? 免得我們常常自爆...)
好吧, 先回案例:
1G iSCSI 應該不夠用, 因為實體機的 RAID Controller, 最高可以有 375~750MB/Sec 的 Sustained Throughput, 但 1G iSCSI 卻只有 125MB/sec 而已, 還要扣掉 TCP 封包的 Overhead...
如果要我從現有資訊去解的話, 我會:
(原理解析就暫時不提了, 字數不夠...)
回問題:
真是辛苦你了打了那麼多結果不見了,害我也看不到,這種事我也碰過很多次所以現在只要字數太多我都會習慣打一打先複製到word再繼續打免得發生憾事。
我不懂的是醫院的部分,當我在做SQL查詢時應該是硬碟在讀取而網路只是回應,在實體機上6個硬碟所組成的Raid5肯定比12顆的storage所組成的Raid5 的Throughput慢,所以我的認知是在此事件的查詢就算是實體機的Raid card Throughput較高也不應該會比Storage快才是,舉個例如果我在實體機跟虛擬機做同一個查詢回應的資料只有1M,那取決於回應的速度快慢應該是看硬碟的Raid所組成後的讀取速度因為1G的ISCSI 回應速度跟 raid card的回應速度都一樣雖然raid card Throughput大於ISCSI但是回應的資料只有1M所以應該不構成影響!!我的推論對嗎?我不是專做SQL所以也只是推論有錯請指教!!
另外另一個事件的SI我忘了說他的2008R2是6個硬碟Raid5 且VM是裝在本機,並沒有跑ISCSI,在此事件就是用raid card怎麼會比實體機時慢那麼多?
建議換成 1Gx4 是先把客觀條件排除掉, 但實際上我的經驗裡, 大部分 SQL 問題都跟儲存無關.
以下是我解決過的案例:
轉上 VM 後, 速度慢5~10倍, 後來關掉 Server BIOS 裡面的省電設定就恢復.
客戶抱怨AP反應速度變慢, 結果查後發現, 是有另外一台VM一直在做大量讀寫, 占用I/O.
轉上VM後, SQL經常不定時發生反應會停頓, 經查是備份軟體的Agent影響, 改用無Agent的備份軟體之後就解決
Storage上面配置的RAID Cache不足, 因多個VM同時存取Disk, 造成SQL資料能被Cache的量降低, 比實體機還少, 後來將 Storage 的 Cache 增加4倍之後, 速度就恢復
iSCSI接了4x1G, 但是卻沒有正確設定 MPIO, 導致實際傳輸只用了一條, 其他三條閒置. 修正MPIO設定之後, 速度恢復正常.
你可以用 IOMeter 分別測一下實體機和VM的差距, VM測出來會差一點, 但不會差太多. 如果 IOMeter 效能很差, 可以在 Hypervisor 這層也測一下, 看看是否 Hypervisor 本身就慢? (當然前提是把所有 VM 都停下來測才準)
Storage 那邊也有監測 Log 可以查, 如果查出 Storage 明明很閒, 資料卻取得很慢, 那就要懷疑是否有甚麼設定沒有設對, 造成效能上不來.(這可以請原廠代為監控)
如果你覺得實際效能比當初計算的要少很多的時候, 應該要先懷疑是否有其他未知因素的干擾? 否則就是當初設計的時候, 有某個地方計算錯誤了. 從上面我提供的兩篇測試方法可以證實, 如果設計正確的話, VM 和實體機應該沒有差別(或只差一點點)才對.
效能會卡住, 中間一定有一個瓶頸卡住, 我們要善用工具去看監測數據, 才能找出卡住的地方.
如果是 Disk 太慢, Storage 應該要能看到數據滿載;
如果是 Hypervisor 太慢, vCenter or System Center 應該要能看到數據滿載;
如果是 VM 太慢, VM 裡面的效能監測也應該要能看到某個數據是滿載.
如果你沒看到任何滿載的數據, 卻發生延遲的傳輸, 代表有某個效能因素是你沒有找出來, 沒有看到的, 只要你能找到這個未知的因素, 問題就會解決.
如果你的設計應該可以傳送 1200 Read IOPS, 結果 Storage 卻只吐給你 300 IOPS, 這裡面要查的瓶頸可能有:
Physical Disk
RAID Performance
RAID Controller Cache
Storage CPU
iSCSI Bandwidth
Hypervisor Host I/O
Hypervisor Host Cache
Hypervisor iSCSI Interface
Hypervisor CPU Resource
VM Configuration, CPU, RAM (不是只有出問題的那台VM, 要查全部的VM)
1.Hypervisor 這層的測試怎麼測,是在2012安裝IOMeter嗎?測試C曹?這部分的測試我不懂您的意思!
2.實體機測試IOMeter這我懂,想請教您您的測試方法也在win OS上掛一個LUN然後測試這個LUN嗎?
3.如果是虛擬機要怎麼測??是在VM(放在Storage)上裝Win OS然後測試自己的C曹嗎?