【電腦技術】(轉)最具有權威性的虛擬盤終極教程(八)|安心電腦維修聯盟
文章出處:http://bbs.icafe8.com/thread-58821-1-1.html
第八篇:<虛擬盤的負載能力:下>
神奇的 2/8 原則
首先 , 我來解釋一下什麼 2/8 原則 .
二八原則是 19 世紀末 20 世紀初意大利經濟學家帕累托提出的,這個原則很簡單:
任何一組事物中,最重要的只佔其中約 20% ,其餘的 80% 雖然是多數,但是卻是次要的。
比如 :
80% 的銷售額是源自 20% 的顧客;
80% 的電話是來自 20% 的朋友;
80% 的總產量來自 20% 的產品;
80% 的財富集中在 20% 的人手中;
非常簡單的一個原則 , 但是現實生活中 , 你會發現這樣的規則幾乎是無所不在的 .
基於 2/8 原則 , 在虛擬盤的應用上 , 我們可以引申出內容分級存儲管理的概念 .
什麼是內容分級存儲 ?
是指我們將所有可以用來存儲內容的介質 , 按照性能的不同 , 分成多個級別 , 在進行存儲的時候進行優化選擇 , 將最常用的數據存儲在性能最高的介質中 , 依次類推 , 將最少用到的數據存儲在最廉價的介質上 , 實現速度和容量並重 , 同時造價盡可能的低廉 .
根據 2/8 原則 .80% 的顧客只玩 20% 的遊戲 , 那麼我們只要把這 20% 的遊戲搞的很快 ,就能滿足 80% 的顧客需求 . 這點 , 可以根據網維大師上的 DP 值排行就看的出來 .
再根據 2/8 原則 , 大部分的遊戲 , 在 80% 的運行時間裡 , 往往只讀取其中 20% 的數據 .這一點有根據嗎 ? 有 , 好好的觀察一下 , 我們會得到這麼一個結果 :
魔獸世界這個遊戲雖然有 10 來個 G, 但是進一次遊戲 , 從啟動圖標開始一直到遊戲畫面中 , 需要讀取多少數據呢 ?
答案是 : 只要 200M! 在遊戲裡玩上 1-2 個小時 , 總共讀取的數據也就 500M 而已 !
XP 裝完要至少 1.5G, 但是啟動一個 XP 到桌面 , 需要讀取多少數據呢 ?
答案是 : 只要 250M!
同樣的例子還有很多 , 我們對市面上幾個常見的遊戲均進行了測試 , 結果如下 :
永恆之塔 500MB
穿越火線 600MB
QQ 飛車 95 MB
反恐 OL 240 MB
QQ 炫舞 200 MB
QQ 三國 100 MB
天龍八部 130 MB
魔獸爭霸 3 100 MB
夢幻西遊 30 MB
誅仙 100 MB
QQ 尋仙 470 MB
傳奇 50 MB
魔獸世界 200M
除了 穿越火線 ,QQ 尋仙等幾個騰訊出的 BT 遊戲之外 , 大部分遊戲需要讀取的數據都非常的小 . 在實際遊戲過程中也是一樣的 , 除了切換地圖 , 絕大多數的時間 , 遊戲基本都不讀什麼數據的 .
結論就是 , 儘管遊戲容量非常之大 , 但是其中經常會用到的數據其實非常非常少 .
根據上述分析 , 我們的答案就很簡單了 .
目前的常見介質的特性如下表所示 :
( 圖 1)
內存是性能最好的存儲介質 , 那麼我們就應該將最常被讀取的數據放在內存裡 .
其次固態硬盤也是非常好的介質 , 那麼我們就應該將最熱門的遊戲放在固態硬盤裡 .
…………………………………
最後 ,SATA 硬盤容量又大又便宜 , 那麼我們就把那些最冷門的遊戲放在 SATA 裡 .
內容分級存儲的典型應用
來看看上次網吧流量測試當中的服務器截圖 .
這就是非常典型的內容分級存儲的案例 .
服務器內存共 8G, 我們拿出了 7G 內存用作虛擬盤緩存 , 遊戲放在 3 個硬盤上 ,G 盤為120G 的固態硬盤 ,H 盤和 I 盤是普通的希捷 11 代的 1T 硬盤 , 安裝遊戲一共 1.8T 左右 .
根據上面這個圖 , 我們看到了什麼結果呢 ?
1)
7G 的內存 , 產生了平均 74% 的緩存命中率 . 就是說 , 虛擬盤 74% 的負荷被內存解決了 .
2)
放在固態硬盤上的 100G 遊戲 , 被讀取的數據量為 86616M, 這個數據量是所有硬盤讀取數據量的 86/(86+22+9)=73.4%
3)
H 盤和 I 盤 ,2 個硬盤讀取的數據總量相加 , 只負載了整個虛擬盤負荷的 7.1%
結論 : 在這個服務器上 , 我們成功的利用了 2/8 原則 , 以 7G 內存和 100G 固態硬盤的代價 , 解決了虛擬盤服務器中 93% 的負載 . 這 93% 的數據 , 有著比本地硬盤快的多的速度, 剩下那 7% 的數據 , 也擁有和本地硬盤相近的速度 . 這就是分級存儲的驚人效率 !
這個案例非常完美的解決了虛擬盤的速度問題 , 那麼負載能力會成問題嗎 ?
內容分級存儲服務器的負載能力
這麼一台典型的 , 採用了分級存儲的服務器 , 能負載多少的機器 ?
還是採用上面的分析方法 , 先找服務器瓶頸 .
服務器的瓶頸有可能存在這些方面 :
1.
CPU
2.
網絡 ( 包括交換機 , 網卡 , 網線等 )
3.
軟件 ( 虛擬盤軟件 ,WINDOWS 操作系統本身 )
4.
各個硬盤
仔細分析一下 :
1.
CPU: 以酷睿 5200 這樣 CPU 來說 , 在絕大多數時候 ,CPU 佔用不超過 10%, 所以 CPU 不會成為瓶頸 .
2.
網絡 : 前幾篇的分析結果至少說明 , 單個網卡輸出 50MB/S 是沒有任何問題的 , 那麼如果流量不超過 50M, 網卡也不會是瓶頸 . 如果超過 50M, 我們還可以通過多網卡綁定 , 匯聚, 分流等方式來解決 . 事實上我們測試網維大師的虛擬盤服務器上網卡是可以輸出 90MB/S以上的 . 所以 , 網絡也不會是瓶頸 .
3.
軟件 :, 網維大師在 WIN2003 上可以輸出 200MB/S 以上的速度 ( 多網卡情況下 ), 同時 ,網維大師的新虛擬盤可以同時負載上千個連接 , 所以這個也不是瓶頸 .
4.
硬盤 : 固態硬盤的負載量是 SATA 硬盤的 愛生活愛順網 倍 , 按照 SATA 硬盤 4MB/S 的性能 , 那麼固態硬盤性能只要超過 4*愛生活愛順網=30MB/S, 那麼固態硬盤就不會是瓶頸 .根據前幾節的測試 , 固態硬盤的隨機讀取能力可以達到 100MB/S 以上 , 所以 SATA 硬盤還是瓶頸 .
結論 : 如果網絡沒有大問題 , 如果我用多個網卡分載 , 那麼這個虛擬盤的瓶頸仍然是SATA 硬盤 , 如果客戶機不斷的增加 , 在其他部分出問題之前 ,SATA 硬盤已經頂不住了 .那麼我們就只要計算一下 ,SATA 硬盤在這個案例中的極限負荷能力就行了 .
還記得上一篇中 , 我們計算的傳統虛擬盤的負荷能力吧 ?
單硬盤的負荷能力為 18 台機器 .
這個服務器有 2 個 SATA 硬盤 ,, 那麼就能負荷 36 台 .
這 2 個硬盤負荷的數據量為總數據量的 7%, 那麼該服務器的負荷能力為 36/0.07=517 台 !
就是說 , 當客戶機達到 517 台時 ,2 個 SATA 硬盤的負荷能力達到極限 .
這還是留了 3 倍性能餘量的結果 !
就算是真的達到 517 台客戶機 ,Sata 硬盤到達閥值 , 受影響的也僅僅是 7% 的數據 , 另外93% 的數據仍然流暢無比 !
這 , 是真的嗎 ?
如果你仍有懷疑 , 那我們反過來再算一次 . 看看 517 台客戶機的時候 , 工作情況是怎樣的 .
每用戶平均流量為 75KB/S
那麼 500 台客戶機在線時 , 總平均流量為 75*517=38.4MB/S
我們留出三倍餘量 , 突發速度就是 38.4*3=115MB/S
那麼我們用兩張網卡分流就完全可以應付 !
這 115MB/S 的流量 , 內存緩存掉 74%, 還剩下 :115*26%=29.9MB/S
這 29.9MB/S 的流量 , 固態硬盤分掉 73%, 還剩下 :29.9*27%=8.07MB/S
這 8.07MB/S 的流量 ,2 個 SATA 硬盤平分流量 , 剛好是 SATA 硬盤的極限 .
現在 , 我的朋友 , 您還有懷疑嗎 ?
那麼 , 我再安全一點 , 考慮到用戶太多以後造成的突發情況可能會更大 , 那我不留 3 倍餘量了 , 我留 5 倍的餘量 , 讓這台服務器去帶 300 台機器 .
就這樣 , 只帶 300 台 , 您放心了嗎 ? 您敢帶嗎 ?
我敢 ! 我在 5 月份的時候 , 在我自己的網吧裡 , 就用這麼一台機器帶了 275 台客戶機跑所有的遊戲 ! 很流暢 , 很舒服 , 很安心 ! 一直到 8 月底 , 現在 , 我有了更好的方案 . 才把這台服務器換了下來 .
這一篇的最後 , 我們來算個帳 , 這麼一台可以穩定的帶 300 台機器的虛擬盤服務器 , 裝了 1.8T 的海量的遊戲 , 還能讓你的顧客在 93% 的時間裡 , 都能感受到本地硬盤還要快的速度 , 這個機器要多少錢呢 ?
主板 :intel3000 (1200 左右 )
Cpu: 酷睿 5200 (420 左右 )
內存 :DDR II 2G*4 共 8G (600 左右 )
硬盤 :OCZ 120G 固態硬盤 *1 (2000 左右 )
希捷 7200.11 硬盤 1T*2 (1400 左右 )
機箱 , 電源等 (500 左右 )
-----------------------------------------
總計 :6120 元
一些結論和建議
1.
在我們的方案中 , 內存是 最最最最最最 值得去投資的部分 , 想要虛擬盤性能好 , 無論如何請盡可能的加大服務器的內存數量 ,4G 是最起碼的 , 一般達到 8G 才會開始產生質的飛躍 . 如果你的老闆真的很窮 , 窮到連 8G 內存都買不起的話 , 請告訴他 , 把服務器機箱賣了吧 , 寧可讓服務器裸奔 , 也要加滿內存 !
2.
不要迷信 SAS 硬盤 , 把買 SAS 硬盤的錢換成內存吧 !1 個 300G 的 SAS 硬盤要 1500 塊 ,把它換成 10G 內存 , 效果會好 10 倍 !
3.
網維大師的虛擬盤程序足夠穩定 , 區區 500 台機器搞不垮虛擬盤 .
4.
除了 最熱門的 100G 遊戲 , 其他 2T 的遊戲只要用 SATA 硬盤就足夠了 , 看見有人用SAS300G 硬盤 *6 的方案 , 我的心在滴血 , 為網吧老闆滴血 !
5.
緩存命中率決定了虛擬盤的速度以及負載能力 . 是虛擬盤中最有價值的指標 . 命中率取決於算法和內存大小 , 基於網維大師及其優秀的緩存算法 , 剩下唯一要做的 , 還是那件事情: 不顧一切的增加服務器的內存吧 !
6.
一般建議使用內存 + 小容量固態硬盤 + 大容量 SATA 硬盤這樣的組合方式 . 大家也可以根據自己的喜好來自由搭配 . 內存和固態硬盤的效果是非常好的 , 但是既昂貴 , 容量也有限 , 我們不可能把所有的遊戲數據都放在裡面 , 我們要做的 , 就是要把最常用的數據放在內存中 , 次常用的放在固態硬盤裡 , 不常用的數據放在 SATA 硬盤裡 . 這就是所謂的分級存儲管理 .
這一篇的最後 , 我提一個問題吧 .
這樣的方案已經是最好的方案了嗎 ?
我的答案是 :NO!
下一篇 , 我來講講另一種更有意思的方案 .
(未完待續)