天天看點

雲是什麼?【科普】

到底什麼是雲(雲計算)

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

  本文試圖不用任何比喻,直接從普通的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雲上建立。

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