【電腦技術】(轉)最具有權威性的虛擬盤終極教程(十一)|安心電腦維修聯盟

文章出處:http://bbs.icafe8.com/thread-58821-1-1.html

  

  

第十一篇:<另外一種虛擬盤——無盤>
 

估計大家看到本章的標題有點疑問或者不解,無盤就無盤唄,幹嘛還加個“另外一種虛擬盤”? 難道是故弄玄虛? 其實不然,那麼首先希望大家不要誤會,我不是來講有盤好還是無盤好的問題,因為在我看來只要你能做好,有盤無盤都一樣,之所以和大家講無盤就是希望能通過我的講解讓大家能夠像了解虛擬盤一樣,來了解無盤,從而能為網吧提供更全面的服務,因為最初我就說過了,任何技術,工具都是為網吧的經營而服務的,所以說只要你能用你的技術協助網吧從技術層面提升網吧的經營業績,你用啥,老闆不會去管的,當然我的這些說法可能也會很多人不認同,不過沒關係,因為技術的討論本來就是博弈之後達到統一認知的過程,如果你感覺我說的對,那就多多支持,如果感覺說的不對,提出鄙視,我也接受。

 既然虛擬盤我們已經有解決方案,那麼下面我就再來談下如何在網吧用好無盤這個方案,接下來的文章會從以下幾個方面展開!
1)無盤的一些名詞解釋。
2)虛擬盤和無盤的差別。
3)無盤的回寫到底有多大。
4)硬盤的寫入性能分析。
5)如何解決無盤的回寫壓力。

  

一、無盤的一些名詞解釋。

為了方便後面詳細講解無盤的一些問題,首先讓我們來了解下無盤的一些名詞含義。

1、PXE: 它的中文翻譯是“預啟動執行環境”,我們這裡可以理解為是網卡的一種功能,而我們表面上看到的現象就是網卡支持網絡啟動,比如過去無盤使用的網卡都會帶一個BootRom的插槽,如果插槽裡插入一塊啟動芯片後,就可以網絡啟動了,而這也是無盤必須環境要求。 不過隨著技術的發展,現在主板集成的網卡都會支持這個功能。

2、DHCP:它的中文名叫“動態主機設置協議”,而他的作用就是為客戶機分配IP地址,而我們平時在做無盤時,在客戶機輸入客戶機的IP和計算機名,就是為了確定這台機器的IP地址和(MAC)網卡地址對應關係。

3、TFTP:簡單文件傳輸協議,是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。 我們可以看到的典型應用就是在弄網絡GHOST的時候用到的tftp32,實際上就是個TFTP服務器,用在無盤上時,主要是為了傳輸客戶機的網卡驅動以及其它一些系統啟動文件。

4、PNP:它的中文名稱叫做“即插即用”,而在無盤上來說實際上就是為網卡添加一個支持網絡啟動的驅動文件,而我們在做無盤系統時,經常發現系統啟動時XP滾動條,有的網卡滾動條就半圈,有的網卡要兩三圈,甚至更多,實際上就和PNP這個過程有關係。

5、回寫:因為無盤客戶機是沒有硬盤的,所以顧客在使用的過程對系統或遊戲所做的添加,刪除,修改,都會臨時寫回無盤的服務器上,而這個將數據寫回服務器的過程就叫做回寫,存放這些回寫數據的硬盤就叫做回寫盤了。 其實虛擬盤同樣存在回寫,只是這些文件都寫在本地硬盤了,因為量比較小,我們基本感覺不到,所以,一般提到回寫只存在於無盤上。

二、虛擬盤和無盤的差別。

因為之前我們就說,無盤只是另外一種虛擬盤而已,可能有些人還不太相信,那麼問問我們的網管,無盤和虛擬盤的差別到底是啥? 
估計得到的答案也是不盡相同,那麼虛擬盤到底和無盤有什麼不同? 
我是這樣來理解的,從虛擬盤和無盤的作用和工作流程來區分,主要存在以下不同。

51.jpg  

