服務器虛擬化已經出現好多年了,技術已趨于成熟。幾年前,DBA還很抵觸把SQL Server遷移到虛擬機,但是現在已經是再平常不過的了。然而,在決定虛擬化之前有一些重要的事情需要考慮。
SQL Server虛擬化最流行的解決方案是VMware和微軟公司的Hyper-V。首先你應該決定采用哪一種方案。VMware仍然是虛擬化領域的王者,有更成熟的產品和更多的功能。而Hyper-V追趕的速度也很快,它比VMware成本要低一些。這兩種產品都提供了免費試用版,如果你正好剛開始使用SQL Server虛擬化,我推薦你兩種產品都試試。
當確定了哪些功能適合自己的企業,并研究清楚它們如何運作之后,你就可以比較成本和性能,然后做決定。SQL Server開發團隊與Windows和Hyper-V團隊都出自微軟,這是他們最大的優勢。如果你只是尋求針對SQL Server的虛擬化方案,那么Hyper-V在大部分情況下都是不錯的選擇。但是如果你的公司還要虛擬化其它服務器,比如Web服務器或者域控制器,而且其他IT人員更熟悉VMware的話,可能堅持用統一方案是你最好的選擇。
接下來要考慮的是什么服務器最先做遷移。首選對象是非生產用的SQL Server。許多公司對于這些環境有不同的稱謂,但是通常他們會叫做“開發環境”,“QA環境”,“階段環境”,“測試環境”,“基準測試環境”以及“壓力測試環境”。更常見的是,超高性能并不是最高的優先級,這就使得對它們做虛擬化更容易了些。此外,在這些環境中的服務器可能比較老舊,經常是淘汰下來的生產環境服務器,有很多使用壽命問題和配置不一致的問題。另外,它們缺乏足夠空間來還原生產數據庫。另一個很糟糕但又常見的現象是,DBA們通常需要過于關注生產環境,而忽略非生產環境。這就可能導致在開發周期內由于硬件老化故障或其它問題丟失數據庫,耗費更多開發時間。如果你是在給這些環境做虛擬化,你會在新硬件上運行,而且你可以使他們配置一致,使DBA們工作更容易。
那么生產服務器怎么樣呢?答案很簡單:視情況而定。根據我的個人經驗和與其它SQL Server DBA們的討論,目前的共識是轉向虛擬化對于較小的或者中等負載的服務器不成問題。這一技術已經足夠先進,虛擬機可以與SQL Server共享內存和磁盤IO。你可以考慮給重負荷的服務器使用VMware或者Hyper-V,但是在這種情況下,我會考慮先做一些基準測試或者壓力測試,確保運行于虛擬層的負載不會使性能下降到不可接受的程度。你還可以使用虛擬化作為運行數據庫應用的初始設置,但是這種方式是否可以成功并不十分確定。這些年來,我經歷過幾種情況,我們做了最壞的打算,構建了超級強大的服務器并運行應用程序,事情并沒有像我們想象的那樣發生。
還有一個問題需要提醒,那就是BI服務器。這些服務器通常托管非常巨大的數據庫,這些數據庫需要非常快速的處理能力。當OLAP多維數據集構建起來的時候,SQL Server可能需要掃描TB級的數據量。在這種情況下,需要那種“猛踩油門”類型的性能,所以虛擬化的總開銷可能難以被接受。例如,在我的公司里,我們沒有看到在虛擬化數據倉庫上的良好性能表現,需要轉換到原來的物理服務器上去。
高可用性在當今時代非常重要,這個領域虛擬化可以提供很大幫助。例如,VMware有一種稱為“vMotion”的技術,支持虛擬機在物理服務器之間移動。這就使得你可以保持一套虛擬機處于運行狀態,同時你只需要把虛擬機轉換到另一臺物理服務器就可以執行硬件升級。或者,如果數據庫應用比較繁忙的話,當前物理服務器不再夠用,你可以在秒級時間內把虛擬機遷移到另一臺物理服務器上去。最終,如果底層物理硬件出故障了,vMotion將自動把對虛擬機的控制轉移到另一臺物理服務器上去。所以,如果你用vMotion在虛擬機上設置了SQL Server,這會極大地提升可用性;如果底層物理硬件出故障了,vMotion將迅速把虛擬機轉移到另一臺物理節點上, SQL Server仍然處于運行狀態。
隨著更多的新特性增加到了虛擬化軟件中,在SQL Server環境下考慮虛擬化實現的可能性也大大增加,而轉向虛擬化的總開銷也變得更低了。