對小弟的理解是, 只要原本是有實體伺服器的服務端, "幾乎" 皆可用 virtualize 的方式做資源跟硬體分配即可達到不比用原本實體機器上的效能差; 今天小弟在某內部會議中有長官提到, Oracle database 的部份不建議使用, 最好使用實體機, 但以目前技術來講不管是 server 還是 storage 的部份做虛擬化不論在效能或是 HA 部分都有一定的成熟度跟表現, 試問為何 DB 及資料儲存方面不適合, 更或者有其他應用伺服器不建議使用?
一台實體伺服器上只有一個 DB VM 的虛擬化,還是有提高可用性的好處,雖然會浪費虛擬化軟體授權,但是比起做DB CLUSTER還是比較便宜,而且維護相對容易,至於IO問題,可以利用實體硬碟對應或直接在虛擬機裡掛載ISCSI,就可以解決。
bruck提到:
提高可用性的好處
那也得看是不是有這樣的需求...
有些資料庫,並沒有這麼即時的需求,
停個幾天沒有什麼關係,甚至也看到過不少資料庫一個禮拜只需要備份一次
這樣的案例,就沒有高可用性的需求...
一切都要評估需求的啦
這種方式的盲點在於只能處理Hardware failure問題 (還不含storage)
OS與DB本身出錯仍然無能為力
花這種錢的效益有待考慮
會耗很多資源的資料庫主機,大多數都會有不能中斷的需求,差別在於可以容忍的中斷時間,DB CLUSTER一樣是共用STORAGE,如果STORAGE出問題一樣沒救。
如果實體硬碟和虛擬硬碟對應正確的話,因為系統更新或中毒OS出錯時可以還原快照點,而不影響資料庫檔案。
虛擬化的快照
並不適合當做備份使用
久了會有效能問題
把DB的資料檔對應到實體硬碟,就會排除在快照以外,OS的檔案大多數都在開機時載入,比較不受IO效能影響。
就算不用快照,從備份檔還原虛擬機OS(不含資料檔)通常也只要30分鐘,針對需要緊急復原的系統,也可以定期CLONE出另一個備援虛擬機,遇到問題時只要關機,開備援機就可以了,當然對應的實體硬碟資料如何保護就包含在這樣的架構中。
你都能停機做restore了
建cluster意義就降的很低
何況你的cluster並不能處理某些狀況
所以花出去的錢並沒有發揮很好的作用
我看根本也不用買ESXi授權做cluster
直接買CDP就可以了
我沒有提到ESXI的CLUSTER,我也不建議用ESXI的CLUSTER。CDP當然也是一種可行的SOLUTION。我想定的情況是機房已經導入虛擬化後,對於IO量大、可用性需求相對較高但是可以接受停機一個小時左右的某些資料庫主機,能不能也納入同一個虛擬化平台方便統一管理。我的答案是可以,如果只是單純討論備援方案,當然有很多比虛擬化更合適的方案。
ORACLE自己有虛擬化,如果有人說ORACLE資料庫不適合跑在上面的話....我想ORACLE原廠不會同意他的說法吧。
至於非原廠人士、或是沒實際測試過的人士的講法,可能是有先入為主的觀念或是以前虛擬化技術還不成熟時的刻板印象吧。
如果你家的 DB 吃的資源不多,跑在 VM 上的確是無所謂。
但一般使用的 DB,吃 CPU, 記憶體, 硬碟,是個吃系統資源的怪物,一台高階伺服器的效能怕都無法完全應付 DB 所需,更別提透過 VM 轉換後的效能損失
一台實體伺服器上只有一個 DB VM 的虛擬化,有意義嗎?
一個實際案例是這樣
兩台64GB RAM的主機做ESXi HA
有人執意將SQL server開到40GB記憶體再丟到ESXi上面
這造成什麼問題 ?
HA會有問題, 預設需要保留記憶體給HA用
也就是兩台最多只能用32GB
不然HA啟動轉移時, 記憶體不夠會有非常大的影響
要嘛效能大降, 要嘛需調整為部份OS不隨HA轉移
要做當然可以做
但請回頭想想虛擬化的意義與限制是什麼
謹慎評估你的環境是否適合這樣做
不好意思請問一下, 為何只能使用 32GB? 兩台ESXi 只有一台VM, 假設設定記憶體保留40G, admission control policy 25%(default), 這樣不會有 swap file, 記憶體至少也有40G可用吧?
這是HA的預設的機制
GuestOS要能順利fail over
實體主機需提供足夠的硬體資源
這一點沒問題吧
假設HA cluster只有兩台主機
在記憶體來講
那是不是至少要保留一半的記憶體預備給fail over過來的GuestOS使用 ?
不然就有performance impact
如果你只有一個GuestOS
也沒有起FT
那另一台就沒有GuestOS能用
Fail over就算有warning應該也沒問題
但是代價與所得會不成比例
而且麻煩的是
其他GuestOS因為一個不應該進現有Virtual的主機而可能失卻HA的保護
那SQL還是for test的
真的是講不聽
所以技術上不是不能做
但是你要通盤瞭解後果再做決定
我想虛擬化的主要目的除了有效利用硬體資源外, 還可以提供DR, 老實說個人贊成犧牲一部分的效能來達成DR的目的, 要實體機器上硬體損壞嚴重到必須重建系統, 虛擬化的環境能夠很快的復原, 不需要太多的中斷時間.
新的VMware, Hyper-V 全大多數都仰賴 share storage, 若儲存裝置夠力, 應該就不至於影響太大的效能.
小弟個人以下情形多來幾次,應該就會發現虛擬化的好.
1.老闆要你1小時內建一台server馬上對應------任性鬼又剛好打你考績
2.硬體掛了,等料件要1個月----------死定了
3.設備老舊,找不到零件可維修更換,--------等死
4.重要db記憶體cpu效能不足,要增加硬體,老板不給停機-------我不是神仙馬,要吃草的!
5.機房裡伺服器滿山片野,硬體定期保養維護-------
.......以上小弟都遇到了......還有很多
不過Db也真的是吃資源大怪受不了,跟L牌吃油兇狠一樣
這不可否認,但如果db很重要,多花一點錢提高安全性,減個5趴效能
換來背後的管理方便性,這才是給自己留路走的作法
不過,想問一下
有人用vm虛擬化架構跑oracle過嗎?效果如何?