通過這個對比我們可以很容易看出無盤和虛擬盤的差別,比如係統啟動部分虛擬盤是不需要這個過程的,因此我們可以得出一個初步結論,無盤和虛擬盤的主要差別,就是在是否支持系統啟動。 支持系統啟動的虛擬盤就叫無盤了。 而這種虛擬盤解決的問題之一就是系統啟動。

接下來我們再來看下無盤和虛擬盤在使用階段有什麼不同,在客戶機正常使用階段,無盤和虛擬盤相同的部分是數據讀取部分,而唯一存在差別的地方就是寫入數據,因為虛擬盤在過去主要是應用在有盤網吧的,而在有盤網吧客戶機本地也是有硬盤的,為了減少虛擬盤服務器的壓力,虛擬盤不允許客戶機向虛擬盤寫入任何文件,同時對於客戶機來說,往虛擬盤寫入數據的機率並不是非常大,數據也不是非常多,所以向虛擬盤寫入數據時,都會寫到客戶機本地硬盤裡,而網維大師虛擬盤就是將寫向虛擬盤服務器的文件,直接寫到客戶機的D盤。

但是這個數據寫入過程在無盤上就變的麻煩了,因為這個寫入數據的量是完全不一樣的,一般顧客上機1天,可能對虛擬盤的寫入也不會超過200MB,但是對於無盤來說這個數據寫入量將會放大十倍,甚至幾十倍,同時對於無盤的回寫來說並不是數據寫到服務器上就完事了,可能還會有相當一部分會再被客戶機讀出來使用,而且回寫的這些數據多半是細碎,無法像虛擬盤一樣進行緩存的,而這就是無盤這種虛擬盤解決的第二個問題——回寫!

三、無盤回寫到底有多大?

為了能深入了解無盤的壓力到底有多大,我拿自己的網吧做了一個萬惡的測試,這個網吧有110台機器,網吧的顧客群體主要是學生,上班族,民工,以及一些組團電影族,可以說是顧客群體比較全面,但是因為種種原因,目前網吧的上座率並不是不高,平均每天上座率大概在60%左右,所以我們暫且把這個網吧理解為60台機器滿座好了。

之所以說這是個萬惡的測試,是因為我為了模擬最古老的無盤環境,無論是服務器還是客戶機都設置成了0緩存,因為開始服務器準備不充足,一台1讀3寫的服務器帶所有機器,結果上達到50幾個人的時候就開始出現偶爾的秒卡,甚至大卡,開機慢,遊戲進入速度慢問題。 後來又臨時加了一台同樣的服務器,才得以讓讓這些現象消失,並完成這次測試,為了避免週六週日造成的數據影響,我連續測試了一周,測試數據如下:

52.jpg  

(服務器運行一周的截圖)

在測試的一周裡,通過計費軟件統計,這一周裡所有的客戶機平均每天上機759小時,平均每天上機169人次,通過上圖我們看到,在這一周裡,所有客戶機一共向服務器回寫了3221G數據。 平均到每天是回寫460G左右,如果再平均到每台客戶機的話,每台客戶機每天將會向服務器寫入約7.7G之多的數據,這個數字對於有盤來說簡直是小菜一碟,但是對於無盤來說可能就會出現致命的問題,比如之前我說的,秒卡。 而這個回寫量只是在60台機器的網吧產生的,如果是100台機器的網吧,每天將產生770G的回寫量​​,200台機器的網吧每日將產生1540G回寫,當你的網吧規模達到500台機器時,客戶機每日的回寫量將達到3850G之巨! 那麼為什麼會產生這麼大的回寫? 其實原因很簡單,因為客戶機沒有硬盤,客戶機在使用過程中產生的一切數據都要寫到服務器上,比如電影,下載mp3,遊戲讀下來的數據,遊戲更新不及時產生的遊戲更新問題等等,而我剛好遇到了一個關於遊戲造成的回寫問題。

53.jpg  

