【長篇教學】為什麼虛擬化是雲端運算的基礎?

最近看了太多雲端運算的文章,每一個人好像都變成雲端運算的專家了。事實上我也看了幾個著名的部落格,也都談到了雲端運算,但怎麼看都是抄來的,而且大部分都是從維基百科抄來的,有良心一點的就翻譯的順暢一點,因此到現在,每當我和客戶談雲端運算的時候,大家都能「背」出一段雲端運算的原理、應用、產品(什麼EC2啊,什麼S3,什麼Salesforce.com)。嘉許當然不是雲端運算的專家,但常常在想雲端運算為什麼一定要和虛擬化扯上關係呢?在這篇文章中我就試著解釋一下。雲端運算最重要的就是Utility的觀念…
能「量化」的資源才能「分配」
我先不說這些無聊的廢話,就想想現在我們每一個家庭的生活狀況吧。家裏一定有水電瓦斯,有水表,電表,瓦斯表或 瓦斯桶。水表記錄了你用了多少水,電表記錄了你用了多少電,單位是立方公尺和度(每小時幾千瓦)。所有的水電都由自來水公司和電力公司提供。自來水公司有錢蓋水庫,有能力鋪水管和淨化水。電力公司更有錢了,可以蓋核電廠,可以拉電纜線,可以架電塔。如此如此,你才有電可用。電力公司自來水公司花大錢做基礎設備,你就有水電可用,你用多少立方公尺,用多少千瓦,就付多少錢,這就是「Utility」的觀念。
上面的Utility說法有一個最關鍵的重點,就是「量化」。有了量後,才能根據這個量來做資源的分配。舉例來說,「一立方公尺」的水收「三塊錢」。就是資源分配的標準範例,用俗話說就是「收費標準」。因此沒有一個量,是無法分配這個資源的。
把電腦的功能量化
雲端運算最通俗的解釋,就是將「電腦的運算能力」「分配」給「需要的人」。十台Google的伺服器可以幫你在一秒內算出從101大樓到士林夜市最快的走法,但在同樣時間要算出蛋白質的DNA結構可能需要一百台,因此這就牽涉到分配的觀念了。上面我們也看到了資源(電腦運算能力)和量(十台,一百台)的分配觀念,套用到水、電的觀念,並沒有太大的差別。
然而在現實的世界中,市場上的CPU計算能力對大部分的個人或公司來說實在是太超過了。如果你只是上上網,打打字,用一台4G記憶體的i7 920 CPU有任何意義嗎?最近MAC BOOK開始流行,但我看到大部分的人就MSN,Facebook或是Twitter一下,或是PPT或是WORD或是EXCEL,這些東西實在是不需要這麼強的硬體。
如此一來就有Google Docs來取代Microsoft Word。你可以用Google Docs做一模一樣的事。如果你的Excel計算很複雜,我相信你在Google Docs上計算出來的結果一定比你單機快很多,因為Google Docs後端一大堆電腦的計算能力一定比你的單機強,這是無法否認的,這就是我們最常說的「雲端運算」的例子。
將應用軟體變成量化的資源分配出去就是SaaS,即「軟體即服務」,並且根據你使用的量來收錢。這個量可以是計算能力,可以是功能,可以是使用時間,反正只要能收到錢,這些廠商是不會吃虧的。
把CPU和記憶體也精確量化
但除了軟體之外,再往下的層次呢?如果我要自己架設一個網站,我的選擇可以是虛擬主機,獨立主機,主機托管或是一大堆主機。前面說過一台主機可能有多個CPU,可能有16GB的RAM,從虛擬主機使用一點點的CPU和RAM,到獨立主機使用4核的CPU和16GB的RAM,我的規格需求大於虛擬主機,但小於獨立主機,那麼我要怎麼選擇呢?選擇虛擬主機的話,網站的速度不夠,選擇獨立主機又太浪費,因此這個量化分的實在是太不夠精細了。
於是VPS出現了。這個所謂的虛擬獨立主機就是一個虛擬機,他佔用了一整台主機的部分資源,並且提供了完整的管理環境。當主機商發現虛擬機竟然可以將一台伺服器的CPU和RAM做更精細的量化時,雲端運算的廠商當然不對放過虛擬機。
虛擬機在雲端運算的角色中,就是將電腦的計算能力作更細化的量化。以VMware ESX為例,在做資源分配時,可以做到以MHz的分配或百分比的分配。而VMware的Memory over-commitment更可以把記憶體也做真正使用上的量化(即需要多少用多少),因此當電腦的運算能力可以再量化時,進入雲端運算的時機就成熟了。
我相信大部分的個人或中小企業很少用過最有名的Amazon EC2的。這就是標準的「平台即服務」的產品。你想租主機架網站,沒問題,你需要多少RAM?多少CPU計算能力都行,我不限制你,我只訂出收費模式。當你的網站只有100人時,用Xeon 3.6GHz中的36MHz就夠了。這時收費可能是1(1%)美元。但當網站有10萬人時,可能需要1800MHz了,這時就收你50美元(50%)。如果沒有虛擬化,我們如何替CPU的計算能力來定價呢?這也是為什麼虛擬化在雲端運算中有這麼重要的地位。
當然雲端運算少不了的就是網路和介面。我們再以水電的例子來說,網路就是將服務送到你家的管線,水管和電線桿及電線。介面就是水龍頭和插座,讓你能真正使用到這些服務。以雲端運算來說,網路連接方式就是網路,如ADSL,無線網路,3G或是光纖,而介面就是瀏覽器。介面的硬體可以是電腦,MID,手機等,只要能讓你用到這些服務的,就是介面的一種。
VMware的vCloud Express以及EC2
有了量化的計算能力,有了管線和介面,那麼大家一定有一個問題,我們是否就可以在「瀏覽器」這個介面上,透過「網路」這個管線,來安裝一個Windows 2003的作業系統在我們的雲端上呢?當然可以。EC2就是幹這事的,而VMware也推出了vCloud Express,讓你直接從VMware虛擬機的模板中立即「生」出一台機器,兩且弄個安裝好的Windows 2003來用,什麼RAM啊,硬碟啊,CPU啊都透過瀏覽器設定,很棒吧?這邊有完整的說明影片,可以看看虛擬機和雲端運算的完美結合是什麼樣子。

