到底什么是云(云計算)
有很多關(guān)于云的介紹。然而,大都是用比喻的形式來(lái)介紹云的屬性。比較有名的比喻是餐館、和電網(wǎng)。但是,云畢竟不是餐館、或電網(wǎng),如果只有這些比喻,仍然不清楚到底什么是云。
本文試圖不用任何比喻,直接從普通的PC電腦入手,逐步遞進(jìn),來(lái)介紹云的構成。你只需要具有初中文化,并對CPU、內存、硬盤(pán)等計算資源有些基本的概念,就可以了。
一、傳統的電腦
當你啟動(dòng)一臺個(gè)人電腦(PC機)時(shí),電腦所做的事,就是把硬盤(pán)上的操作系統(OS,本文以微軟的Windows 8為例,但也可以是Unix、Linux等等)的一些基本的控制程序調入到電腦的內存中去。一旦這個(gè)過(guò)程完成,這臺電腦就完全由Windows 控制了。你所謂的電腦,其實(shí)就是你在上面工作的Windows。
對Windows而言,它所賴(lài)以運行的,只有電腦的處理器(CPU)、內存、和存儲設備(硬盤(pán))這三個(gè)要素(或者說(shuō)三項資源)。電腦還有機箱,但那只是起著(zhù)封裝、固定、再加供電的作用;電腦還有主板,但那只是起著(zhù)電腦內各主要部件通信連接的作用。當然,你可能還需要網(wǎng)絡(luò )連接, 但那只是一項外在資源,不是Windows本身所必需的。作為PC機,你還需要鍵盤(pán)和顯示器等外部設備來(lái)直接在機器上工作。如果是服務(wù)器,則不需要鍵盤(pán)和顯示器,一切都可以是遠程登錄訪(fǎng)問(wèn)。
所以,一臺電腦實(shí)質(zhì)上就是在CPU、內存、和硬盤(pán)上運行的Windows。當打開(kāi)Windows 的任務(wù)管理器,你就會(huì )發(fā)現,CPU和內存大部分是閑置的。特別是CPU,其利用率通常不到10%。Windows在硬盤(pán)占有的空間一般就是幾個(gè)GB。 也就是說(shuō),一個(gè)Windows獨占了電腦的全部資源,而大部分資源又都是閑置的。
那么,有沒(méi)有這種可能:不讓一個(gè)Windows單獨控制一臺機器,而是在一臺機器上安裝多個(gè)操作系統,并且讓它們同時(shí)地運行?
有,最好的方案就是虛擬化 --
二、虛擬化
當安裝一臺電腦的時(shí)候,你不再是安裝普通的Windows,而是安裝一個(gè)資源調度程序,也叫“監控程序” (Hypervisor)。這個(gè)監控程序很小。取決于哪個(gè)廠(chǎng)家的產(chǎn)品,小的只有100多兆字節, 大的也只有幾個(gè)G的字節。 監控程序安裝完成之后,會(huì )得到一個(gè)工作界面,你通過(guò)這個(gè)界面設置一個(gè)網(wǎng)絡(luò )連接(IP地址)。這個(gè)界面很簡(jiǎn)單,多數情況下你可以通過(guò)瀏覽器從別的機器上訪(fǎng)問(wèn)這個(gè)界面。
前面說(shuō)了,一個(gè)Windows機器,實(shí)質(zhì)上就是一個(gè)由CPU、內存、和硬盤(pán)組成的一個(gè)組合體。通過(guò)監控程序的界面,你可以建立多個(gè)組合體。每個(gè)這種組合體,就是一臺仿真的電腦。當監控程序創(chuàng )建一個(gè)仿真的電腦時(shí),它實(shí)際上只是創(chuàng )建了兩個(gè)文件:一個(gè)是關(guān)于這個(gè)組合體的配置信息(被分配了多少CPU、多大內存、多大的硬盤(pán));另外一個(gè)文件,這個(gè)仿真電腦的“硬盤(pán)”,這個(gè)仿真的“硬盤(pán)”實(shí)際上就是一個(gè)封裝的文件(在有些情況下,也可以是幾個(gè)文件)。
當你點(diǎn)擊“開(kāi)機”來(lái)啟動(dòng)這個(gè)仿真的電腦的時(shí)候,監控程序開(kāi)始實(shí)際為它分配CPU和內存、并且啟動(dòng)它。當然,這“臺”仿真的電腦在第一次啟動(dòng)的時(shí)候,是沒(méi)有安裝任何操作系統的“裸機”,那個(gè)封裝的文件也是空的,這時(shí)你可以進(jìn)行正常的系統安裝(比如 安裝Windows)。
對Windows而言,它不知道真假,它反正能夠得到所需要的CPU、內存、和硬盤(pán)就可以正常運行了,一切都和真的機器一樣。對監控程序而言,這個(gè) Windows不是直接和硬件打交道的,一切資源都需要監控程序來(lái)調度和分配,所以這“臺”Windows機器(組合體)就是一臺虛擬的機器,簡(jiǎn)稱(chēng)VM。
這種通過(guò)監控程序把硬件的機器、同操作系統分開(kāi)的過(guò)程,就是虛擬化。
當監控程序創(chuàng )建一個(gè)VM時(shí),它就給VM配置資源的大小,比如2個(gè)1GHz的CPU、2GB內存、和100GB硬盤(pán)。這樣,這個(gè)VM(Windows)就以為自己擁有了雙核的1GHz CPU、2GB內存、和100GB 硬盤(pán)。但這只是Windows所能使用資源的上限。Windows在實(shí)際運行中并不需要消耗那么多,監控程序只是給它按需分配實(shí)際消耗的資源,比如 0.1GHz CPU、0.5GB 內存、和20GB 硬盤(pán)。表現在實(shí)際的硬件消耗上,這20GB的存儲量,就是實(shí)際硬盤(pán)上的那個(gè)20GB大小的封裝文件。
一臺電腦,可以通過(guò)監控程序創(chuàng )建幾個(gè)、幾十個(gè)、甚至上百個(gè)VMs。比如,一臺擁有16GB內存的PC機,你可以創(chuàng )建10個(gè)VMs,給每個(gè)VM分配4GB內存?此瓶偣卜峙涑隽40GB的內存,但PC機的實(shí)際內存只有16GB。
通過(guò)虛擬化,一個(gè)單臺的硬件機器可以同時(shí)運行多個(gè)虛擬的機器(VMs);更重要的是,雖然一個(gè)虛擬的Windows的系統盤(pán)(C盤(pán))上有成千上萬(wàn)個(gè)系統文件,但它表現在硬件的存儲設備(硬盤(pán))上,只是一個(gè)或幾個(gè)打包的大文件。當你把這一個(gè)或幾個(gè)大文件移到別的地方,整個(gè)VM就移走了。
三、配載調配和平衡
如果虛擬化的不只是一臺機器,而是A、B兩臺,并且兩臺機器都共享一個(gè)大的存儲設備(硬盤(pán)陣列、或硬盤(pán)庫),那會(huì )怎樣?
前面說(shuō)了,一個(gè)VM就是一個(gè)(或幾個(gè))大文件。如果這個(gè)大文件放在共享的存儲設備上,A、B兩臺機器上的監控程序都能看到這個(gè)VM。那么,這個(gè)VM既可以在A(yíng)機器上運行、也可以在B機器上運行。所謂在哪臺機器上運行,就是通過(guò)那臺機器上的監控程序,把Windows 啟動(dòng)到其分配的虛擬內存就是了。
假設VM1到VM10 等10個(gè)VMs在A(yíng)上運行,VM11到VM20 等10個(gè)VMs在B上運行,F在要對A進(jìn)行關(guān)機維護,那么它上面的10個(gè)VMs就可以在線(xiàn)移動(dòng)到B上,而且所有10個(gè)Windows都保持不間斷,用戶(hù)根本意識不到變化,因為所移動(dòng)的東西,只不過(guò)是內存中的數據而已。
這個(gè)移動(dòng)不是由A、或B指揮的,而是由裝在另外一個(gè)C機器上的專(zhuān)門(mén)的數據中心管理軟件指揮的。
這個(gè)數據中心管理服務(wù)器C, 可以監控A和B的運行狀態(tài),一旦出現資源緊張,它可以自動(dòng)觸發(fā)在線(xiàn)遷移,把一個(gè)或多個(gè)VM移到對方的機器上運行。當然,這里需要一個(gè)事先設定的閾值標準。
如果是創(chuàng )建新的VM, C可以自動(dòng)決定把新的VM放在哪臺機器上。
這里只是假設A、B兩臺機器。實(shí)際上,C可以管理幾十、幾百、上千臺機器。共享的存儲設備也不止一套,可以是多套(VMs也可以在不同的存儲設備間移動(dòng),只是移動(dòng)的時(shí)間較長(cháng)而已)。
C通過(guò)各機器上的監控程序,間接管理所有的資源。
至此,云的雛形出現了,但還不是云。因為,所有的這些管理和控制,都還是數據中心自己的職責。用戶(hù)還無(wú)法對所需要的資源進(jìn)行自主管理。
四、云的最后形成
數據中心服務(wù)器C可以不止一個(gè),可以有多個(gè)。它們創(chuàng )建和管理的一些VMs也許可以供外界的用戶(hù)訪(fǎng)問(wèn)(比如網(wǎng)站),但用戶(hù)無(wú)法直接管理VMs,更無(wú)法管理C提供的服務(wù)、或資源。
1. 資源池:
現在,再加一個(gè)更上層的服務(wù)器D -- 由它來(lái)管理一個(gè)或多個(gè)C!這個(gè)D,就是云服務(wù)器了:
C把各自管理的資源提交給D,比如,一個(gè)或幾個(gè)C總共向D提供了5000GHz CPU、3TB 內存、3PB 存儲空間。D再把所有資源組成一個(gè)大池子,叫做“資源池”。
這個(gè)池子的大小是可以動(dòng)態(tài)變化的。當C控制的資源增加了、升級了,C可以動(dòng)態(tài)向這個(gè)池子貢獻資源,這個(gè)龐大的資源池也就隨之增長(cháng)得更大。
2. 二次虛擬:
為了便于分配和管理,D把龐大的資源池劃分成多個(gè)子集(小組),這每個(gè)子集就相當一個(gè)虛擬的數據中心(或叫“計算中心”)。
D再從各個(gè)“計算中心”里提取計算資源,創(chuàng )建一個(gè)個(gè)用戶(hù)環(huán)境。每個(gè)用戶(hù)環(huán)境就相當于一個(gè)“機房”,這個(gè)“機房”包括CPU、內存、存儲等資源。
D同時(shí)還給用戶(hù)提供登陸訪(fǎng)問(wèn)的接口。用戶(hù)通常用瀏覽器來(lái)登錄這個(gè)接口。
作為用戶(hù),當你用瀏覽器連接到D提供的訪(fǎng)問(wèn)界面,就可以建立一個(gè)賬戶(hù),并且輸入你的信用卡號。這時(shí),云服務(wù)器D就可以根據你的要求,提供所需要的“機房”。
這個(gè)“機房”的大小,完全根據用戶(hù)的需求而定,比如可以包括50GHz CPU、100GB 內存、和2TB 硬盤(pán)。這些“機房”的資源,都是由云服務(wù)器D從它的那些虛擬的“計算中心”里抓給你的。
通過(guò)層層抽象和虛擬,在每個(gè)“機房”里,你看不到、也不用去關(guān)心每個(gè)計算資源實(shí)際來(lái)自哪里。
3. 用戶(hù)的自主管理:
當你作為用戶(hù)擁有了一個(gè)“機房”,你就可以隨意干你所需要的的事:
建立多臺虛擬的機器(VMs)。云商在你的機房里已經(jīng)提供了很多現成的VM模板,有各種Windows、有各種Linux、等等,你可以隨意拷貝過(guò)來(lái)、定制自己的配置、啟動(dòng),就可以了。當然,你也可以自己從初始安裝。
4. 連接到網(wǎng)絡(luò ):
在本文開(kāi)頭提到, 網(wǎng)絡(luò )也是計算資源。在談及單個(gè)VM的時(shí)候可以暫不談網(wǎng)絡(luò ),但是在連接VM的時(shí)候就需要了。云在給你提供一個(gè)“機房”的時(shí)候,它已經(jīng)就按需求給你提供了虛擬的交換機、路由器、IP地址池等等。這些網(wǎng)絡(luò )資源,同樣也是由數據中心服務(wù)器C提供給云服務(wù)器D的;C則是從所管理的各個(gè)監控程序得到;各監控程序管理著(zhù)實(shí)際的硬件網(wǎng)卡。
從用戶(hù)的角度,各個(gè)“機房”是完全獨立的,彼此是不可見(jiàn)的。你在自己的“機房”里干任何事都干擾不了別人的“機房”,別的“機房”也干擾不了你。
這就是云。下面還要介紹一些分類(lèi)。
這里再回溯一下這個(gè)云“機房”的來(lái)源:
“機房”<-- 云服務(wù)器D管理的虛擬的“計算中心”<-- 數據中心服務(wù)器C提供給D的資源池 <-- C 動(dòng)態(tài)管理A、B兩臺(或多臺)機器所連接的計算資源 <-- A、B兩臺(或多臺)電腦通過(guò)監控程序的虛擬化 <-- PC機
在實(shí)際配置中,PC機一般為企業(yè)級的服務(wù)器所取代,比如聯(lián)想的System X 服務(wù)器。但這些服務(wù)器和PC機沒(méi)有本質(zhì)區別,性能和可靠性不同而已。
五、云的種類(lèi)
這里描述的云的建立過(guò)程和結構,只是一種比較普通和容易理解的形式。由于技術(shù)的不同、實(shí)現方式的不同,各家云的實(shí)現方式和結構會(huì )有很大的不同。但是,一些基本的概念是相同的,其共同的核心要點(diǎn)包括:
一定要有資源池。把分散的計算資源集中到大的資源池里,以方便統一管理和分配。例如前面講的D所管理的資源池。
按需分配、自助服務(wù)。用戶(hù)實(shí)際消耗多少資源,就被分配多少資源;用戶(hù)對自己得到的資源能夠自助管理。例如前面講的“機房”。
靈活的資源變化。隨便撤掉一臺硬件的電腦,其上面的信息和活動(dòng)會(huì )自動(dòng)轉移到別處去;隨便增加一臺電腦,其資源會(huì )隨時(shí)添加到資源池里去。所有這些增減,用戶(hù)根本意識不到。例如前面講的“配載調配和平衡”。
一定要有記賬系統。用戶(hù)消耗了多少資源,如何給這些資源計費,系統有詳盡的信息采集和報告,以便對用戶(hù)收費(即使是免費,也得有詳細的記賬)。例如前面提到用戶(hù)輸入信用卡,就是以記賬為前提。
在組建云的技術(shù)上,說(shuō)到底,就是用軟件產(chǎn)品(如前面提到的C和D,并通過(guò)監控程序)來(lái)管理、組織、和分配經(jīng)過(guò)抽象或虛擬的硬件計算資源。除了個(gè)別企業(yè)用自己的技術(shù)建設、和服務(wù)外,現在常見(jiàn)的云技術(shù)提供者主要有:VMware、微軟、Citrix、和OpenStack等。前兩者是完全的商業(yè)產(chǎn)品;Citrix公司在監控程序上采用的是開(kāi)源的Xen;OpenStack則完全是開(kāi)源免費的,它的監控程序主要采用開(kāi)源的KVM和Xen,也可以是其它的開(kāi)源軟件。
按照服務(wù)的對象和范圍,云可以分為三類(lèi):
私有云:建一個(gè)云,如果只是為了單位(企業(yè)或機構)自己使用,就是私有云。就前面提到的“機房”而言,每個(gè)“機房”只是為本單位的不同部門(mén)、或不同用途而設立的。
公眾云:如果云的服務(wù)對象是社會(huì )上的客戶(hù),就是公眾云。前面提到的“機房”可以是任何社會(huì )上的企業(yè)、單位、或個(gè)人。Amazon公司的AWS是現在世界上最大的公眾云。其它公眾云提供商還有Google、Salesforce、蘋(píng)果的iCloud等等。
混合云:如果一個(gè)云,既是為單位自己使用,也對外開(kāi)放資源服務(wù),就是混合云。有時(shí),把兩個(gè)或多個(gè)私有云的聯(lián)合,也叫混合云。
按照服務(wù)的模式,云又分為如下幾類(lèi):
基礎設施即服務(wù)(IaaS):作為一個(gè)用戶(hù),如果得到了前面的“機房”,那你就擁有了信息系統的基礎設施,你可以安裝多個(gè)服務(wù)器,你可以配置自己的網(wǎng)絡(luò )。由于這個(gè)基礎設施完全是云所提供的服務(wù),所以叫“基礎設施即服務(wù)”。
平臺即服務(wù)(PaaS):你不一定需要“機房”里的所有服務(wù),比如說(shuō)你只需要“機房”里的一個(gè)服務(wù)器作為公司軟件開(kāi)發(fā)的平臺,那么,你得到的這個(gè)平臺也是以服務(wù)的形式出現的。
軟件即服務(wù)(SaaS):你甚至都不需要管理一整個(gè)服務(wù)器,你不關(guān)心什么服務(wù)器、也不關(guān)心服務(wù)器是怎么工作的,你只需要一種軟件的功能。比如,你只想管理公司的客戶(hù)信息(CRM),你就從云商那里得到完備的CRM軟件功能。所以,軟件也是服務(wù)。
其它(XaaS):很多人使用iCloud,實(shí)際上就用iTunes在“機房”里開(kāi)了一個(gè)用戶(hù)帳號,這個(gè)賬號給你提供5GB的免費存儲空間,如果還需要更大一點(diǎn),你就需要輸入信用卡號了。這是“存儲即服務(wù)”。你還可以把PC機放在云上(當然,你需要有一個(gè)小盒子能連到云上,這個(gè)小盒子還能連接顯示器、鍵盤(pán)、鼠標等),這就是“桌面即服務(wù)”!白烂婕捶⻊(wù)”有另外一個(gè)時(shí)髦的叫法,即“云桌面”。。?傊,都是XaaS,你可以試著(zhù)把X 換成任何東西。
你只要理解了前面說(shuō)的“機房”,就可以理解它能提供的各式的服務(wù)(XaaS),大到綜合性的基礎設施,小到單一的云存儲,你就不怕別人說(shuō)一個(gè)什么時(shí)髦的新服務(wù),都只不過(guò)是“機房”里的不同服務(wù)花樣而已!
六、云的誘惑
試想,有了云上的“機房”,你如果是中小企業(yè)的IT部經(jīng)理或CIO,你還會(huì )在建設機房上操心供電、空調、消防、設備故障等等瑣事嗎?你還會(huì )去調研購買(mǎi)何種服務(wù)器設備嗎?你只需要一個(gè)帳號、一個(gè)信用卡,你就可以在云上“機房”里隨意創(chuàng )建任何服務(wù)器,喜歡就啟動(dòng),不喜歡就刪除。你可以安裝所需要的操作系統、配置任何數據庫。你甚至不需要為員工購置PC電腦,有“云桌面”就可以了。
英國政府用不到一年的時(shí)間,迅速建起了統一的“政府云”(簡(jiǎn)稱(chēng)“G云”),目的是把國家各個(gè)政府部門(mén)的IT系統都逐步轉移到G云上去。自2012年正式啟用之日起,政府各個(gè)部門(mén)一律禁止購買(mǎi)硬件的服務(wù)器,所有新增內容都必須是從G云上創(chuàng )建。
不管是企業(yè)、政府、還是個(gè)人,如果想避開(kāi)云,看來(lái)是很困難了。這就是為什么要多少了解一下“到底什么是云”。