這就是我網吧的留言板,有個顧客在我網吧玩了好久終於忍不住留言了,他說:
幫忙下一下(勇士OL)謝謝,要么每天來都要花30分鐘下載這個遊戲,謝謝了!

我看到這個留言後說實話,感覺是有點暈的,因為我到這個遊戲的官方網站看了下,這個遊戲安裝包是729MB,安裝完成後2308MB,在這個過程中,下載這個過程就是純回寫,而安裝這個過程就是讀取+寫入的,因為安裝包就是回寫的數據,當安裝包解壓時,肯定是要把之前寫入的數據再拿回來用,所以這組可以證明我們之前說的,無盤的回寫中,是讀寫並存的。 而這只是這一個顧客因為沒有這個遊戲就要產生3037MB的回寫,從留言上來看,他一個人每天就可以產生這麼多回寫,如果再往細了說,安裝包肯定不是最新版本,安裝完了還要自動更新一下,產生一定的回寫,下載安裝過程太慢,他再看看電影,下下mp3,那就真有的搞了,所以說,對於無盤網吧你可千萬把遊戲搞多一點,最好把順網游戲中心的3500G遊戲都下載下來,否則太恐怖了!

  好了,有點扯偏了,那麼通過以上的數據我們可以看出,無盤網吧的回寫量確實蠻恐怖的,我不知道大家如何看待這個數據,至少在我沒仔細觀察過之前,我確實不知道會有這麼多回寫。

現在我們知道產生回寫的一些因素,那麼我們排除掉這些特別因素之外,還會有哪些回寫數據產生呢? 帶著這個疑問,我又做了一個測試,我測試了一下一些比較熱門的遊戲,還有xp啟動這些網吧必備應用的數據,那麼看似不起眼的一些應用,將會產生什麼數量級別的回寫呢?

讓我們一起看一組數據! 我們的測試環境是這樣的:主板P31 內存2G CPU:E2180顯卡9600GT。

以下測試均是進入到遊戲畫面後,為了等待回寫完全結束,均等待了5分鐘後的回寫數據,測試數據如下。

54.jpg  

從上面的數據我們可以看到,PPlive的回寫量名列前茅,啟動PPlive只需要讀16MB的數據,但是啟動好後產生的回寫卻達到了400多MB,而導致PPlive會產生如此多的回寫數據的原因是,它每次啟動都會產生一個512MB的緩存文件,所以才會產生這麼多的回寫,那麼雖然PPlive會產生如此多的回寫,但是因為他比較佔帶寬,很多網管都把他給禁止掉了,而且也並不是每位顧客都會去看PPlive,所以對於PPlive的問題我們暫且擱置不多說。 那麼讓我們看下顧客上機必須用到的應用有哪些!

1、XP啟動:要上網,系統總是要開機的,通過上面的數據我們會看到,XP啟動一次,讀取數據209MB,而寫入數據卻達到了130MB左右,說到這里肯定有同學要說了,你係統做的太爛了,回寫竟然這麼多,其實對於純淨的XP啟動造成的回寫確實很少,大概在50MB~80MB左右,但是當你安裝好各種軟件後,回寫量基本可以達到這個級別,不信的話大家自己都可以測試下!

2、QQ2010“在我觀察到的情況,幾乎99%的顧客在上機後,第一件事肯定是登陸QQ,我們也可以看到QQ2010版本啟動後會讀取113MB,而回寫卻有136MB ,而且我只是登陸QQ而已,並沒再做其他任何操作。

3、結賬下機後造成的垃圾回寫,我相信絕大多數的網吧,顧客下機後的操作方式一定是,結賬後自動重啟:

55.jpg  

(結賬下機操作)當我們看到到這裡,基本上不需要再看其他的數據了,因為只是XP啟動,和QQ這兩個顧客上網100%都會用到的操作,就足以產生非常巨大的垃圾回寫了!

而對於遊戲也好,PPlive也好,畢竟不是每個顧客都會去用,實際上我們只要去解決xp啟動和QQ的回寫,就可以很大程度降低無盤的回寫壓力了,那讓我們看下這些操作一共會產生多少回寫。

