近年來,雲端運算技術的發展一日千里,相關衍生的技術如雨後春筍般逐一出現,其中OpenStack技術備受關注。呼應此一潮流,本文將概略介紹何謂雲端運算,並說明OpenStack的發展背景、架構以及其所提供的各項服務。
雲端運算目前是資通訊界的熱門話題,但其實雲端運算實質的技術早就存在許久,並不是突然出現的,其中像是分散式運算和分散式檔案系統都是在學術界學術研究中應用了很久的技術,這些技術原本都應用在如超級電腦、叢集電腦等價格高不可攀的專屬運算環境,只是近來年個人電腦的運算能力不斷增強,價格持續下探,因此也逐漸跨入該領域。
此外,從500大超級電腦(http://www.top500.org/)這個網站的統計可以看出,很多超級電腦都已經從往常專屬的處理器與網路架構設計變成以個人電腦硬體架構為主的設計,如圖1所示。
|
▲圖1 500大超級電腦所使用的處理器分佈圖。 |
由圖1中可以看到幾乎絕大多數都是以個人電腦處理器為基礎,而智慧型行動裝置興起所引起對於感知、辨識、預測、儲存等運算的龐大需求,更加速了這些技術的普及化。
雲端運算組成元素概觀
市面上很多產品都會以雲端運算為號召,但事實上產品內容並沒有相近的內涵,筆者遍覽了網路上的相關資料,大致歸納出底下幾個雲端運算的技術概要。
1. 分散式運算
分散式運算指的是將對資料的運算分散到許多電腦節點進行平行化的處理,分散式運算代表的開放原始碼計畫就是Apache Hadoop。Apache Hadoop核心主要由兩個部分組成,一個是負責分散式儲存的HDFS(Hadoop Distributed File System),另一個則是處理平行運算部分的Map/Reduce。
Apache Hadoop將資料分離成很多區塊然後藉由HDFS分散到許多節點上,之後Map/Reduce將許多處理的程式碼送到有這些程式碼所需處理資料的節點上,這些程式碼就在這些節點上同時運作平行處理所有資料。
最後結果彙整回來就成為最後處理的結果,Apache Hadoop透過簡化平行處理的過程,運用一般的電腦硬體就可以加速整個資料運算的過程。
2. 分散式儲存
主要是將資料或檔案透過網路拷貝多份副本分散到許多節點上,這是為了避免因為單點故障(single point of failure)而導致系統無法運作或資料損毀,而如果設定的資料拷貝備份分散數是3份,其中有一份資料因為某個節點故障而損毀,有些系統還會自動進行資料備份份數的復原,讓資料分散在節點的備份數目拷貝保持3份。
這些開放原始碼分散式儲存技術也開始都有計畫地實作如自動分層(Auto-tiering)、重複刪除(Dedup)或Warm/Cold Storage等所謂軟體定義儲存的概念。
除了前面提過Apache Hadoop所使用的HDFS,活躍的分散式儲存開放原始碼計畫有下列幾項:
·OpenStack計畫中的Swift:Swift是OpenStack計畫
的物件儲存系統,Swift會將資料分散儲存數個拷貝在網路儲存節點上,資料的存取都是透過HTTP REST API介面。
·Glusterfs:Gluster是Red Hat所收購的技術,Glusterfs透過整合所有節點掛載儲存成為一個網路儲存池,這在Gluterfs中稱為Volume,然後客戶端透過網路掛載這些Volume,便可將資料儲存到這些Volume上,而Glusterfs會根據Volume所設定的儲存策略來決定資料是否要切割成許多區段(Data Striping)進行儲存、要分散儲存到哪些節點、拷貝份數等等。除此之外,Gluster也可設定資料是否要壓縮、加密。未來,Gluterfs也計畫支援如磁碟陣列所應用的Erasure Coding一樣的資料儲存保護技術。
·XtreemFS:XtreemFS是CONTRAIL這個雲端運算發展計畫(Cloud Federation Computing Project)下所發展的分散式檔案系統,而CONTRAIL則是歐盟執行委員會(European Commission,EC)所支持的開發開放原始碼雲端軟體堆疊(Cloud Stack Software)中的一個計畫。XtreemFS同樣是利用拷貝與分散的方式來儲存資料到網路節點上。比較特別的是,XtreemFS有Linux、Windows以及Mac OS/X的客戶端,這三個系統都可以掛載使用。
·MooseFS:MooseFS是由波蘭的Core Technology公司維護的分散式檔案系統,也是利用拷貝與分散的方式來儲存資料到網路節點上,MooseFS未來也將支援如磁碟陣列(RAID)的資料儲存方式來保護資料,版本3.x系列計畫支援RAID 6的方式。
·Ceph:Ceph是一個新興的分散式檔案系統,目前版本是0.87,代號為Giant,Ceph已經在Linux Kernel 2.6.34版中內建到Linux Kernel,Ceph支援物件儲存(Object Storage)和區塊儲存(Block Storage)兩種模式,也支援將物件儲存或區塊儲存掛載成一般檔案系統方式來使用。另外,Ceph本身被設計成可以自我修復(Self-healing)與自我管理(Self-managing),並可支援類似磁碟陣列的Erasure Code資料儲存方式來保障資料的可靠性並節省磁碟空間。