什麼是 “雲”

有很多關於雲的介紹。然而,大都是用比喻的形式來介紹雲的屬性。比較有名的比喻是餐館、和電網。但是,雲畢竟不是餐館、或電網,如果只有這些比喻,仍然不清楚到底什麼是雲。

  本文試圖不用任何比喻,直接從普通的PC電腦入手,逐步遞進,來介紹雲的構成。你只需要具有初中文化,並對CPU、內存、硬盤等計算資源有些基本的概念,就可以了。

  一、傳統的電腦

  當你啓動一臺個人電腦(PC機)時,電腦所做的事,就是把硬盤上的操作系統(OS,本文以微軟的Windows 8爲例,但也可以是Unix、Linux等等)的一些基本的控制程序調入到電腦的內存中去。一旦這個過程完成,這臺電腦就完全由Windows 控制了。你所謂的電腦,其實就是你在上面工作的Windows。

  對Windows而言,它所賴以運行的,只有電腦的處理器(CPU)、內存、和存儲設備(硬盤)這三個要素(或者說三項資源)。電腦還有機箱,但那只是起着封裝、固定、再加供電的作用;電腦還有主板,但那只是起着電腦內各主要部件通信連接的作用。當然,你可能還需要網絡連接, 但那只是一項外在資源,不是Windows本身所必需的。作爲PC機,你還需要鍵盤和顯示器等外部設備來直接在機器上工作。如果是服務器,則不需要鍵盤和顯示器,一切都可以是遠程登錄訪問。

  所以,一臺電腦實質上就是在CPU、內存、和硬盤上運行的Windows。當打開Windows 的任務管理器,你就會發現,CPU和內存大部分是閒置的。特別是CPU,其利用率通常不到10%。Windows在硬盤佔有的空間一般就是幾個GB。 也就是說,一個Windows獨佔了電腦的全部資源,而大部分資源又都是閒置的。

  那麼,有沒有這種可能:不讓一個Windows單獨控制一臺機器,而是在一臺機器上安裝多個操作系統,並且讓它們同時地運行?

  有,最好的方案就是虛擬化 --

  二、虛擬化

  當安裝一臺電腦的時候,你不再是安裝普通的Windows,而是安裝一個資源調度程序,也叫“監控程序” (Hypervisor)。這個監控程序很小。取決於哪個廠家的產品,小的只有100多兆字節, 大的也只有幾個G的字節。 監控程序安裝完成之後,會得到一個工作界面,你通過這個界面設置一個網絡連接(IP地址)。這個界面很簡單,多數情況下你可以通過瀏覽器從別的機器上訪問這個界面。

  前面說了,一個Windows機器,實質上就是一個由CPU、內存、和硬盤組成的一個組合體。通過監控程序的界面,你可以建立多個組合體。每個這種組合體,就是一臺仿真的電腦。當監控程序創建一個仿真的電腦時,它實際上只是創建了兩個文件:一個是關於這個組合體的配置信息(被分配了多少CPU、多大內存、多大的硬盤);另外一個文件,這個仿真電腦的“硬盤”,這個仿真的“硬盤”實際上就是一個封裝的文件(在有些情況下,也可以是幾個文件)。

  當你點擊“開機”來啓動這個仿真的電腦的時候,監控程序開始實際爲它分配CPU和內存、並且啓動它。當然,這“臺”仿真的電腦在第一次啓動的時候,是沒有安裝任何操作系統的“裸機”,那個封裝的文件也是空的,這時你可以進行正常的系統安裝(比如 安裝Windows)。

  對Windows而言,它不知道真假,它反正能夠得到所需要的CPU、內存、和硬盤就可以正常運行了,一切都和真的機器一樣。對監控程序而言,這個 Windows不是直接和硬件打交道的,一切資源都需要監控程序來調度和分配,所以這“臺”Windows機器(組合體)就是一臺虛擬的機器,簡稱VM。

  這種通過監控程序把硬件的機器、同操作系統分開的過程,就是虛擬化。

  當監控程序創建一個VM時,它就給VM配置資源的大小,比如2個1GHz的CPU、2GB內存、和100GB硬盤。這樣,這個VM(Windows)就以爲自己擁有了雙核的1GHz CPU、2GB內存、和100GB 硬盤。但這只是Windows所能使用資源的上限。Windows在實際運行中並不需要消耗那麼多,監控程序只是給它按需分配實際消耗的資源,比如 0.1GHz CPU、0.5GB 內存、和20GB 硬盤。表現在實際的硬件消耗上,這20GB的存儲量,就是實際硬盤上的那個20GB大小的封裝文件。

  一臺電腦,可以通過監控程序創建幾個、幾十個、甚至上百個VMs。比如,一臺擁有16GB內存的PC機,你可以創建10個VMs,給每個VM分配4GB內存。看似總共分配出了40GB的內存,但PC機的實際內存只有16GB。

  通過虛擬化,一個單臺的硬件機器可以同時運行多個虛擬的機器(VMs);更重要的是,雖然一個虛擬的Windows的系統盤(C盤)上有成千上萬個系統文件,但它表現在硬件的存儲設備(硬盤)上,只是一個或幾個打包的大文件。當你把這一個或幾個大文件移到別的地方,整個VM就移走了。

 

 

  三、配載調配和平衡

  如果虛擬化的不只是一臺機器,而是A、B兩臺,並且兩臺機器都共享一個大的存儲設備(硬盤陣列、或硬盤庫),那會怎樣?

  前面說了,一個VM就是一個(或幾個)大文件。如果這個大文件放在共享的存儲設備上,A、B兩臺機器上的監控程序都能看到這個VM。那麼,這個VM既可以在A機器上運行、也可以在B機器上運行。所謂在哪臺機器上運行,就是通過那臺機器上的監控程序,把Windows 啓動到其分配的虛擬內存就是了。

  假設VM1到VM10 等10個VMs在A上運行,VM11到VM20 等10個VMs在B上運行。現在要對A進行關機維護,那麼它上面的10個VMs就可以在線移動到B上,而且所有10個Windows都保持不間斷,用戶根本意識不到變化,因爲所移動的東西,只不過是內存中的數據而已。

  這個移動不是由A、或B指揮的,而是由裝在另外一個C機器上的專門的數據中心管理軟件指揮的。

  這個數據中心管理服務器C, 可以監控A和B的運行狀態,一旦出現資源緊張,它可以自動觸發在線遷移,把一個或多個VM移到對方的機器上運行。當然,這裏需要一個事先設定的閾值標準。

  如果是創建新的VM, C可以自動決定把新的VM放在哪臺機器上。

  這裏只是假設A、B兩臺機器。實際上,C可以管理幾十、幾百、上千臺機器。共享的存儲設備也不止一套,可以是多套(VMs也可以在不同的存儲設備間移動,只是移動的時間較長而已)。

  C通過各機器上的監控程序,間接管理所有的資源。

  至此,雲的雛形出現了,但還不是雲。因爲,所有的這些管理和控制,都還是數據中心自己的職責。用戶還無法對所需要的資源進行自主管理。

  四、雲的最後形成

  數據中心服務器C可以不止一個,可以有多個。它們創建和管理的一些VMs也許可以供外界的用戶訪問(比如網站),但用戶無法直接管理VMs,更無法管理C提供的服務、或資源。

  1. 資源池:

  現在,再加一個更上層的服務器D -- 由它來管理一個或多個C!這個D,就是雲服務器了:

  C把各自管理的資源提交給D,比如,一個或幾個C總共向D提供了5000GHz CPU、3TB 內存、3PB 存儲空間。D再把所有資源組成一個大池子,叫做“資源池”。

  這個池子的大小是可以動態變化的。當C控制的資源增加了、升級了,C可以動態向這個池子貢獻資源,這個龐大的資源池也就隨之增長得更大。

  2. 二次虛擬:

  爲了便於分配和管理,D把龐大的資源池劃分成多個子集(小組),這每個子集就相當一個虛擬的數據中心(或叫“計算中心”)。

  D再從各個“計算中心”裏提取計算資源,創建一個個用戶環境。每個用戶環境就相當於一個“機房”,這個“機房”包括CPU、內存、存儲等資源。

  D同時還給用戶提供登陸訪問的接口。用戶通常用瀏覽器來登錄這個接口。

  作爲用戶,當你用瀏覽器連接到D提供的訪問界面,就可以建立一個賬戶,並且輸入你的信用卡號。這時,雲服務器D就可以根據你的要求,提供所需要的“機房”。

  這個“機房”的大小,完全根據用戶的需求而定,比如可以包括50GHz CPU、100GB 內存、和2TB 硬盤。這些“機房”的資源,都是由雲服務器D從它的那些虛擬的“計算中心”裏抓給你的。

  通過層層抽象和虛擬,在每個“機房”裏,你看不到、也不用去關心每個計算資源實際來自哪裏。

  3. 用戶的自主管理:

  當你作爲用戶擁有了一個“機房”,你就可以隨意幹你所需要的的事:

  建立多臺虛擬的機器(VMs)。雲商在你的機房裏已經提供了很多現成的VM模板,有各種Windows、有各種Linux、等等,你可以隨意拷貝過來、定製自己的配置、啓動,就可以了。當然,你也可以自己從初始安裝。

  4. 連接到網絡:

  在本文開頭提到, 網絡也是計算資源。在談及單個VM的時候可以暫不談網絡,但是在連接VM的時候就需要了。雲在給你提供一個“機房”的時候,它已經就按需求給你提供了虛擬的交換機、路由器、IP地址池等等。這些網絡資源,同樣也是由數據中心服務器C提供給雲服務器D的;C則是從所管理的各個監控程序得到;各監控程序管理着實際的硬件網卡。

  從用戶的角度,各個“機房”是完全獨立的,彼此是不可見的。你在自己的“機房”裏幹任何事都干擾不了別人的“機房”,別的“機房”也干擾不了你。

  這就是雲。下面還要介紹一些分類。

  這裏再回溯一下這個雲“機房”的來源:

  “機房”<-- 雲服務器D管理的虛擬的“計算中心”<-- 數據中心服務器C提供給D的資源池 <-- C 動態管理A、B兩臺(或多臺)機器所連接的計算資源 <-- A、B兩臺(或多臺)電腦通過監控程序的虛擬化 <-- PC機

  在實際配置中,PC機一般爲企業級的服務器所取代,比如聯想的System X 服務器。但這些服務器和PC機沒有本質區別,性能和可靠性不同而已。

  五、雲的種類

  這裏描述的雲的建立過程和結構,只是一種比較普通和容易理解的形式。由於技術的不同、實現方式的不同,各家雲的實現方式和結構會有很大的不同。但是,一些基本的概念是相同的,其共同的核心要點包括:

  一定要有資源池。把分散的計算資源集中到大的資源池裏,以方便統一管理和分配。例如前面講的D所管理的資源池。

  按需分配、自助服務。用戶實際消耗多少資源,就被分配多少資源;用戶對自己得到的資源能夠自助管理。例如前面講的“機房”。

  靈活的資源變化。隨便撤掉一臺硬件的電腦,其上面的信息和活動會自動轉移到別處去;隨便增加一臺電腦,其資源會隨時添加到資源池裏去。所有這些增減,用戶根本意識不到。例如前面講的“配載調配和平衡”。

  一定要有記賬系統。用戶消耗了多少資源,如何給這些資源計費,系統有詳盡的信息採集和報告,以便對用戶收費(即使是免費,也得有詳細的記賬)。例如前面提到用戶輸入信用卡,就是以記賬爲前提。

  在組建雲的技術上,說到底,就是用軟件產品(如前面提到的C和D,並通過監控程序)來管理、組織、和分配經過抽象或虛擬的硬件計算資源。除了個別企業用自己的技術建設、和服務外,現在常見的雲技術提供者主要有:VMware、微軟、Citrix、和OpenStack等。前兩者是完全的商業產品;Citrix公司在監控程序上採用的是開源的Xen;OpenStack則完全是開源免費的,它的監控程序主要採用開源的KVM和Xen,也可以是其它的開源軟件。

  按照服務的對象和範圍,雲可以分爲三類:

  私有云:建一個雲,如果只是爲了單位(企業或機構)自己使用,就是私有云。就前面提到的“機房”而言,每個“機房”只是爲本單位的不同部門、或不同用途而設立的。

  公衆雲:如果雲的服務對象是社會上的客戶,就是公衆雲。前面提到的“機房”可以是任何社會上的企業、單位、或個人。Amazon公司的AWS是現在世界上最大的公衆雲。其它公衆雲提供商還有Google、Salesforce、蘋果的iCloud等等。

  混合雲:如果一個雲,既是爲單位自己使用,也對外開放資源服務,就是混合雲。有時,把兩個或多個私有云的聯合,也叫混合雲。

  按照服務的模式,雲又分爲如下幾類:

  基礎設施即服務(IaaS):作爲一個用戶,如果得到了前面的“機房”,那你就擁有了信息系統的基礎設施,你可以安裝多個服務器,你可以配置自己的網絡。由於這個基礎設施完全是雲所提供的服務,所以叫“基礎設施即服務”。

  平臺即服務(PaaS):你不一定需要“機房”裏的所有服務,比如說你只需要“機房”裏的一個服務器作爲公司軟件開發的平臺,那麼,你得到的這個平臺也是以服務的形式出現的。

  軟件即服務(SaaS):你甚至都不需要管理一整個服務器,你不關心什麼服務器、也不關心服務器是怎麼工作的,你只需要一種軟件的功能。比如,你只想管理公司的客戶信息(CRM),你就從雲商那裏得到完備的CRM軟件功能。所以,軟件也是服務。

  其它(XaaS):很多人使用iCloud,實際上就用iTunes在“機房”裏開了一個用戶帳號,這個賬號給你提供5GB的免費存儲空間,如果還需要更大一點,你就需要輸入信用卡號了。這是“存儲即服務”。你還可以把PC機放在雲上(當然,你需要有一個小盒子能連到雲上,這個小盒子還能連接顯示器、鍵盤、鼠標等),這就是“桌面即服務”。“桌面即服務”有另外一個時髦的叫法,即“雲桌面”。。。總之,都是XaaS,你可以試着把X 換成任何東西。

  你只要理解了前面說的“機房”,就可以理解它能提供的各式的服務(XaaS),大到綜合性的基礎設施,小到單一的雲存儲,你就不怕別人說一個什麼時髦的新服務,都只不過是“機房”裏的不同服務花樣而已!

  六、雲的誘惑

  試想,有了雲上的“機房”,你如果是中小企業的IT部經理或CIO,你還會在建設機房上操心供電、空調、消防、設備故障等等瑣事嗎?你還會去調研購買何種服務器設備嗎?你只需要一個帳號、一個信用卡,你就可以在雲上“機房”裏隨意創建任何服務器,喜歡就啓動,不喜歡就刪除。你可以安裝所需要的操作系統、配置任何數據庫。你甚至不需要爲員工購置PC電腦,有“雲桌面”就可以了。

  英國政府用不到一年的時間,迅速建起了統一的“政府雲”(簡稱“G雲”),目的是把國家各個政府部門的IT系統都逐步轉移到G雲上去。自2012年正式啓用之日起,政府各個部門一律禁止購買硬件的服務器,所有新增內容都必須是從G雲上創建。

  不管是企業、政府、還是個人,如果想避開雲,看來是很困難了。這就是爲什麼要多少了解一下“到底什麼是雲”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章