顧客一次完整的上機包含,開機,上QQ,結賬下機後客戶機自動重啟一次,在這一次完整的上機過程中,一台客戶機將會產生:開機產生的130MB回寫+啟動QQ產生的130MB回寫+顧客下機後,客戶機再次開機產生的回寫130MB=396MB。

我們之前的測試數據是,所有客戶機平均1天的回寫量是460G,平均每天的上機次數為169次,那麼在這一天只是顧客上機一次的回寫就達到396MB*169次≈ 65G。

而在一天中,顧客上機產生的回寫量就要佔總回寫量的14%左右。

同時有些無盤網吧的維護人員,或者是有盤剛開始做無盤的技術人員,為了避免少開超級用戶,或者習慣了有盤的維護方式,會採取一些開機命令更新,安裝軟件之類的操作,而這又無意造成了多餘的回寫!

所以說在無盤網吧里,這個結賬後的操作一定要設置成關機,同時盡量少使用開機命令以及開機安裝軟件來減少無盤不必要的回寫。

 

四、硬盤的寫入性能分析

那麼如此之多的回寫數據在過去都是要回寫到服務器的硬盤裡的,那磁盤在這種應用環境中的性能是怎樣的呢? 
之前我們已經說過,對於無盤的回寫盤來說,不只是單純的寫那麼簡單,還會有一定量的讀取數據,比如之前提到的顧客自己下載遊戲的例子,顧客下載了一個遊戲安裝包,這個下載過程就是100%的回寫,然後他再安裝遊戲時,就是讀+寫的過程,那麼這個讀取與寫入的比例是怎麼樣的呢? 
在這種讀寫比例下,磁盤的寫入性能又會是怎樣的呢? 為了得到這個數據,我用硬盤哨兵對回寫盤的讀取數據進行了監控,先給大家簡單介紹下硬盤哨兵這個軟件吧。

56.jpg  

這個軟件可以監控硬盤的溫度,以及硬盤的健康狀況,比如是否有壞道等問題他都能告訴你,可以說是個非常不錯的小工具,推薦大家使用。 我用這個軟件監視了一下回寫盤中,寫入後又讀取出來的數據量,由於這個軟件無法總覽數據,所以只能把所有服務器,所有硬盤的數據累加起來再進行統計,一周下來發現總的數據讀取量為1351G左右,也就是在所有的回寫數據中有1351G的數據又被客戶機再次讀回來使用,結合我們之前得到的3221G的寫的數據,可以得出讀和寫的比例大概是3:7左右。

那麼傳統無盤在這種讀寫比例情況下,就不能只是考慮磁盤的寫入性能了,而是考驗磁盤同時讀寫的性能,也就是IOPS(每秒同時輸入輸出)的性能了,因為對於一塊回寫盤來說,他不只是要寫入數據,寫入的過程可能還伴隨著其他客戶機的讀,不過好在的是,如今的無盤技術已經可以很好的緩解這種壓力了,因此在今天我們就不再需要去考驗IOPS性能,而是只要根據磁盤的寫入或讀取性能即可評估出回寫盤的性能了下面我們一起來看下在無盤中視為“神器”的SAS和其他存儲介質的一些測試數據。

參與測試的介質一共有3種,我們一樣繼續按照寫入性能來排序,分別為: 1.5萬轉的SAS盤,1萬轉的迅猛龍硬盤,7200轉的SATA硬盤。 看到這裡可能有些同學會問,為什麼這次對比沒有SSD硬盤?

因為SSD雖然讀取和寫入性能都很快,但是因為固態硬盤的寫入壽命是累計寫入47TB數據就會掛掉了,根據我們之前的數據一周寫入3221G數據,一塊MLC的固態硬盤最多就能用15週,也就是105天左右,同時還因為固態硬盤的容量比較小,而且造價較高,完全不是適合無盤回寫這種環境下使用,所以此次測試沒講SSD列入測試範圍。

57.jpg  

西部數據150G 迅猛龍

