虛擬化只是個工具而并非萬能藥 |
發(fā)布時間: 2012/8/10 18:58:26 |
虛擬化只是個工具而并非萬能藥隨著虛擬化逐漸成熟,將SQL Server實例遷移到虛擬化服務器上也越來越流行。物理機的數(shù)目在減少,隨之而來的是耗電量的減少和License成本的降低,而且更易于管理。聽起來很有優(yōu)勢,但并不是所有場景都適合SQL Server虛擬化。 虛擬化使I/O性能降低 要想有好的性能,數(shù)據(jù)庫需要的最多的單個資源除了CPU外就是磁盤I/O了。當物理服務器只專用于一個SQL Server實例時更容易改善I/O瓶頸問題。如果IOPS(每秒的輸入輸出操作)投入產(chǎn)出比合適的話,你可以將傳統(tǒng)硬盤換為更快的固態(tài)硬盤,或者增加更多的內(nèi)存以增大緩存。主要的考量是權衡成本,因為這種升級不會太便宜。 在SQL Server虛擬化期間,盡管硬件一定會比遷移前的服務器要好,至少是要一樣好。而對I/O指標來說就不一定,因為你最后要實現(xiàn)的就是要共享I/O帶寬以充分使用數(shù)據(jù)庫。有些遷移的方法,例如:你可以將數(shù)據(jù)庫存儲放在物理軸和I/O通道上,這樣就可以做到與其他虛擬機隔離,但是這必須在遷移到虛擬機之前完成。 這是個常見的例子:許多專用的數(shù)據(jù)庫服務器在存儲陣列中使用RAID1+0(即RAID10),這種方案成本高但效果很好。而另一方面,虛擬機可能使用RAID5以平衡性能和冗余。之前對硬件優(yōu)化的工作負擔會在后面受損,除非你能直接將物理磁盤掛在虛擬機上而非原來的RAID1+0的設置上。 這并不是說磁盤一定要放在本地存儲。在虛擬機上的SAN有可能比物理機上的本地磁盤還要好,至少是不相上下。那么IOPS呢?其實并不是一個一定要達到的精確技術指標。 如果是自己構建虛擬主機,你就能對其控制。但是如果是使用別人的虛擬主機,就只能使用大小統(tǒng)一設置的主機。 當虛擬內(nèi)存不夠時 物理內(nèi)存對數(shù)據(jù)庫有很多好處:內(nèi)存是執(zhí)行操作和緩存I/O的地方。所以SQL Server在獨立的機器上工作得最好就是這個原因,因為它能隨意根據(jù)需要供應內(nèi)存,不用直接與同一臺機器上的其他應用競爭內(nèi)存。拇指規(guī)則就是使整個數(shù)據(jù)庫有足夠的內(nèi)存可用,或者至少是最常用的部分只要有可能就被緩存在內(nèi)存中。 相同的數(shù)據(jù)庫服務器的虛擬化版本需要有與物理服務器等量的內(nèi)存,或者比物理服務器內(nèi)存還要更多。許多虛擬系統(tǒng)都通過內(nèi)存共享技術允許多個虛擬機共享一致的內(nèi)存頁。但是這種共享是對每個虛擬機上運行的操作系統(tǒng)而言的。這些內(nèi)存大多在虛擬機之間可共享,而并非是數(shù)據(jù)庫本身的組成部分。 這是另外一個領域,為SQL Server實例做內(nèi)存消耗統(tǒng)計是有幫助的。這樣你就能看到產(chǎn)品數(shù)據(jù)庫到底需要使用多少內(nèi)存,你最好能及時得到通知,了解在虛擬機中如何根據(jù)內(nèi)存需求調(diào)整資源的分配。 除非必要否則不要使用虛擬化 另外,還會迫不得已使用虛擬化的情況,這意味著計劃中就沒有把虛擬化的優(yōu)點考慮在內(nèi),只是在沒上這個技術的時候,系統(tǒng)的表現(xiàn)更糟糕,而希望虛擬化能夠解決一些問題。 例如,如果你有一個歷史遺留的SQL Server,獨占一臺Server.按如今的硬件標準,如果對服務器的訪問量不大,這種情況比較適合做虛擬化。機器越老或越慢,你越能從虛擬化中獲得更多優(yōu)勢。合并多臺服務器意味著消耗的電力更少,制冷和空間占用也都減少了。 另一方面,如果是一個完整的SQL Server集群,想通過虛擬化節(jié)約成本或獲得性能優(yōu)勢。將集群虛擬化可能在耗電量和制冷方面有所節(jié)省——但如果虛擬化是以整體性能為代價的,那最好還是不要做虛擬化。 SQL Server虛擬化只應該在有好的業(yè)務需求的時候實施,而且在此過程中也不應失去整體IOPS或內(nèi)存。盡管這些優(yōu)點使虛擬化看上去很神奇,但重要的是要記住虛擬化只是個工具而不是所謂的萬能藥。 本文出自:億恩科技【mszdt.com】 |