抢个沙发,拜读,收获很多。感谢给我们带来新知识。
您好,
實在是看不下去網上抄來的雲端運算的一大堆資訊了。當然網上提到雲端運算和虛擬化之間關係的好文很多,但中文多半是抄維基百科的,我也希望我這篇小小的文章能讓大家對雲端運算和虛擬化的關係有更熱烈的討論。
昨晚下载列车时刻表,居然有什么云端下载,云端封装:http://www.jpskb.com/
,无语简直!
呵呵
所以我一直說「雲端」這個字已經變成buzzword了,什麼都要和雲端沾上邊,不過這也是好事,因為更多人了解雲端,才會有更好更新的技術出來,不過列車時刻表真的不知道怎麼和雲端掛上勾,呵呵。
切確的學到什麼叫做[雲端],真的講的非常讓人了解~~感謝!!
虛擬化、雲端、儲存三者好像已經無法分開了。相信以後會有更多的討論的。
老實說,我只是不想脫離時代,才想瞭解這個新的雲端運算~你說的很好~像我這類普羅大眾,不用太多專業知識都能看懂,謝謝你!
您好,謝謝您的回應。
現在Google時代,沒有不知道的事,只有「還不知道」的事。每個人都可以找到所有問題的答案,但就是因為資訊太過發達,反而太多垃圾資訊,讓人不知如何是好。嘉許只想就我所了解以及經驗的部分提出自己的看法,一定也有錯誤的地方,也希望各位先進多指教。
嘉許您好~
想請較您一些關於虛擬機與雲端計算的概念
1.我在馬大康博士在一份報告─「搶先揭露微軟私有雲解決方案全貌」中提到一些虛擬化技術的運用,他指出"線上雲端運算服務系統提供企業用戶租用虛擬伺服器,動態資料中心自動依指定產生虛擬伺服器,提供線上服務。" ->請教您,當提供虛擬機時,其虛擬機的效能(如CPU數量、Memory大小)就會受限於架設虛擬服務的實體server上?
2.一樣是馬大康博士報告中提到的"當資料中心監控系統發現SQL資料庫CPU使用量超過臨界值,會自動觸發SQL資料庫轉移到第二台高階實體伺服器上。" -> 這個動作是否是Live Migration?
3.在"iThome online"中有一文章─雲端技術進入企業,私有雲應用開始發酵(王宏仁) " -> from http://www.ithome.com.tw/itadm/article.php?c=59007&s=7
提到幾點如下:
a. 有少數臺灣企業真能找到雲端運算技術在企業中可行的應用價值。例如有間善於流程創新的半導體龍頭業者,正準備導入雲端運算技術來打造一套處理海量資料的私有雲端系統,用這套系統來分析大量的製程資料,找出調校製程的最佳數據。
b. 一般作法上,半導體業者往往藉助許多BI分析工具來處理這些大量產生的製程數據,例如奇美電子曾規畫打造資料倉儲系統(Data Warehouse),來儲存和分析液晶螢幕產線的各項製程數據。
c. 那間半導體龍頭業者,卻打算導入雲端運算技術Hadoop,來打造一套內部雲端運算系統,透過Hadoop框架集中大量伺服器的運算能力,來達到快速分析龐大製程數據的效果,就像Yahoo也曾運用Hadoop技術,在1小時內分析完過去1~2天才能處理好的大量搜尋Log記錄。
問題1:請教嘉許您,上述提到的雲端計算運用到資料儲上是如何運用的呢? 虛擬化技術或雲端計算是如何提升資料倉儲的效能或效用呢?
問題2:微軟有相對於Hadoop的軟體或解決方案嗎?
以上問題有點多,希望嘉許能播空回覆予我 謝謝~~
嘉許您好~ 想請較您一些關於虛擬機與雲端計算的概念 1.我在馬大康博士在一份報告─「搶先揭露微軟私有雲解決方案全貌」中提到一些虛擬化技術的運用,他指出"線上雲端運算服務系統提供企業用戶租用虛擬伺服器,動態資料中心自動依指定產生虛擬伺服器,提供線上服務。" ->請教您,當提供虛擬機時,其虛擬機的效能(如CPU數量、Memory大小)就會受限於架設虛擬服務的實體server上?
花了點時間看了這個PPT,所以沒有馬上回您,請您別見怪。我先回答大致性的問題。事實上,XaaS可以說是雲端運算的概念,不管是SaaS,就是把軟體用服務的方式呈現,或是PaaS,把平台的方式用服務表現(這邊我們說的平台多半是一個OS承載之上的服務,如SQL、EXCHANGE、IIS等),或是IaaS(把架構用服務的方式表示,架構可指OS),虛擬化只能在IaaS這一塊表現,因為虛擬化代表的就是將OS+CPU+RAM的量化。
事實上,IaaS根本了無新意,只是將常做的動作用一連串的API自動化。舉例來說,在線上立即啟動一個OS,自己分配CPU、RAM及磁碟大小,這只是透過一個網頁介面進行「建立虛擬機」的動作。有一個安裝好的OS,你隨時可以用Clone的方式快速建立虛擬機,當這些大企業在拼命推行這概念,說有多麼多麼棒,但你只要多想想虛擬機的建立,Clone的概念,Snapshot的概念,這些所謂的IaaS,充其量就是虛擬機+java+api+powershell+web server,真的就是如此,當然商業或想法上的確是很棒的點子。
回到您的問題。從IaaS中產生整體架構時,別忘了虛擬機最棒的,就是將CPU的資源量化了。可以用MHz或是%來表示,因此你的Infrastructure性能當然是受實體伺服器的影響。但別忘了一件最重要的事。但虛擬機的好處就是將CPU+RAM+OS分的更細,如果我們說一個CPU+RAM+OS的虛擬機為一個Infrastructure Unit(簡稱IU),那麼現在的雲端運算,就是根據你的需求產生不同IU的機制,然後根據不同IU來收費,如此而已。
2.一樣是馬大康博士報告中提到的"當資料中心監控系統發現SQL資料庫CPU使用量超過臨界值,會自動觸發SQL資料庫轉移到第二台高階實體伺服器上。" -> 這個動作是否是Live Migration?
熟悉ESX的朋友們,知道這是啥了吧?DRS。微軟的這玩意在ESX3.5就有了,DRS可以自訂資源的分配值,Live migration只是做DRS的一個手段,先要有DRS來確定資源的分配,再決定要不要migrate到更多資源的機器上。光從這個PPT來看,這個功能在VMware幾年前就已經完成了。
3.在"iThome online"中有一文章─雲端技術進入企業,私有雲應用開始發酵(王宏仁) " -> from http://www.ithome.com.tw/itadm/article.php?c=59007&s=7 提到幾點如下: a. 有少數臺灣企業真能找到雲端運算技術在企業中可行的應用價值。例如有間善於流程創新的半導體龍頭業者,正準備導入雲端運算技術來打造一套處理海量資料的私有雲端系統,用這套系統來分析大量的製程資料,找出調校製程的最佳數據。 b. 一般作法上,半導體業者往往藉助許多BI分析工具來處理這些大量產生的製程數據,例如奇美電子曾規畫打造資料倉儲系統(Data Warehouse),來儲存和分析液晶螢幕產線的各項製程數據。 c. 那間半導體龍頭業者,卻打算導入雲端運算技術Hadoop,來打造一套內部雲端運算系統,透過Hadoop框架集中大量伺服器的運算能力,來達到快速分析龐大製程數據的效果,就像Yahoo也曾運用Hadoop技術,在1小時內分析完過去1~2天才能處理好的大量搜尋Log記錄。問題1:請教嘉許您,上述提到的雲端計算運用到資料儲上是如何運用的呢?
雲端不管怎麼用,還是離不開用多台電腦透過服務形式完成單一任務的原理。不管是CRM、ERP、BI,就是把一大群電腦的資源先細化成不同的IU,然後再把這些IU當成積木堆起來做成一個服務。我這麼說吧,把目前的伺服器再細化,然後再重組,就是IaaS目前最大的用處。
我看了你說的那篇報導,我不了解他們的做法,但硬要說這是雲端運算也行,說是利用多台電腦的共同能力也行,不過雲端運算這個字真的變buzzword,甚至是hypeword了。
Hadoop的資料網路上很多,微軟目前主推的還是底層以Hyper-V為主,中間以azure為主,上層當然就跑自己的其它服務。馬大康博士的那篇PPT說的非常清楚了,就是微軟的解決方案,我們可以把馬大康博士那篇文章當做一個主題來討論,因為客戶之間也很興趣呢!
怎麼感覺這好像是功課…..
其實我是看了嘉許的書(VMware Hyper-V R2企業級應用)後,又去上了微軟的課,也看了一些資料,對虛擬化和雲端計算還是有以上的疑問,所以請教嘉許。嗯 當然也是因為我們公司希望利用虛擬化or或是雲端計算提升資料倉儲的效能或效用?但是我還是有點疑惑。所以就發問啦~謝謝您囉~
再請教您一個問題,如果我有4台server各2顆cpu,所以總共有8顆CPU,如果我要運算一個程式需要3顆CPU,這樣是否可以用雲端運算技術達成?如果可以那會如何去實現呢?還是說這其實不算是雲端運算的範疇了呢??謝謝~
您好,
嚴格來說,這比較偏向分散運算中的Grid,利用網格中的節點來幫助您運算。實現的方法,一般是用Linux下的mpich可以完成,但分配CPU還是得自己寫,因為mpich似乎只能管到Server。這時最棒的方法,還是運用虛擬機啦!
將4台Server各安裝2個VM,每一個VM分配50%的CPU(雖然會有點少),然後再用mpich來抓出三台Linux虛擬機,這不就是三個CPU了嗎?
再請教您一個問題,如果我有4台server各2顆cpu,所以總共有8顆CPU,如果我要運算一個程式需要3顆CPU
——————
這個就是傳統解決問題的方式
你寫的程式跟你硬體是tight coupling 就是說只要硬體換了你軟體就跑不了,或者會出錯
這時就要重新寫你的程式, 小的程式還好,大的程式你就完蛋了
這是以前程設師的惡夢
幸好現在有虛擬化
但通常現在寫程式 通常不會假設要跑多少個CPU
讓系統自由安排資源 是比較好的作法
傳統應該就是綁CPU,但用虛擬機的話較可以自由分配,但這真的比較像grid了。
嚴格來說,這比較偏向分散運算中的Grid,利用網格中的節點來幫助您運算
其實cloud 也有節點(node)
你如果安裝ubuntu 的cloud 就會問你是否要安裝成node
—————–
我在補充一下
如果你有2000台電腦,這個算小型的
你如果專門要寫程式跑在這2000台CPU 上
這個就會寫死你
如果那2000台電腦是不同硬體架構(apple, Sun, HP…)
如果他們又是跑不同OS( BSD, unix, windows)
如果沒有虛擬化的話 足夠殺死一堆MIS和 軟體工程師
現在硬體架構較統一了,資訊從業人員的日子也好過一點,再加上有虛擬化的幫助,真的讓管理和開發方便多了。不過我遇到的許多CIO或是IT主管,竟然對虛擬化一點概念也沒有,還是以為虛擬化就是VMware Workstation,甚至他們公司的產品在測試是否支援虛擬化時,也放在VMware Workstation中測試,不過我想隨著虛擬化的聲浪越來越大,他們也會開始進入這領域的。
确实收获不少!
您好,
你的網名和我的好像啊,呵呵。