58.jpg  

普通的西部數據500G硬盤

59.jpg  

對比數據如下:

60.jpg  

61.jpg  

看到這裡估計大家會有疑問,為什麼同樣是機械硬盤,隨機寫入速度會被隨機讀取速​​度快? 其實這個答案很簡單,因為磁盤是有寫入緩存的,但是並沒有讀取緩存,所謂的磁盤寫緩存就是我們平時買硬盤時提到的16M,32M​​,或64M緩存的硬盤,而這個緩存就是為提升磁盤的寫性能而提供的,因此磁盤的隨機寫入速度會高過磁盤的隨機讀取速​​度,但實際上並不是緩存越大就越好,因為對於硬盤的回寫緩存來說,一樣存在著算法的問題,如果算法不夠好,緩存越大,可能速度越慢! 同時通過設備管理器->磁盤驅動器右鍵我們可以看到寫緩存的存在,如下圖:

62.jpg  

當你將“啟用磁盤上的寫緩存”的勾取消掉之後,隨機速度就會與隨機寫速度一樣了,這裡就不多說了,大家只需要做個了解就好了。

因為之前我們得出一個結論,那就是回寫盤上的的工作環境不只是100%單純的寫,而是讀寫比例為3:7的情況,那麼回寫盤在這種讀寫比例的時候,數據的讀寫一定是隨機的,而不是連續的,因為即便單台客戶機是連續寫入,當多台客戶機同時寫入時,也就變成了隨機寫入。 那麼幾種硬盤在隨機比例為3:7的情況下,性能是怎樣的呢? 讓我們再來看一組測試數據。 

這個測試我是用iometer進行測試的,因為只有這款軟件才能按讀寫比例進行速度測試,測試條件為100%隨機狀態下,30%的讀取,70%的寫入,測試截圖如下:

15000轉SAS硬盤。

63.jpg  

 10000轉迅猛龍硬盤

64.jpg  

7200轉SATA硬盤

65.jpg  

為了方便我們對比,我把以上數據做成了圖表。

66.jpg  

67.jpg  

綜上,100%的完全隨機寫入速度都是比較快的,但是只要加入一定量的隨機寫讀取,那麼硬盤的寫入性能就會下降,無論是15000轉的SAS盤和10000轉的硬盤速度相差還是比較大的,如果為無盤選擇回寫盤,如果只根據性能來選擇肯定是首選SAS,其次迅猛龍,除非非常小的網吧才能選擇SATA盤了。

那麼Raid是否對回寫有幫助呢? 
迅猛龍單盤隨機寫入:
讓我們看一組簡單的數據:

68.jpg  

3塊迅猛龍組Raid0隨機寫入:

69.jpg  

Iometer單盤100%隨機寫入:

70.jpg  

Iometer 3塊迅猛龍組Raid0隨機寫入:

71.jpg  

30%讀,70%寫,單塊迅猛龍:

72.jpg  

30%讀,70%寫,3塊迅猛龍組Raid0

73.jpg  

速度對比如下:

74.jpg  

IOPS對比如下

75.jpg  

從上圖我們可以得出一個結論,那就是Raid對於回寫盤來說有一定的價值,同時又因為傳統無盤只支持一個設置一個回寫分區,因此在傳統無盤上無盤的回寫大家都會去做Raid,但現在已經越來越多的無盤廠商開始支持一種分盤回寫的一種模式,比如100台機器,有3塊回寫盤,那就是1-30號機器用A盤,31-60號用B盤,61-100用C盤。 其實大家都來支持分盤回寫一定是有原因的,而這個原因從測試數據中我們就可以得出。

以例子中的迅猛龍硬盤來說,1塊盤的隨機寫入速度為9MB/S,那麼如果組了Raid後,你會發現他的隨機寫入速度仍然只有13MB/S,那麼如果我們3塊單盤,使用分盤回寫的方式,這三塊盤的回寫負載能力將為9MB/S*3=27MB/S,而如果組成Raid就只有13MB/S,將近損失了50%多的性能,所以對於無盤來說,我們一樣不建議大家組Raid,同時不組Raid還有以下好處:

