VMWare ESX Server效能最佳化

來源:互聯網
上載者:User

標籤:border

VMWare ESX Server效能最佳化

vmware ESX server 是當前伺服器市場上基於intel平台的最流行的虛擬軟體產品。對比其他虛擬軟體產品,如 GSX server 和ms virtual server,ESX的最大優點就是可以大大減少host系統所佔用資源的。ESX server核心直接運行在硬體之上,而且系統穩定性和效能都有很大的提高。
ESX server也很適合企業級應用,因為它支援重要的冗餘功能,比如多路經,以及鏈路綁定。由於有諸如p2v vmotion 和virtualcenter軟體的支援,ESX server 非常適合企業部署
注意 此章節是按照ESX server 2.1.0來介紹的。對於其他版本的ESX server這些方法不一定都可以通用。
介紹
對於大型的ESX server系統來調整效能是一件非常艱巨的任務。ESX server可以在硬體上承載非常大的負載。根據負荷量以及所運行虛擬系統的數量。伺服器的一些子系統可能會達到效能瓶頸。因此非常重要的一件事情就是要評估設計以及配置硬體系統,來保證不會出現系統瓶頸。
理解ESX server僅僅會虛擬化你的負載這個概念很重要,他的意思是說實際上你需要根據原先的計劃來調整ESX server系統。虛擬化很多基礎伺服器或者終端伺服器會對你配置你系統的方法產生巨大影響。另外需要明白ESX server是虛擬化當前的硬體。你還需要根據不同的虛擬作業系統來做相應的系統效能調整。
理解Vmware效能概念
在討論調整ESX Server效能之前,理解虛擬化對效能帶來的影響是很重要的。ESX server虛擬化硬體,而且提供在一個物理機器上運行多個虛擬作業系統的環境。
預設情況下,對於硬體的訪問,比如硬碟,網路,每一個虛擬機器有同等的權利。通常不希望看到一個虛擬系統吃掉了其他虛擬系統所有可用的資源。比如有一個伺服器串連了一個SAN儲存,提供了250MBps頻寬。如果安裝了ESX server,建立了一個虛擬機器測試輸出,一般只有 25-50MBps輸出這麼少,是不是ESX server效能很差?現在,建立另一個虛擬機器,同時運行測試,每一個虛擬系統都可以達到 25-50MBps,你可以繼續這個測試,一直到ESX server核心或者SAN網路產生瓶頸。從這個例子中可以看出ESX server設計上來說是盡量考慮並行可擴充性,而不是某一個虛擬機器的高效能。如果你的應用確實需要某一個子系統的高效能負荷,你最好不要把這個應用放到ESX server 上來。然而如果你有很多伺服器應用但是每個都不是對i/o和cpu要求很高,使用ESX server確實可以節省硬體以及軟體的費用。有些應用程式啟動並執行效能可以和本地運行媲美。
硬體布局
在xserver上配置ESX server的時候,你可以有很豐富的硬體選擇,從2路機器到16路機器64G記憶體,並且聯結SAN儲存。因此,可以做出一個非常好的解決方案,當然硬體的配置是要看自身的需求才有意義。
對於ESX server,硬體子系統容易出現瓶頸的地方通常是:記憶體 磁碟,網路
在虛擬機器中的典型應用比如ESX server通常不會造成cpu的瓶頸。為了避免記憶體瓶頸的產生。盡量選擇高前端匯流排的系統。 ESX server對於cpu到記憶體以及i/o到記憶體的操作很頻繁。他們都會利用前端匯流排。另外盡量加大記憶體,來避免交換分區的產生影響效能。注意,記憶體的需要量是由各個虛擬機器上啟動並執行應用程式需求來決定的。
提示:如果配置445 440,需要每一個SMP板上的記憶體容量相同。如果不同的話,會影響效能。
同記憶體同等重要的就是磁碟系統的調整,對於ESX server磁碟系統的影響尤為重要。承載ESX server核心,以及核心映像,以及控制台系統檔案的磁碟來說應該配備raid1的保護
我們不推薦利用板載lsi作raid,推薦用5i 6i 6m卡,因為板載的lsi的cpu很慢,沒有緩衝,沒有電池保護,因此不建議應用在生產環境
對於VMFS儲存,我們推薦用可以用到的最好的存放裝置來承載。比如:用很多磁碟作raid,磁碟越多,效能越好,盡量用10k或者15k的硬碟。如果用scsi,用u320的磁碟,使用高效能的raid控制器,比如6m,ds4300光纖控制器。使用raid10配置最大的stripe大小。對於serveRaid,使用64k 光纖通道用512k或者1MB 
VMFS檔案系統使用的block大小就是1MB所以盡量的配合他的大小。如果用光纖儲存比如告訴HBA卡比如fc2-133。本身配置SAN 儲存已經是一個非常複雜的任務了,但請盡量給ESX server劃分單獨的儲存分區同。總的來說,調整磁碟系統是一個非常複雜而且耗時間的工作,需要分析利用以及系統負荷,來調整效能。
提示:如果你對ESX server在ds4000上部署非常感興趣,可以參考紅皮書SG24-6434-00 
對於網路設定,我們建議至少有2個千兆網卡(不要共用給控制台系統)網路設定依據於網路布局,比如如果交換器是10/100m那麼配置多個1000m網卡也就沒有意義了。根據網路布局,最好把ESX server串連到一個高速交換器,並可以支援網卡綁定功能。
cpu子系統需要根據所有的虛擬機器以及加上額外的10%-20%的複合計算的。因為ESX server支援到16路cpu,可以很容易在445上部署,請注意,不應該只考慮效能調整,你還應該考慮冗餘等問題
提示:ESX server支援超執行緒,如果是2.1.2版本的話,推薦啟用HT。不過如果用的是2.1.0,強烈建議禁用超執行緒。需要在bios,以及ESX server核心中都禁用。
vmware磁碟分割
在ESX server中,你需要明確集中不同的磁碟儲存類型:
儲存虛擬系統的儲存ESX server核心,分頁檔,日至檔案的,以及控制台系統
虛擬機器運行在VMFS系統上,通常來說,由ESX server預設設定的安裝方法已經非常合適,不需要更多的最佳化了。以下是一個典型的磁碟儲存布局(帶SAN儲存) 
/dev/sda1 * 1 6 47974+ 83 Linux /boot 
/dev/sda2 7 325 2552319 83 Linux / 
/dev/sda3 326 516 1528191 82 Linux swap 
/dev/sda4 517 4442 31411926 f Extended partition 
/dev/sda5 517 4429 31307881+ fb VMFS 
/dev/sda6 4430 4442 103981+ fc VMFS for core dump and swap 
/dev/sdb1 1 17681 142022601 fb VMFS for virtual machines 
注意控制台交換分區的大小是控制台建議最大記憶體的2倍。這樣就允許你添加更多的記憶體給您的server,你也可以設定這個分區是實際應用記憶體的2倍
在外部儲存上,如果存放裝置非常大,建議配置多餘一個的VMFS檔案系統。雖然可能損失一些效能,但是可以保證萬一一個VMFS壞掉了,還有其他的可以工作。注意,如果在小磁碟上劃分了多個VMFS的話,系統效能會下降很多,因為磁頭會來回的在兩個VMFS系統之間移動。
調整控制台系統
因為控制台系統是一個非常微小的redhat系統,控制台的調整空間也就很小。通常來說,控制台系統不需要調整。系統已經運行在3模式下,而且必要的服務已經啟動。
唯一個可以對效能有一點提高的就是禁用一些虛擬控制台。可以再/etc/inittab種注釋掉tty4 tty5 tty6 
例子
# Run gettys in standard runlevels 
1:2345:respawn:/usr/sbin/vmkstatus tty1 
2:2345:respawn:/sbin/mingetty tty2 
3:2345:respawn:/sbin/mingetty tty3 
#4:2345:respawn:/sbin/mingetty tty4 
#5:2345:respawn:/sbin/mingetty tty5 
#6:2345:respawn:/sbin/mingetty tty6 
請注意,在控制台系統上如果安裝ibm director agent會很影響效能的,因為它是基於java的。如果一定要安裝 director agent請額外給控制台系統添加至少50MB的記憶體。如果有其他的agents,要相應添加記憶體.雖然控制台系統沒有更多的參數配置,但是如果ESX server承載60個以上的虛擬系統或者在重負載的情況下,有一些情況是需要瞭解的。這種情況下,特別是承載web服務的時候,控制台系統會非常的慢。這時候可以到管理工具裡面增加控制台的內從容量到500MB-800MB,同時考慮到ibm director的影響。
如果vmware的管理借口仍然很慢,更改http進程的優先全縣。登陸進入控制台系統,檢查進程id 
ps -axw |grep http 
輸出入下,可以看到httpd線程的id是1431,現在便可以調整優先許可權了
renice -10 -p 1431 
[[email protected] root]# ps -axw 
PID TTY STAT TIME COMMAND 
1 ? S 0:03 init 
1431 ? S 0:00 /usr/lib/vmware-mui/apache/bin/httpd -DSSL 
-DSSL_ONLY -DSTANDARD_PORTS -DESX -d /usr/lib/vmware-mui/apach 
1166 pts/0 R 0:00 ps -axw 
[[email protected] root]# ps -p 1431 
PID TTY TIME CMD 
1431 ? 00:00:00 httpd 
[[email protected] root]# renice -10 -p 1431 
1431: old priority 0, new priority -10 
這樣httpd的許可權已經得到了調整,相反的可以用-15減少httpd 的優先許可權
除了給httpd增加cpu時間之外,也可以調整為web服務保留的記憶體,如果有80個虛擬系統,要把預設的記憶體保留從24MB調整到更高,可以調整實際共用的記憶體,利用設定檔/etc/vmware/config ,例如從24MB提高到28MB 如下
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
# The setting below increases the memory shares available for the httpd 
mui.vmdb.shmSize = "29360128" 
renice命令會即時生效,但記憶體的擴大需要重新啟動httpd服務
killall -HUP httpd 
為了確保可以在重負荷下登陸控制台,推薦把vmware連接逾時的時間從30秒提高到更高的數值。可以通過修改/etc/vmware/config
vmware.fullpath = "/usr/bin/vmware" 
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
mui.vmdb.shmSize = "29360128" 
# The setting below increases the login timeout to 2 minutes 
vmauthd.connectionSetupTimeout = 120 
也可以可以提高vmware-服務的記憶體限制,因為這個操作涉及到vmware線程,因此需要停掉所有虛擬機器才可以完成。修改/etc/vmware/config 提高軟記憶體從64MB到96MB 
vmware.fullpath = "/usr/bin/vmware" 
control.fullpath = "/usr/bin/vmware-control" 
wizard.fullpath = "/usr/bin/vmware-wizard" 
serverd.fullpath = "/usr/sbin/vmware-serverd" 
serverd.init.fullpath = "/usr/lib/vmware/serverd/init.pl" 
mui.vmdb.shmSize = "29360128" 
vmauthd.connectionSetupTimeout = 120 
# The line below will alter the soft memory limit 
vmserverd.limits.memory = “65536” 
# The line below will alter the hard memory limit 
vmserverd.limits.memhard = “98304” 
當完成編輯後,需要重新啟動vmware-serverd服務
shutdown -r now 
或者
killall -HUP vmware-serverd 
注意:需要事先關閉所有的虛擬作業系統
vmware核心調整
vmware核心有很多可以調整的選項,可以有效影響整個的系統效能。這裡列舉一些最重要的ESX server核心參數調整
分頁檔共用
ESX server利用一個演算法來共用同等的記憶體頁面在各個虛擬機器之間,從而可以減少系統的記憶體使用量。頁面共用對系統有很小的影響,甚至會加快頁面查詢的速度。頁面共用可以得到的好處跟系統負載有很大的關係。
我們推薦允許頁面共用,不過如果一定要禁用頁面共用來提高效能,可以修改/etc/init.d/vmware檔案,在-n前添加-m,參看例子
Disabling page sharing — /etc/init.d/vmware 
“cd”$vmdb_answer_SBINDIR”&& 
“$vmdb_answer_SBINDIR”/”$kernloader”-m -n”$maxCPU” 
“$vmdb_answer_LIBDIR”/”$kernel’||exit 1” 
禁止頁面共用,會增大記憶體的需求(虛擬系統是linux的要小於window虛擬系統的增加)
設定網路速度
最好把ESX server上所有的網卡的協商模式從自動協商更改成全雙工系統。所有相關的交換器都要做相應的設定。
可以設定控制台網卡的速度通過/etc/modules.conf 
Setting the network adapter speed — /etc/modules.conf 
alias parport_lowlevel parport_pc 
alias scsi_hostadapter aic7xxx 
alias eth0 e100 e100_speed_duplex=4 
alias scsi_hostadapter ips 
#alias eth1 eepro100 
alias scsi_hostadapter1 aic7xxx 
alias scsi_hostadapter2 aic7xxx 
#alias usb-controller usb-ohci 
alias scsi_hostadapter ips 
alias scsi_hostadapter ips 
具體設定的參數是可以參看網卡驅動的readme檔案
你也可以通過管理借口來設定網路速度還有雙工模式,root登陸到管理介面,在網路連接菜單設定屬性
調整qlogic卡
qlogic的HBA卡提高隊列深度,可以大大的提高效能,預設的隊列深度的數值是16,實驗證明,如果設定成64可以提高效能(實際的隊列深度可能會因為不同的配置有所不同) 
隊列深度可以在/etc/vmware/hwconfig檔案中調整,搜尋device.x.x.x.name = “QLogic Corp QLA2300 64-bit FC-AL Adapter (rev 01)" (根據不同情況數字可能不同)
device.7.3.0.class = "0c0400" 
device.7.3.0.devID = "2300" 
device.7.3.0.name = "QLogic Corp QLA2300 64-bit FC-AL Adapter (rev 01)" 
#下面添加隊列深度
device.esx.7.3.0.options = "ql2xmaxqdepth=64" 
#老版本ESX server添加如下
device.vmnix.7.3.0.options = "ql2xmaxqdepth=64" 
device.7.3.0.subsys_devID = "0009" 
device.7.3.0.subsys_vendor = "1077"
device.7.3.0.vendor = "1077" 
NUMA 調整
ESX Server可以很好的支援目前的NUMA系統,包括x445,如果已經按照p329頁提到的硬體布局最佳化系統,系統已經是比較好配置的了。但是,如果伺服器的負載需要特定的cpu群體,(比如讓某個虛擬伺服器工作在特定的NUMA節點上,如445上的一個smp板)可以利用VMware 管理介面手工把特定的NUMA節點分配給虛擬伺服器。
當16路445運行64個虛擬伺服器的時候,你應該每一個4路smp節點分配16個虛擬伺服器,這樣記憶體均衡的分配會根據cpu的物理位置進行最佳化配置,也就是在一個NUMA節點上啟動並執行虛擬伺服器不會用另一個NUMA節點上的記憶體。
VMware核心交換調整
vmware核心的核心交換器制可以實現在一個機器上運行非常多個虛擬伺服器。然而,當系統開始利用交換器制的時候,磁碟I/O會有一些負載的增加。
為了最佳化效能,需要緊密觀察VMware核心的分頁檔,當vmware核心開始利用交換器制把資料寫到硬碟的時候,你就應該減少虛擬伺服器的數量,或者安裝更多的記憶體了。通常在理想的情況下,在正常工作的時候,不要讓系統開始利用分頁檔。為了讓分頁檔帶來的影響最小,建議把分頁檔放到 VMFS分區
注意:如果在IDE硬碟的刀片上安裝ESX server,你只能把分頁檔放到外部儲存,因為VMFS檔案系統不支援IDE裝置
提醒:多注意觀察/proc/vmware/swap/stats中交換數值的大小,做好讓他保持在0 
虛擬伺服器的調整
相對於非常不錯的預設的VMware核心參數,調整虛擬伺服器可以更好的獲得效能提升,根據虛擬伺服器的負載,本章節的一些提示可以很大程度上改善虛擬伺服器的效能。
這裡要注意的是,任何在虛擬伺服器內的效能調整,都可以在整體上對整個伺服器的效能有好處。
提示:建議在虛擬伺服器內部安裝 vmware 工具,以及相應的驅動,這樣可以提高效能減少整個ESX server的負載
調整虛擬伺服器記憶體位置
當建立了一個新的虛擬伺服器,會要求選擇記憶體的大小,就像安裝一個獨立的伺服器一樣。
如果你給你的虛擬伺服器制定了一個數量的記憶體,而系統和應用程式需要更多記憶體的時候,分頁檔就會產生。
通常情況,分頁檔的產生是很糟糕的,相比快速的記憶體訪問,硬碟的存取要慢的很多,因此,建議記憶體容量的大小,要根據作業系統以及啟動並執行應用程式的共同需求來計算。可以利用系統的監控工具來監控虛擬伺服器的記憶體使用量狀況,公舉可以參看p343 
ESX server提供了很多調整記憶體的分配的方法
可以隨時按照虛擬伺服器的需求來分配記憶體,沒有用的記憶體則共用給其他的虛擬伺服器。雖然調整記憶體的大小很容易,但需要注意,每一次的調整,虛擬伺服器都需要重新啟動虛擬作業系統。
虛擬伺服器可以建立2種類型的虛擬磁碟控制器。Buslogic是預設的,特點是相容性很好,支援廣泛的作業系統。
Buslogic驅動支援所有的guest系統,可以操作1kb小的檔案,如果你的應用程式確實有很多這樣的小檔案,這個驅動確實不錯,但這個驅動不是提高效能的最好選項,如果關心效能,強烈推薦使用lsi驅動,這樣尤其對大檔案可以大幅度提高效能,不過很多作業系統不一定支援這個驅動。 vmware提供了磁碟片映像來滿足linux和windows系統添加驅動的問題。
禁用不使用的裝置
ESX server 提供了豐富的虛擬硬體,但多數時候,很多這些裝置其實沒有什麼用處,比如說apache服務,cdrom只用來第一次裝系統用,以後完全沒有用,串口和並口更是根本用不到。windows會一次次的與這些裝置通訊。這些動作會佔用很多的cpu時間,甚至有時候會導致系統反映緩慢。通常情況下,需要禁用以下不常用的裝置:com1 com2 lpt1 cdrom(禁用cdrom自動運行)
提示:windows2003下可以用以下方法禁用cdrom自動運行
編輯註冊表
HCCU/Software/Microsoft/Windows/CurrentVersion/ 
Policies/Explorer 
設定 NoDriveTypeAutoRun 成為0x000000FF 
網卡驅動
ESX server提供每一個虛擬伺服器的預設的網卡類型是AMD PCNet卡,所有的客戶作業系統都支援這個網卡,相容性很好,相比之下效能稍差,但當安裝vmwaretool之後,因為更新了新的驅動,所以網卡效能會有很大的提高。
提示:如果網卡遇到問題,可以考慮切換回老的amd網卡,來排除錯誤。
調整終端伺服器
虛擬伺服器當運行很多線程的時候,比如終端伺服器,可以通過規定虛擬伺服器中的負載量來得到額外的效能提升。
調整虛擬伺服器負載量需要開啟管理介面,設定伺服器範。即使伺服器被設定成終端伺服器,這個設定會可以加速其他其他運行多個同步線程的伺服器。
當改變了設定之後,需要重新啟動虛擬作業系統使得配置生效
提示:ESX server 1.52 和2.0.1如果設定的話,需要開啟設定檔直接添加
workload=terminalservices

VMWare ESX Server效能最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.