1、性能提升,隨之而來的就是帶機量提升。
2、如果一塊回寫盤盤壞了,不至於所有機器都無法使用。
3、擴容變的簡單,壓力大了,大不了加一塊硬盤上去就搞定了。
4、設備更換簡單,組Raid必須為磁盤型號,大小,速度一樣才行,而分盤負載不存在這種要求。
5、成本下降,不組Raid時,陣列卡不需要了,即便普通SATA接口萬轉硬盤即可勝任,不一定非要用SAS盤了。

五、如何解決無盤的回寫壓力

那麼從文章開始到現在,我們已經取得了很多非常有用的數據,那現在讓我們來總結下根據這些數據我們都可以得出哪些結論:
在測試的一周中,所有客戶機平均每天的回寫量約為460G,通過計費軟件顯示,每天上機時間為759小時,那麼此時我們就可以得出:  
每客戶機每秒向服務器寫入數據的平均速度為(460G*1024*1024)/(759H*3600)=177KB/S,但是因為是在無任何緩存情況下進行測試的,為了避免回寫速度突發,導致卡機問題,因此我們需要為回寫盤預留三倍性能餘量,也就是177 *3=531KB/S。

接下來讓我們算下回寫盤的負載能力大概是怎樣的。

一塊SAS盤的極限帶機量約為:11*1024/177=64台,預留三倍性能餘量後可帶機64/3=21台,三塊回寫盤大概帶機63。
一塊迅猛龍硬盤的極限帶機量約為:9*1024/177=52台,預留三倍性能餘量後可帶機52/3=17台,三塊回寫盤大概帶機54台。
一塊SATA硬盤的極限帶機量約為:6*1024/177=35台,預留三倍性能餘量後可帶機35/3=11台,三塊回寫盤盤可帶機35台。

以SAS盤為例,在客戶機和服務器都沒緩存的情況下,1塊盤只能帶機21台,那麼如果100台機器就需要5塊硬盤,200台機器就需要10塊回寫盤,當機器台數達到500台時,就需要100塊回寫盤才能搞定,這實在是太誇張了,平均1台服務器放4塊回寫盤,按照這種負載能力,我們將需要25台服務器才能搞定……且不說投資問題,就連管理也是給非常麻煩的事,那對於現在的硬盤用將採取什麼樣的技術方案來解決無盤的回寫問題呢?

結論就是本地回寫緩存!

先來了解下本地回寫緩存的概念:所謂本地回寫緩存,就是將客戶機物理內存拿出一部分做客戶機的“回寫盤”,而這部分緩存只能作為回寫用,客戶機是無法使用這部分緩存來做其他事的,因此我們在設置本地回寫緩存後會看到一個現象,比如你是2G內存,設置了512M的本地回寫緩存,那麼系統開機後的內存佔用就變成了系統自身的內存佔用量+512MB的樣子。

我們既然說本地回寫緩存可以有效解決無盤的回寫問題,讓我們來看下本地回寫緩存到底能解決哪些問題?
1、XP啟動的回寫可以消滅。
2、啟動QQ的回寫可以消滅。
3、玩一些遊戲時,基本在玩1-3個小時都不會向服務器產生或寫。
4、無盤的回寫基本不再需要考慮突發導致的卡機。

如果本地回寫緩存再有一些好的算法的話,還可以繼續優化回寫的問題,那麼我們架設本地回寫緩存沒有任何算法時,可以解決多大的問題。
接下來讓我們按照之前的一個公式來計算下客戶機回寫緩存的作用,目前市面上一些新的無盤支持的回寫緩存大概為32MB~1.5G左右,讓我們看下這些本地緩存能解決多大的問題:
以我們的測試環境為例,這個60台機器的網吧,每天回寫數據為460G左右,平均上機人次在169次左右,平均上機時間759小時,我們假設這些緩存全部用完的情況下,可有效減少回寫量多少G,計算公式為: